diff --git a/site/dat/wiki/Changelog.wiki b/site/dat/wiki/Changelog.wiki
index cbcba4077..258d73989 100644
--- a/site/dat/wiki/Changelog.wiki
+++ b/site/dat/wiki/Changelog.wiki
@@ -7,6 +7,7 @@
* fix scheduling bug in TST for sub-rps load
* fixed permission-denied-error on unix systems in LoadosophiaUploader-reporter when no storeDir is set
* bump up Selenium dependency to 2.47.0
+ * add basic PhantomJS (GhostDriver) capability to Remote WebDriver
== 1.3.0 June 30, 2015==
* Java 7 or higher required
diff --git a/site/dat/wiki/Contributors.wiki b/site/dat/wiki/Contributors.wiki
index f59b73b1c..3b045b922 100644
--- a/site/dat/wiki/Contributors.wiki
+++ b/site/dat/wiki/Contributors.wiki
@@ -18,3 +18,4 @@ Everyone who provided pull request or other contribution, deserves mentioning on
* Jorge S. Cruz - added [RemoteDriverConfig] for connecting to a Selenium Grid
* Roy de Kleijn - added NTLM and Internet Explorer support
* Erik Ostermueller - added support for changing line & legend colors.
+ * Flávio Cysne - added PhantomJS option to [RemoteCapability] enabling connection to a PhantomJS node in a Selenium Grid
diff --git a/webdriver/pom.xml b/webdriver/pom.xml
index d685fb30d..9abf34ab7 100644
--- a/webdriver/pom.xml
+++ b/webdriver/pom.xml
@@ -127,6 +127,28 @@
-->
+
+
+ com.github.detro
+ phantomjsdriver
+ 1.2.0
+
+
+ org.seleniumhq.selenium
+ selenium-java
+
+
+ org.seleniumhq.selenium
+ selenium-remote-driver
+
+
+
+
+ cglib
+ cglib-nodep
+ 2.1_3
+
+
de.sciss
jsyntaxpane
@@ -269,7 +291,8 @@
true
selenium-support,selenium-api,selenium-remote-driver,selenium-ie-driver,selenium-firefox-driver,selenium-chrome-driver,selenium-htmlunit-driver,gson,
- guava,json,commons-exec,jsyntaxpane,htmlunit,htmlunit-core-js,nekohtml,cssparser,jetty-websocket,sac,httpclient,httpmime,httpcore
+ guava,json,commons-exec,jsyntaxpane,htmlunit,htmlunit-core-js,nekohtml,cssparser,jetty-websocket,sac,httpclient,httpmime,httpcore,
+ cglib-nodep,phantomjsdriver
diff --git a/webdriver/src/com/googlecode/jmeter/plugins/webdriver/config/RemoteCapability.java b/webdriver/src/com/googlecode/jmeter/plugins/webdriver/config/RemoteCapability.java
index 50a4b3d89..9b0c8558a 100644
--- a/webdriver/src/com/googlecode/jmeter/plugins/webdriver/config/RemoteCapability.java
+++ b/webdriver/src/com/googlecode/jmeter/plugins/webdriver/config/RemoteCapability.java
@@ -3,5 +3,6 @@
public enum RemoteCapability {
CHROME,
FIREFOX,
- INTERNET_EXPLORER
+ INTERNET_EXPLORER,
+ PHANTOMJS
}
diff --git a/webdriver/src/com/googlecode/jmeter/plugins/webdriver/config/RemoteDesiredCapabilitiesFactory.java b/webdriver/src/com/googlecode/jmeter/plugins/webdriver/config/RemoteDesiredCapabilitiesFactory.java
index 859a46727..416ad129b 100644
--- a/webdriver/src/com/googlecode/jmeter/plugins/webdriver/config/RemoteDesiredCapabilitiesFactory.java
+++ b/webdriver/src/com/googlecode/jmeter/plugins/webdriver/config/RemoteDesiredCapabilitiesFactory.java
@@ -22,6 +22,9 @@ public static DesiredCapabilities build(RemoteCapability capability){
} else if (RemoteCapability.INTERNET_EXPLORER.equals(capability)){
desiredCapabilities = DesiredCapabilities.internetExplorer();
return desiredCapabilities;
+ } else if (RemoteCapability.PHANTOMJS.equals(capability)){
+ desiredCapabilities = DesiredCapabilities.phantomjs();
+ return desiredCapabilities;
}
throw new IllegalArgumentException("No such capability");
}
diff --git a/webdriver/test/com/googlecode/jmeter/plugins/webdriver/config/RemoteDesiredCapabilitiesFactoryTest.java b/webdriver/test/com/googlecode/jmeter/plugins/webdriver/config/RemoteDesiredCapabilitiesFactoryTest.java
index 04bb49666..0a0757fe3 100644
--- a/webdriver/test/com/googlecode/jmeter/plugins/webdriver/config/RemoteDesiredCapabilitiesFactoryTest.java
+++ b/webdriver/test/com/googlecode/jmeter/plugins/webdriver/config/RemoteDesiredCapabilitiesFactoryTest.java
@@ -10,26 +10,33 @@
import static org.hamcrest.CoreMatchers.notNullValue;
public class RemoteDesiredCapabilitiesFactoryTest {
-
+
@Test
public void shouldReturnFirefoxDriverWhenFirefoxCapabilityIsPassed() throws Exception {
DesiredCapabilities capabilities = RemoteDesiredCapabilitiesFactory.build(RemoteCapability.FIREFOX);
assertThat(capabilities.getCapability(FirefoxDriver.PROFILE), is(notNullValue()));
assertThat(capabilities.getBrowserName(), is("firefox"));
}
-
+
@Test
public void shouldReturnChromeDriverWhenChromeCapabilityIsPassed() throws Exception {
DesiredCapabilities capabilities = RemoteDesiredCapabilitiesFactory.build(RemoteCapability.CHROME);
assertThat(capabilities.getCapability(ChromeOptions.CAPABILITY), is(notNullValue()));
assertThat(capabilities.getBrowserName(), is("chrome"));
}
-
+
@Test
- public void shouldReturnInternetExplorerDriverWhenChromeCapabilityIsPassed() throws Exception {
+ public void shouldReturnInternetExplorerDriverWhenInternetExplorerCapabilityIsPassed() throws Exception {
DesiredCapabilities capabilities = RemoteDesiredCapabilitiesFactory.build(RemoteCapability.INTERNET_EXPLORER);
assertThat(capabilities.getBrowserName(), is("internet explorer"));
}
+
+ @Test
+ public void shouldReturnPhantomJSDriverWhenPhantomJSCapabilityIsPassed() throws Exception {
+ DesiredCapabilities capabilities = RemoteDesiredCapabilitiesFactory.build(RemoteCapability.PHANTOMJS);
+ assertThat(capabilities.getBrowserName(), is("phantomjs"));
+ }
+
@Test(expected = IllegalArgumentException.class)
public void shouldThrowAnExceptionWhenAnInvalidCapabilityIsPassed() throws Exception {
RemoteDesiredCapabilitiesFactory.build(null);
diff --git a/webdriver/test/com/googlecode/jmeter/plugins/webdriver/config/RemoteDriverConfigTest.java b/webdriver/test/com/googlecode/jmeter/plugins/webdriver/config/RemoteDriverConfigTest.java
index 00d8b2596..06815a17d 100644
--- a/webdriver/test/com/googlecode/jmeter/plugins/webdriver/config/RemoteDriverConfigTest.java
+++ b/webdriver/test/com/googlecode/jmeter/plugins/webdriver/config/RemoteDriverConfigTest.java
@@ -60,6 +60,8 @@ public void shouldSetTheCapability() throws Exception {
assertThat(config.getCapability(), is(RemoteCapability.FIREFOX));
config.setCapability(RemoteCapability.INTERNET_EXPLORER);
assertThat(config.getCapability(), is(RemoteCapability.INTERNET_EXPLORER));
+ config.setCapability(RemoteCapability.PHANTOMJS);
+ assertThat(config.getCapability(), is(RemoteCapability.PHANTOMJS));
}
@Test