From b3b15d607cc63fcf91265115e0a4d2bc64feaf4b Mon Sep 17 00:00:00 2001 From: tfga Date: Fri, 28 Mar 2014 19:09:21 -0300 Subject: [PATCH] Re-introducing . --- .../jasmine/driver/WebDriverFactory.java | 45 ++++++++++++++++++- .../jasmine/mojo/AbstractJasmineMojo.java | 10 +++++ .../github/searls/jasmine/mojo/TestMojo.java | 1 + 3 files changed, 54 insertions(+), 2 deletions(-) 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 c0c5b3179..bcc59f060 100644 --- a/src/main/java/com/github/searls/jasmine/driver/WebDriverFactory.java +++ b/src/main/java/com/github/searls/jasmine/driver/WebDriverFactory.java @@ -8,8 +8,12 @@ import org.openqa.selenium.htmlunit.HtmlUnitDriver; import org.openqa.selenium.remote.BrowserType; import org.openqa.selenium.remote.DesiredCapabilities; +import org.openqa.selenium.remote.RemoteWebDriver; import java.lang.reflect.Constructor; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -20,6 +24,7 @@ public class WebDriverFactory { private boolean debug; private String browserVersion; private String webDriverClassName; + private String remoteWebDriverUrl; private List webDriverCapabilities; public WebDriverFactory() { @@ -38,18 +43,54 @@ public void setWebDriverClassName(String webDriverClassName) { this.webDriverClassName = webDriverClassName; } + public void setRemoteWebDriverUrl(String remoteWebDriverUrl) { + this.remoteWebDriverUrl = remoteWebDriverUrl; + } + public void setWebDriverCapabilities(List webDriverCapabilities) { this.webDriverCapabilities = Objects.firstNonNull(webDriverCapabilities, Collections.emptyList()); } public WebDriver createWebDriver() throws Exception { - if (HtmlUnitDriver.class.getName().equals(webDriverClassName)) { + + if (remoteWebDriverUrl != null) { + return createRemoteWebDriver(); + } + else if (HtmlUnitDriver.class.getName().equals(webDriverClassName)) { return createDefaultWebDriver(); - } else { + } + else { return createCustomWebDriver(); } } + WebDriver createRemoteWebDriver() + { + // If the user set remoteWebDriverUrl, webDriverClassName must be either RemoteWebDriver or null + boolean ok = webDriverClassName == null || RemoteWebDriver.class.getName().equals(webDriverClassName); + if (!ok) + { + throw new RuntimeException("You can't use 'remoteWebDriverUrl' with drivers other than RemoteWebDriver."); + } + + // In case it's null + webDriverClassName = RemoteWebDriver.class.getName(); // do we have to? + + return new RemoteWebDriver(toUrl(remoteWebDriverUrl), getCapabilities()); + } + + URL toUrl(String url) + { + try + { + return new URL(url); + } + catch (MalformedURLException e) + { + throw new RuntimeException(e); + } + } + @SuppressWarnings("unchecked") private Class getWebDriverClass() throws Exception { return (Class) Class.forName(webDriverClassName); diff --git a/src/main/java/com/github/searls/jasmine/mojo/AbstractJasmineMojo.java b/src/main/java/com/github/searls/jasmine/mojo/AbstractJasmineMojo.java index aeaf8e841..8cc22b344 100644 --- a/src/main/java/com/github/searls/jasmine/mojo/AbstractJasmineMojo.java +++ b/src/main/java/com/github/searls/jasmine/mojo/AbstractJasmineMojo.java @@ -51,6 +51,8 @@ public abstract class AbstractJasmineMojo extends AbstractMojo implements Jasmin /** * Determines the Selenium WebDriver class we'll use to execute the tests. See the Selenium documentation for more details. * The plugin uses HtmlUnit by default. + * + * If the remoteWebDriverUrl property is included this property will be ignored. * *

Some valid examples:

*
    @@ -66,6 +68,14 @@ public abstract class AbstractJasmineMojo extends AbstractMojo implements Jasmin */ @Parameter(defaultValue="org.openqa.selenium.htmlunit.HtmlUnitDriver") protected String webDriverClassName; + + /** + * A URL used to create a RemoteWebDriver. If this property is included, webDriverClassName will be ignored. + * + */ + @Parameter + protected String remoteWebDriverUrl; + /** *

    Web driver capabilities used to initialize a DesiredCapabilities instance when creating a web driver.

    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 d7d1c3d47..7dca3adbe 100644 --- a/src/main/java/com/github/searls/jasmine/mojo/TestMojo.java +++ b/src/main/java/com/github/searls/jasmine/mojo/TestMojo.java @@ -95,6 +95,7 @@ private WebDriver createDriver() throws Exception { WebDriverFactory factory = new WebDriverFactory(); factory.setWebDriverCapabilities(webDriverCapabilities); factory.setWebDriverClassName(webDriverClassName); + factory.setRemoteWebDriverUrl(remoteWebDriverUrl); factory.setDebug(debug); factory.setBrowserVersion(browserVersion); return factory.createWebDriver();