diff --git a/functional-test/src/main/java/org/zanata/page/WebDriverFactory.java b/functional-test/src/main/java/org/zanata/page/WebDriverFactory.java index 32b95dde8e..34c3705e02 100644 --- a/functional-test/src/main/java/org/zanata/page/WebDriverFactory.java +++ b/functional-test/src/main/java/org/zanata/page/WebDriverFactory.java @@ -51,28 +51,26 @@ public enum WebDriverFactory { INSTANCE; - private volatile WebDriver driver; + private volatile WebDriver driver = createDriver(); private DriverService driverService; - private TestEventListener eventListener; + private TestEventListener eventListener = new TestEventListener(driver, + System.getProperty("webdriver.screenshot.dir")); public WebDriver getDriver() { - if (driver == null) { - synchronized (this) { - if (driver == null) { - driver = createDriver(); - driver.manage().timeouts() - .implicitlyWait(3, TimeUnit.SECONDS); - Runtime.getRuntime().addShutdownHook(new ShutdownHook()); - } - } - } return driver; } + public WebDriver createDriver() { + WebDriver driver = new EventFiringWebDriver( + new Augmenter().augment(createPlainDriver())); + driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS); + + Runtime.getRuntime().addShutdownHook(new ShutdownHook()); + return driver; + } + + public String getHostUrl() { - if (driver == null) { - getDriver(); - } return PropertiesHolder.getProperty(zanataInstance.value()); } @@ -84,15 +82,11 @@ private WebDriver enableScreenshots(WebDriver webDriver) { return new EventFiringWebDriver(webDriver).register(eventListener); } - public void updateListenerTestName(String testname) { - try { - eventListener.updateTestID(testname); - } catch (NullPointerException npe) { - System.out.print("Driver not yet set"); - } + public void updateListenerTestName(String testName) { + eventListener.updateTestID(testName); } - private WebDriver createDriver() { + private WebDriver createPlainDriver() { String driverType = PropertiesHolder.getProperty(webDriverType.value(), "htmlUnit"); if (driverType.equalsIgnoreCase(chrome.value())) { @@ -133,8 +127,7 @@ private WebDriver configureChromeDriver() { WebDriver webDriver = new RemoteWebDriver(driverService.getUrl(), capabilities); - if (System.getProperty("webdriver.screenshot.dir") - != null) { + if (System.getProperty("webdriver.screenshot.dir") != null) { webDriver = enableScreenshots(webDriver); } return webDriver; diff --git a/functional-test/src/main/java/org/zanata/util/TestEventListener.java b/functional-test/src/main/java/org/zanata/util/TestEventListener.java index 7f733a64ba..a133483577 100644 --- a/functional-test/src/main/java/org/zanata/util/TestEventListener.java +++ b/functional-test/src/main/java/org/zanata/util/TestEventListener.java @@ -14,6 +14,7 @@ import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriverException; import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.events.AbstractWebDriverEventListener; import org.openqa.selenium.support.events.WebDriverEventListener; /** @@ -21,7 +22,7 @@ * href="mailto:djansen@redhat.com">djansen@redhat.com */ @Slf4j -public class TestEventListener implements WebDriverEventListener { +public class TestEventListener extends AbstractWebDriverEventListener { private WebDriver driver; private String targetDir; @@ -110,51 +111,4 @@ public void onException(Throwable throwable, WebDriver driver) { createScreenshot("_exc"); } - /* - * Unused interface functions - */ - @Override - public void afterChangeValueOf(WebElement element, WebDriver driver) { - } - - @Override - public void beforeNavigateTo(String url, WebDriver driver) { - } - - @Override - public void beforeNavigateBack(WebDriver driver) { - } - - @Override - public void afterNavigateBack(WebDriver driver) { - } - - @Override - public void beforeNavigateForward(WebDriver driver) { - } - - @Override - public void afterNavigateForward(WebDriver driver) { - } - - @Override - public void beforeFindBy(By by, WebElement element, WebDriver driver) { - } - - @Override - public void afterFindBy(By by, WebElement element, WebDriver driver) { - } - - @Override - public void beforeChangeValueOf(WebElement element, WebDriver driver) { - } - - @Override - public void beforeScript(String script, WebDriver driver) { - } - - @Override - public void afterScript(String script, WebDriver driver) { - } - }