package com.tyndalehouse.step.e2e.framework;
import static org.junit.Assert.fail;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import org.junit.After;
import org.junit.AfterClass;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.tyndalehouse.step.e2e.tests.StepTestSuite;
public class WebDriverTest {
private static final Logger LOGGER = LoggerFactory.getLogger(WebDriverTest.class);
// private static WebDriver inOneWindow = null;
private static WebDriver driver;
public static WebDriver createDriver() {
try {
// created driver
final RemoteWebDriver remoteWebDriver = new RemoteWebDriver(StepTestSuite.getService().getUrl(),
DesiredCapabilities.chrome());
remoteWebDriver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
return remoteWebDriver;
} catch (final IOException e) {
fail("Fails the test because driver was not created successfully");
throw new IllegalStateException("This will never occur");
}
}
@After
public void quitDriver() {
if (StepTestSuite.RUN_IN_ONE_WINDOW) {
return;
}
this.getDriver().quit();
}
@AfterClass
public static void tearDown() {
try {
if (StepTestSuite.isServiceCreateByTest()) {
StepTestSuite.getService().stop();
}
} catch (final IOException e) {
LOGGER.error("Failed to tear down test", e);
}
}
public static WebDriver getDriver() {
// if (inOneWindow != null) {
// return inOneWindow;
// }
if (driver == null) {
driver = createDriver();
}
return driver;
}
// protected void setDriver(final WebDriver driver) {
// this.driver = driver;
// }
// /**
// * @param inOneWindow the inOneWindow to set
// */
// public static void setInOneWindow(final WebDriver inOneWindow) {
//// WebDriverTest.inOneWindow = inOneWindow;
// }
// /**
// * @return the inOneWindow
// */
// public static WebDriver getInOneWindow() {
// return inOneWindow;
// }
}