From cc396dd5fda790516281f95b7b5ebf50f12175ce Mon Sep 17 00:00:00 2001 From: Kyle Lieber Date: Wed, 16 Sep 2020 01:46:28 -0500 Subject: [PATCH] feat: support RemoteWebDriver Example usage: ```xml com.github.searls jasmine-maven-plugin ${jasmine-maven-plugin.version} test ${accessibleHostname} org.openqa.selenium.remote.RemoteWebDriver browserName chrome goog:chromeOptions true ``` closes #234 closes #235 closes #349 --- .../jasmine/config/WebDriverConfiguration.java | 2 ++ .../searls/jasmine/driver/WebDriverFactory.java | 6 ++++++ .../com/github/searls/jasmine/mojo/TestMojo.java | 13 ++++++++++++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/github/searls/jasmine/config/WebDriverConfiguration.java b/src/main/java/com/github/searls/jasmine/config/WebDriverConfiguration.java index 4873bf71a..9e94aec07 100644 --- a/src/main/java/com/github/searls/jasmine/config/WebDriverConfiguration.java +++ b/src/main/java/com/github/searls/jasmine/config/WebDriverConfiguration.java @@ -22,10 +22,12 @@ import com.github.searls.jasmine.mojo.Capability; import org.immutables.value.Value; +import java.net.URL; import java.util.List; @Value.Immutable public interface WebDriverConfiguration { String getWebDriverClassName(); List getWebDriverCapabilities(); + URL getRemoteWebDriverUrl(); } diff --git a/src/main/java/com/github/searls/jasmine/driver/WebDriverFactory.java b/src/main/java/com/github/searls/jasmine/driver/WebDriverFactory.java index cb79560f6..0827e4462 100644 --- a/src/main/java/com/github/searls/jasmine/driver/WebDriverFactory.java +++ b/src/main/java/com/github/searls/jasmine/driver/WebDriverFactory.java @@ -30,6 +30,7 @@ import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.remote.DesiredCapabilities; +import org.openqa.selenium.remote.RemoteWebDriver; import javax.inject.Named; import java.lang.reflect.Constructor; @@ -47,6 +48,7 @@ public class WebDriverFactory { private static final Map> SUPPORTED_DRIVERS = ImmutableMap.>builder() .put(ChromeDriver.class.getName(), WebDriverFactory::createChromeDriver) + .put(RemoteWebDriver.class.getName(), WebDriverFactory::createRemoteWebDriver) .build(); public WebDriver createWebDriver(WebDriverConfiguration config) { @@ -157,4 +159,8 @@ private static WebDriver createChromeDriver(WebDriverConfiguration config) { config )); } + + private static WebDriver createRemoteWebDriver(WebDriverConfiguration config) { + return new RemoteWebDriver(config.getRemoteWebDriverUrl(), getCapabilities(config.getWebDriverCapabilities())); + } } diff --git a/src/main/java/com/github/searls/jasmine/mojo/TestMojo.java b/src/main/java/com/github/searls/jasmine/mojo/TestMojo.java index d337dc1ff..7ae0fcc27 100644 --- a/src/main/java/com/github/searls/jasmine/mojo/TestMojo.java +++ b/src/main/java/com/github/searls/jasmine/mojo/TestMojo.java @@ -46,6 +46,7 @@ import org.slf4j.LoggerFactory; import javax.inject.Inject; +import java.net.URL; import java.util.Collections; import java.util.List; @@ -67,13 +68,14 @@ public class TestMojo extends AbstractJasmineMojo { *
  • org.openqa.selenium.htmlunit.HtmlUnitDriver
  • *
  • org.openqa.selenium.firefox.FirefoxDriver
  • *
  • org.openqa.selenium.ie.InternetExplorerDriver
  • + *
  • org.openqa.selenium.remote.RemoteWebDriver
  • * *
    * See the webDriverCapabilities property for configuring driver specific properties. * * @since 1.1.0 */ - @Parameter(defaultValue = "org.openqa.selenium.chrome.ChromeDriver") + @Parameter(property = "jasmine.webDriverClassName", defaultValue = "org.openqa.selenium.chrome.ChromeDriver") private String webDriverClassName = ChromeDriver.class.getName(); /** @@ -109,6 +111,14 @@ public class TestMojo extends AbstractJasmineMojo { @Parameter private List webDriverCapabilities = Collections.emptyList(); + /** + *

    The URL to your RemoteWebDriver server. This is only relevant if you are using the RemoteWebDriver.

    + * + * @since 3.0 + */ + @Parameter(property = "jasmine.remoteWebDriverUrl", defaultValue = "http://localhost:4444/wd/hub") + private URL remoteWebDriverUrl = null; + /** *

    Determines the format that jasmine:test will print to console.

    *

    Valid options:

    @@ -265,6 +275,7 @@ private WebDriverConfiguration getWebDriverConfiguration() { return ImmutableWebDriverConfiguration.builder() .webDriverCapabilities(webDriverCapabilities) .webDriverClassName(webDriverClassName) + .remoteWebDriverUrl(remoteWebDriverUrl) .build(); }