/* * Copyright 2013 akquinet tech@spree GmbH * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package de.akquinet.devops.test.ui.generic; import org.junit.AfterClass; import org.junit.BeforeClass; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxProfile; import com.gitblit.GitBlitServer; import de.akquinet.devops.GitblitRunnable; /** * This abstract class implements the setUpClass and tearDownClass for * selenium-based UITests. They require a running gitblit server instance and a * webdriver instance, which are managed by the setUpClass and tearDownClass * method. Write a separate test class derived from this abstract class for each * scenario consisting of one or more test cases, which can share the same * server instance. * * @author saheba * */ public abstract class AbstractUITest { private static Thread serverThread; private static WebDriver driver; private static final int HTTP_PORT = 8080, HTTPS_PORT = 8443, SHUTDOWN_PORT = 8081; private static final String GITBLIT_PROPERTIES_PATH = "test-ui-gitblit.properties", USERS_PROPERTIES_PATH = "test-ui-users.conf"; /** * starts a gitblit server instance in a separate thread before test cases * of concrete, non-abstract child-classes are executed */ @BeforeClass public static void setUpClass() { Runnable gitblitRunnable = new GitblitRunnable(HTTP_PORT, HTTPS_PORT, SHUTDOWN_PORT, GITBLIT_PROPERTIES_PATH, USERS_PROPERTIES_PATH); serverThread = new Thread(gitblitRunnable); serverThread.start(); FirefoxProfile firefoxProfile = new FirefoxProfile(); firefoxProfile.setPreference("startup.homepage_welcome_url", "https://www.google.de"); firefoxProfile.setPreference("browser.download.folderList", 2); firefoxProfile.setPreference( "browser.download.manager.showWhenStarting", false); String downloadDir = System.getProperty("java.io.tmpdir"); firefoxProfile.setPreference("browser.download.dir", downloadDir); firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk", "text/csv,text/plain,application/zip,application/pdf"); firefoxProfile.setPreference("browser.helperApps.alwaysAsk.force", false); System.out.println("Saving all attachments to: " + downloadDir); driver = new FirefoxDriver(firefoxProfile); } /** * stops the gitblit server instance running in a separate thread after test * cases of concrete, non-abstract child-classes have been executed */ @AfterClass public static void tearDownClass() throws InterruptedException { driver.close(); // Stop Gitblit GitBlitServer.main("--stop", "--shutdownPort", "" + SHUTDOWN_PORT); // Wait a few seconds for it to be running completely including thread // destruction Thread.sleep(1000); } public static WebDriver getDriver() { return AbstractUITest.driver; } }