Package de.akquinet.devops.test.ui.generic

Source Code of de.akquinet.devops.test.ui.generic.AbstractUITest

/*
* 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;
  }
}
TOP

Related Classes of de.akquinet.devops.test.ui.generic.AbstractUITest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.