From cc90e433904697c37405a37c8af5ce1983516505 Mon Sep 17 00:00:00 2001 From: Matous Jobanek Date: Tue, 13 Jun 2017 13:36:51 +0200 Subject: [PATCH] feat(tests) Improved logic of getting properties to simplify running tests from IDE --- .../process/SeleniumServerTestCase.java | 13 +--- .../example/DoubleDroneInjectionTestCase.java | 5 +- .../ReusableRemoteWebDriverTestCase.java | 5 +- .../example/TripleDroneInjectionTestCase.java | 5 +- .../factory/ChromeHeadlessDriverTest.java | 5 +- .../MockBrowserCapabilitiesRegistry.java | 22 ++----- ...tRemoteWebDriverFactorySessionStoring.java | 20 ++---- .../reusable/TestReusableRemoteWebDriver.java | 6 +- .../ftest/TestCapabilitiesSerialization.java | 4 +- .../reusable/ftest/TestReusingCookies.java | 5 +- .../TestReusingRemoteWebDriverSession.java | 4 +- .../ftest/TestReusingVariousDrivers.java | 4 +- .../ftest/TestReusingWebDriverSession.java | 4 +- .../webdriver/utils/ArqDescPropertyUtil.java | 66 +++++++++++++++++++ .../src/test/resources/arquillian.xml | 12 ++-- 15 files changed, 110 insertions(+), 70 deletions(-) create mode 100644 drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/utils/ArqDescPropertyUtil.java diff --git a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/binary/process/SeleniumServerTestCase.java b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/binary/process/SeleniumServerTestCase.java index 7245555b..76812855 100644 --- a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/binary/process/SeleniumServerTestCase.java +++ b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/binary/process/SeleniumServerTestCase.java @@ -3,12 +3,9 @@ import java.io.IOException; import java.net.URL; import java.util.List; -import java.util.Map; import java.util.regex.Pattern; -import org.jboss.arquillian.config.descriptor.api.ArquillianDescriptor; -import org.jboss.arquillian.config.descriptor.api.ExtensionDef; import org.jboss.arquillian.drone.webdriver.binary.handler.SeleniumServerBinaryHandler; -import org.jboss.arquillian.drone.webdriver.factory.remote.reusable.MockBrowserCapabilitiesRegistry; +import org.jboss.arquillian.drone.webdriver.utils.ArqDescPropertyUtil; import org.jboss.arquillian.drone.webdriver.utils.Validate; import org.jboss.arquillian.test.spi.event.suite.AfterSuite; import org.jboss.arquillian.test.test.AbstractTestTestBase; @@ -38,7 +35,7 @@ protected void addExtensions(List> extensions) { public void initialise() throws Exception { capabilities = new DesiredCapabilities(); // use selenium server version defined in arquillian.xml - String selSerVersion = getSeleniumServerVersion(MockBrowserCapabilitiesRegistry.getArquillianDescriptor()); + String selSerVersion = ArqDescPropertyUtil.getSeleniumServerVersionProperty(); if (!Validate.empty(selSerVersion)) { capabilities .setCapability(SeleniumServerBinaryHandler.SELENIUM_SERVER_VERSION_PROPERTY, selSerVersion); @@ -90,12 +87,6 @@ public void stopSeleniumServer() { fire(new AfterSuite()); } - private String getSeleniumServerVersion(ArquillianDescriptor arquillian) { - ExtensionDef webdriver = arquillian.extension("webdriver"); - Map props = webdriver.getExtensionProperties(); - return props.get("seleniumServerVersion"); - } - private void verifyLogContainsRegex(String regex) throws IOException { final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE); diff --git a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/example/DoubleDroneInjectionTestCase.java b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/example/DoubleDroneInjectionTestCase.java index 58823e07..71e016bc 100644 --- a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/example/DoubleDroneInjectionTestCase.java +++ b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/example/DoubleDroneInjectionTestCase.java @@ -19,12 +19,13 @@ import org.jboss.arquillian.drone.api.annotation.Drone; import org.jboss.arquillian.junit.Arquillian; import org.junit.Assert; -import org.junit.Assume; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.openqa.selenium.WebDriver; +import static org.jboss.arquillian.drone.webdriver.utils.ArqDescPropertyUtil.assumeBrowserNotEqual; + /** * Test for ARQ-1543. Checks that everything works fine if user misconfigures Drone by injecting same instance twice in a * single @@ -45,7 +46,7 @@ public class DoubleDroneInjectionTestCase { @BeforeClass public static void skipIfEdgeBrowser() { - Assume.assumeFalse(System.getProperty("browser").equals("edge")); + assumeBrowserNotEqual("edge"); } @Test diff --git a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/example/ReusableRemoteWebDriverTestCase.java b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/example/ReusableRemoteWebDriverTestCase.java index 56939c66..8ce75e5b 100644 --- a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/example/ReusableRemoteWebDriverTestCase.java +++ b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/example/ReusableRemoteWebDriverTestCase.java @@ -22,7 +22,6 @@ import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.junit.InSequence; import org.junit.Assert; -import org.junit.Assume; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -31,6 +30,8 @@ import org.openqa.selenium.remote.SessionId; import qualifier.Reusable; +import static org.jboss.arquillian.drone.webdriver.utils.ArqDescPropertyUtil.assumeBrowserNotEqual; + /** * Tests Arquillian Selenium extension against Weld Login example. *

@@ -50,7 +51,7 @@ public class ReusableRemoteWebDriverTestCase { @BeforeClass public static void skipIfEdgeBrowser() { - Assume.assumeFalse(System.getProperty("browser").equals("edge")); + assumeBrowserNotEqual("edge"); } private void checkIfWebdriverHubIsRunning() { diff --git a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/example/TripleDroneInjectionTestCase.java b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/example/TripleDroneInjectionTestCase.java index d708bb95..c1c7be1a 100644 --- a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/example/TripleDroneInjectionTestCase.java +++ b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/example/TripleDroneInjectionTestCase.java @@ -19,12 +19,13 @@ import org.jboss.arquillian.drone.api.annotation.Drone; import org.jboss.arquillian.junit.Arquillian; import org.junit.Assert; -import org.junit.Assume; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.openqa.selenium.WebDriver; +import static org.jboss.arquillian.drone.webdriver.utils.ArqDescPropertyUtil.assumeBrowserNotEqual; + /** * Test for ARQ-1543. Checks that everything works fine if user misconfigures Drone by injecting same instance twice in a * single @@ -40,7 +41,7 @@ public class TripleDroneInjectionTestCase extends DoubleDroneInjectionTestCase { @BeforeClass public static void skipIfEdgeBrowser() { - Assume.assumeFalse(System.getProperty("browser").equals("edge")); + assumeBrowserNotEqual("edge"); } @Test diff --git a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/ChromeHeadlessDriverTest.java b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/ChromeHeadlessDriverTest.java index 36c971fe..ee700332 100644 --- a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/ChromeHeadlessDriverTest.java +++ b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/ChromeHeadlessDriverTest.java @@ -4,7 +4,6 @@ import java.net.URL; import org.jboss.arquillian.drone.webdriver.configuration.WebDriverConfiguration; import org.junit.Assert; -import org.junit.Assume; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -13,6 +12,7 @@ import org.openqa.selenium.WebDriver; import org.openqa.selenium.remote.DesiredCapabilities; +import static org.jboss.arquillian.drone.webdriver.utils.ArqDescPropertyUtil.assumeBrowserEqual; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) @@ -20,8 +20,7 @@ public class ChromeHeadlessDriverTest { @BeforeClass public static void executeOnlyIfChromeHeadlessBrowser() { - String browser = System.getProperty("browser").toLowerCase(); - Assume.assumeTrue(browser.equals("chromeheadless")); + assumeBrowserEqual("chromeheadless"); } @Test diff --git a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/MockBrowserCapabilitiesRegistry.java b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/MockBrowserCapabilitiesRegistry.java index f5dea497..0659868c 100644 --- a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/MockBrowserCapabilitiesRegistry.java +++ b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/MockBrowserCapabilitiesRegistry.java @@ -1,18 +1,17 @@ package org.jboss.arquillian.drone.webdriver.factory.remote.reusable; -import java.net.URLClassLoader; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Map; -import org.jboss.arquillian.config.descriptor.api.ArquillianDescriptor; -import org.jboss.arquillian.config.descriptor.api.ExtensionDef; import org.jboss.arquillian.drone.webdriver.factory.BrowserCapabilitiesList; import org.jboss.arquillian.drone.webdriver.spi.BrowserCapabilities; import org.jboss.arquillian.drone.webdriver.spi.BrowserCapabilitiesRegistry; -import org.jboss.shrinkwrap.descriptor.api.Descriptors; import org.junit.Assert; +import static org.jboss.arquillian.drone.webdriver.utils.ArqDescPropertyUtil.WEBDRIVER_REUSABLE_EXT; +import static org.jboss.arquillian.drone.webdriver.utils.ArqDescPropertyUtil.getBrowserProperty; + public class MockBrowserCapabilitiesRegistry implements BrowserCapabilitiesRegistry { private final Map cache; @@ -20,7 +19,7 @@ public class MockBrowserCapabilitiesRegistry implements BrowserCapabilitiesRegis public MockBrowserCapabilitiesRegistry() { this.cache = new HashMap(); - String browser = getBrowser(getArquillianDescriptor()).toLowerCase(); + String browser = getBrowserProperty(WEBDRIVER_REUSABLE_EXT); if ("phantomjs".equals(browser)) { registerBrowserCapabilitiesFor(browser, new BrowserCapabilitiesList.PhantomJS()); } else if ("chrome".equals(browser)) { @@ -44,11 +43,6 @@ public MockBrowserCapabilitiesRegistry() { } } - public static ArquillianDescriptor getArquillianDescriptor() { - return Descriptors.importAs(ArquillianDescriptor.class).fromStream( - URLClassLoader.getSystemResourceAsStream("arquillian.xml"), true); - } - public static MockBrowserCapabilitiesRegistry createSingletonRegistry() { MockBrowserCapabilitiesRegistry registry = new MockBrowserCapabilitiesRegistry(); @@ -79,12 +73,4 @@ public Collection getAllBrowserCapabilities() { return Collections.unmodifiableCollection(cache.values()); } - - private String getBrowser(ArquillianDescriptor arquillian) { - ExtensionDef webdriver = arquillian.extension("webdriver-reusable"); - Assert.assertNotNull("webdriver-reusable extension should be defined in arquillian.xml", webdriver); - Map props = webdriver.getExtensionProperties(); - - return props.get("browser"); - } } diff --git a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/TestRemoteWebDriverFactorySessionStoring.java b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/TestRemoteWebDriverFactorySessionStoring.java index 7f9e4e4f..17b81fe9 100644 --- a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/TestRemoteWebDriverFactorySessionStoring.java +++ b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/TestRemoteWebDriverFactorySessionStoring.java @@ -19,9 +19,6 @@ import java.net.MalformedURLException; import java.net.URL; import java.util.List; -import java.util.Map; -import org.jboss.arquillian.config.descriptor.api.ArquillianDescriptor; -import org.jboss.arquillian.config.descriptor.api.ExtensionDef; import org.jboss.arquillian.core.api.Event; import org.jboss.arquillian.core.api.Injector; import org.jboss.arquillian.core.api.Instance; @@ -34,11 +31,11 @@ import org.jboss.arquillian.drone.webdriver.configuration.WebDriverConfiguration; import org.jboss.arquillian.drone.webdriver.factory.ChromeDriverFactory; import org.jboss.arquillian.drone.webdriver.factory.RemoteWebDriverFactory; +import org.jboss.arquillian.drone.webdriver.utils.ArqDescPropertyUtil; import org.jboss.arquillian.test.spi.event.suite.AfterSuite; import org.jboss.arquillian.test.spi.event.suite.BeforeSuite; import org.jboss.arquillian.test.test.AbstractTestTestBase; import org.junit.After; -import org.junit.Assume; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; @@ -49,6 +46,9 @@ import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; +import static org.jboss.arquillian.drone.webdriver.utils.ArqDescPropertyUtil.WEBDRIVER_REUSABLE_EXT; +import static org.jboss.arquillian.drone.webdriver.utils.ArqDescPropertyUtil.assumeBrowserNotEqual; +import static org.jboss.arquillian.drone.webdriver.utils.ArqDescPropertyUtil.getBrowserProperty; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.mockito.Mockito.when; @@ -77,7 +77,7 @@ public class TestRemoteWebDriverFactorySessionStoring extends AbstractTestTestBa @BeforeClass public static void skipIfEdgeBrowser() { - Assume.assumeFalse(System.getProperty("browser", "phantomjs").equals("edge")); + assumeBrowserNotEqual("edge"); } @Override @@ -108,7 +108,7 @@ public void setupMocks() { initializationParameter = new InitializationParameter(hubUrl, desiredCapabilities); - String browser = System.getProperty("browser").toLowerCase(); + String browser = getBrowserProperty(WEBDRIVER_REUSABLE_EXT); if (browser.equals("chromeheadless")) { when(configuration.getBrowser()).thenReturn("chromeheadless"); new ChromeDriverFactory().setChromeOptions(configuration, (DesiredCapabilities) desiredCapabilities); @@ -128,7 +128,7 @@ private void runSeleniumServer() { String seleniumServerArgs = System.getProperty("seleniumServerArgs"); // use selenium server version defined in arquillian.xml - String selSerVersion = getSeleniumServerVersion(MockBrowserCapabilitiesRegistry.getArquillianDescriptor()); + String selSerVersion = ArqDescPropertyUtil.getSeleniumServerVersionProperty(WEBDRIVER_REUSABLE_EXT); if (!Validate.empty(selSerVersion)) { selServerCaps .setCapability(SeleniumServerBinaryHandler.SELENIUM_SERVER_VERSION_PROPERTY, selSerVersion); @@ -142,12 +142,6 @@ private void runSeleniumServer() { } } - private String getSeleniumServerVersion(ArquillianDescriptor arquillian) { - ExtensionDef webdriver = arquillian.extension("webdriver-reusable"); - Map props = webdriver.getExtensionProperties(); - return props.get("seleniumServerVersion"); - } - @After public void stopServer() { fire(new AfterSuite()); diff --git a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/TestReusableRemoteWebDriver.java b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/TestReusableRemoteWebDriver.java index fe1ba6af..cfda7ba3 100644 --- a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/TestReusableRemoteWebDriver.java +++ b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/TestReusableRemoteWebDriver.java @@ -26,7 +26,6 @@ import org.jboss.arquillian.drone.webdriver.augmentation.AugmentingEnhancer; import org.jboss.arquillian.drone.webdriver.factory.remote.reusable.ftest.AbstractInBrowserTest; import org.jboss.arquillian.junit.Arquillian; -import org.junit.Assume; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -35,6 +34,7 @@ import org.openqa.selenium.remote.SessionId; import qualifier.Reusable; +import static org.jboss.arquillian.drone.webdriver.utils.ArqDescPropertyUtil.assumeBrowserNotEqual; import static org.junit.Assert.fail; @RunWith(Arquillian.class) @@ -42,8 +42,8 @@ public class TestReusableRemoteWebDriver extends AbstractInBrowserTest { @BeforeClass public static void skipIfEdgeOrHtmlUnitBrowser() { - final String browser = System.getProperty("browser"); - Assume.assumeFalse(browser.equals("edge") || browser.equals("htmlunit") || browser.equals("htmlUnit")); + assumeBrowserNotEqual("edge"); + assumeBrowserNotEqual("htmlunit"); } @Test diff --git a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/ftest/TestCapabilitiesSerialization.java b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/ftest/TestCapabilitiesSerialization.java index 7518b072..f61a1c8d 100644 --- a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/ftest/TestCapabilitiesSerialization.java +++ b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/ftest/TestCapabilitiesSerialization.java @@ -19,7 +19,6 @@ import java.io.Serializable; import org.jboss.arquillian.drone.api.annotation.Drone; import org.jboss.arquillian.junit.Arquillian; -import org.junit.Assume; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -27,6 +26,7 @@ import org.openqa.selenium.remote.RemoteWebDriver; import qualifier.Reusable; +import static org.jboss.arquillian.drone.webdriver.utils.ArqDescPropertyUtil.assumeBrowserNotEqual; import static org.junit.Assert.assertTrue; /** @@ -41,7 +41,7 @@ public class TestCapabilitiesSerialization extends AbstractInBrowserTest { @BeforeClass public static void skipIfEdgeBrowser() { - Assume.assumeFalse(System.getProperty("browser").equals("edge")); + assumeBrowserNotEqual("edge"); } @Test diff --git a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/ftest/TestReusingCookies.java b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/ftest/TestReusingCookies.java index d8fc4c94..a6d70e9d 100644 --- a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/ftest/TestReusingCookies.java +++ b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/ftest/TestReusingCookies.java @@ -21,7 +21,6 @@ import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.junit.InSequence; import org.junit.Assert; -import org.junit.Assume; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -30,6 +29,8 @@ import qualifier.Reusable; import qualifier.ReuseCookies; +import static org.jboss.arquillian.drone.webdriver.utils.ArqDescPropertyUtil.assumeBrowserNotEqual; + /** * @author Karel Piwko */ @@ -38,7 +39,7 @@ public class TestReusingCookies extends AbstractInBrowserTest { @BeforeClass public static void skipIfEdgeBrowser() { - Assume.assumeFalse(System.getProperty("browser").equals("edge")); + assumeBrowserNotEqual("edge"); } @Test diff --git a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/ftest/TestReusingRemoteWebDriverSession.java b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/ftest/TestReusingRemoteWebDriverSession.java index 75116cd7..2504ce19 100644 --- a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/ftest/TestReusingRemoteWebDriverSession.java +++ b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/ftest/TestReusingRemoteWebDriverSession.java @@ -18,7 +18,6 @@ import org.jboss.arquillian.drone.api.annotation.Drone; import org.jboss.arquillian.junit.Arquillian; -import org.junit.Assume; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -27,6 +26,7 @@ import org.openqa.selenium.remote.SessionId; import qualifier.Reusable; +import static org.jboss.arquillian.drone.webdriver.utils.ArqDescPropertyUtil.assumeBrowserNotEqual; import static org.junit.Assert.assertEquals; @RunWith(Arquillian.class) @@ -36,7 +36,7 @@ public class TestReusingRemoteWebDriverSession extends AbstractInBrowserTest { @BeforeClass public static void skipIfEdgeBrowser() { - Assume.assumeFalse(System.getProperty("browser").equals("edge")); + assumeBrowserNotEqual("edge"); } @Test diff --git a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/ftest/TestReusingVariousDrivers.java b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/ftest/TestReusingVariousDrivers.java index 2e4a774a..74c4596a 100644 --- a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/ftest/TestReusingVariousDrivers.java +++ b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/ftest/TestReusingVariousDrivers.java @@ -18,7 +18,6 @@ import org.jboss.arquillian.drone.api.annotation.Drone; import org.jboss.arquillian.junit.Arquillian; -import org.junit.Assume; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -27,6 +26,7 @@ import org.openqa.selenium.remote.SessionId; import qualifier.Reusable; +import static org.jboss.arquillian.drone.webdriver.utils.ArqDescPropertyUtil.assumeBrowserNotEqual; import static org.junit.Assert.assertEquals; @RunWith(Arquillian.class) @@ -36,7 +36,7 @@ public class TestReusingVariousDrivers extends AbstractInBrowserTest { @BeforeClass public static void skipIfEdgeBrowser() { - Assume.assumeFalse(System.getProperty("browser").equals("edge")); + assumeBrowserNotEqual("edge"); } @Test diff --git a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/ftest/TestReusingWebDriverSession.java b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/ftest/TestReusingWebDriverSession.java index 80a059a6..d1ba8e51 100644 --- a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/ftest/TestReusingWebDriverSession.java +++ b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/factory/remote/reusable/ftest/TestReusingWebDriverSession.java @@ -18,7 +18,6 @@ import org.jboss.arquillian.drone.api.annotation.Drone; import org.jboss.arquillian.junit.Arquillian; -import org.junit.Assume; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -27,6 +26,7 @@ import org.openqa.selenium.remote.SessionId; import qualifier.Reusable; +import static org.jboss.arquillian.drone.webdriver.utils.ArqDescPropertyUtil.assumeBrowserNotEqual; import static org.junit.Assert.assertEquals; @RunWith(Arquillian.class) @@ -36,7 +36,7 @@ public class TestReusingWebDriverSession extends AbstractInBrowserTest { @BeforeClass public static void skipIfEdgeBrowser() { - Assume.assumeFalse(System.getProperty("browser").equals("edge")); + assumeBrowserNotEqual("edge"); } @Test diff --git a/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/utils/ArqDescPropertyUtil.java b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/utils/ArqDescPropertyUtil.java new file mode 100644 index 00000000..6f382a5d --- /dev/null +++ b/drone-webdriver/src/test/java/org/jboss/arquillian/drone/webdriver/utils/ArqDescPropertyUtil.java @@ -0,0 +1,66 @@ +package org.jboss.arquillian.drone.webdriver.utils; + +import java.net.URLClassLoader; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.jboss.arquillian.config.descriptor.api.ArquillianDescriptor; +import org.jboss.arquillian.config.descriptor.api.ExtensionDef; +import org.jboss.arquillian.drone.webdriver.configuration.WebDriverConfiguration; +import org.jboss.shrinkwrap.descriptor.api.Descriptors; +import org.junit.Assert; +import org.junit.Assume; + +public class ArqDescPropertyUtil { + + public static final String WEBDRIVER_REUSABLE_EXT = "webdriver-reusable"; + public static final String WEBDRIVER_REUSABLECOOKIES_EXT = "webdriver-reusecookies"; + public static final String WEBDRIVER_EXT = "webdriver"; + private static final Logger log = Logger.getLogger(ArqDescPropertyUtil.class.getName()); + + public static String getBrowserProperty() { + return getBrowserProperty(WEBDRIVER_EXT); + } + + public static String getSeleniumServerVersionProperty() { + return getSeleniumServerVersionProperty(WEBDRIVER_EXT); + } + + public static String getSeleniumServerVersionProperty(String extensionName) { + return getProperty("seleniumServerVersion", extensionName, "3.4.0"); + } + + public static String getBrowserProperty(String extensionName) { + return getProperty("browser", extensionName, WebDriverConfiguration.DEFAULT_BROWSER_CAPABILITIES).toLowerCase(); + } + + public static String getProperty(String property, String extensionName, String defaultValue) { + String value = System.getProperty(property); + + if (Validate.empty(value)) { + ExtensionDef webdriver = getArquillianDescriptor().extension(extensionName); + Assert.assertNotNull(" extension should be defined in arquillian.xml", webdriver); + value = webdriver.getExtensionProperties().get(property); + + if (Validate.empty(value) || value.startsWith("${")) { + log.log(Level.INFO, "Property \"{0}\" was not specified, using default value of {1}", + new Object[] {property, defaultValue}); + value = defaultValue; + } + } + + return value; + } + + public static void assumeBrowserNotEqual(String browserName) { + Assume.assumeFalse(getBrowserProperty().equals(browserName)); + } + + public static void assumeBrowserEqual(String browserName) { + Assume.assumeTrue(getBrowserProperty().equals(browserName)); + } + + public static ArquillianDescriptor getArquillianDescriptor() { + return Descriptors.importAs(ArquillianDescriptor.class).fromStream( + URLClassLoader.getSystemResourceAsStream("arquillian.xml"), true); + } +} diff --git a/drone-webdriver/src/test/resources/arquillian.xml b/drone-webdriver/src/test/resources/arquillian.xml index fcc8a29c..52151351 100644 --- a/drone-webdriver/src/test/resources/arquillian.xml +++ b/drone-webdriver/src/test/resources/arquillian.xml @@ -4,10 +4,10 @@ - ${browser} + ${browser:htmlunit} Timeout=300; throwExceptionOnScriptError=false - ${version.selenium} + ${version.selenium:3.4.0} 1300x500 @@ -22,9 +22,9 @@ - ${browser} + ${browser:htmlunit} - ${version.selenium} + ${version.selenium:3.4.0} http://localhost:4444/wd/hub/ true @@ -41,9 +41,9 @@ - ${browser} + ${browser:htmlunit} - ${version.selenium} + ${version.selenium:3.4.0} http://localhost:4444/wd/hub/ true