blob: bb7b3da2b215a3c5f3f7437b516f248762b41bd2 [file] [log] [blame]
/*
* 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;
}
}