From e4c80ef7d5a469a8f138a8b64524f37480c38bff Mon Sep 17 00:00:00 2001 From: Flavio Cysne Date: Thu, 10 Sep 2015 09:22:02 -0300 Subject: [PATCH 01/10] Add PhantomJS (GhostDriver) capability Add PhantomJS as an option for Remote WebDriver executor. --- .../jmeter/plugins/webdriver/config/RemoteCapability.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 } From 04fd1f0c1ce15f9adcb748025db176e55935bcaa Mon Sep 17 00:00:00 2001 From: Flavio Cysne Date: Thu, 10 Sep 2015 09:25:44 -0300 Subject: [PATCH 02/10] Add PhantomJS (GhostDriver) capability Add PhantomJS as an option for Remote WebDriver executor. --- .../webdriver/config/RemoteDesiredCapabilitiesFactory.java | 3 +++ 1 file changed, 3 insertions(+) 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"); } From 11b3812ad24078064083fd972cbafdb5b0db8bdc Mon Sep 17 00:00:00 2001 From: Flavio Cysne Date: Thu, 10 Sep 2015 09:45:32 -0300 Subject: [PATCH 03/10] Add tests to PhantomJS (GhostDriver) capability Test PhantomJS (GhostDriver) capability --- .../jmeter/plugins/webdriver/config/RemoteDriverConfigTest.java | 2 ++ 1 file changed, 2 insertions(+) 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 From d8fc127b847cd2c5c1aced6754d15cacdb9912f8 Mon Sep 17 00:00:00 2001 From: Flavio Cysne Date: Thu, 10 Sep 2015 09:48:19 -0300 Subject: [PATCH 04/10] Add tests to PhantomJS (GhostDriver) capability Test PhantomJS (GhostDriver) capability --- .../RemoteDesiredCapabilitiesFactoryTest.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) 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..6e287dcdd 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,34 @@ 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 { DesiredCapabilities capabilities = RemoteDesiredCapabilitiesFactory.build(RemoteCapability.INTERNET_EXPLORER); assertThat(capabilities.getBrowserName(), is("internet explorer")); } + + @Test + public void shouldReturnPhantomJSDriverWhenChromeCapabilityIsPassed() throws Exception { + DesiredCapabilities capabilities = RemoteDesiredCapabilitiesFactory.build(RemoteCapability.PHANTOMJS); + assertThat(capabilities.getCapability(ChromeOptions.CAPABILITY), is(notNullValue())); + assertThat(capabilities.getBrowserName(), is("phantomjs")); + } + @Test(expected = IllegalArgumentException.class) public void shouldThrowAnExceptionWhenAnInvalidCapabilityIsPassed() throws Exception { RemoteDesiredCapabilitiesFactory.build(null); From c0968360b931482242ff494da6cf0969543ee923 Mon Sep 17 00:00:00 2001 From: Flavio Cysne Date: Thu, 10 Sep 2015 10:16:14 -0300 Subject: [PATCH 05/10] Add PhantomJS (GhostDriver) dependencies Add libraries needed for PhantomJS (GhostDriver) Remote WebDriver. --- webdriver/pom.xml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/webdriver/pom.xml b/webdriver/pom.xml index d685fb30d..d28570ab4 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 From f9461180073db881fc8c976d2bfba74dd339b26d Mon Sep 17 00:00:00 2001 From: Flavio Cysne Date: Thu, 10 Sep 2015 10:36:13 -0300 Subject: [PATCH 06/10] Correct test methods names for IE and PhantomJS Test methods for IE and PhantomJS was '...WhenChromeDriverIsPassed' and should be '...WhenDriverIsPassed --- .../config/RemoteDesiredCapabilitiesFactoryTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 6e287dcdd..ea83e1d32 100644 --- a/webdriver/test/com/googlecode/jmeter/plugins/webdriver/config/RemoteDesiredCapabilitiesFactoryTest.java +++ b/webdriver/test/com/googlecode/jmeter/plugins/webdriver/config/RemoteDesiredCapabilitiesFactoryTest.java @@ -26,13 +26,13 @@ public void shouldReturnChromeDriverWhenChromeCapabilityIsPassed() throws Except } @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 shouldReturnPhantomJSDriverWhenChromeCapabilityIsPassed() throws Exception { + public void shouldReturnPhantomJSDriverWhenPhantomJSCapabilityIsPassed() throws Exception { DesiredCapabilities capabilities = RemoteDesiredCapabilitiesFactory.build(RemoteCapability.PHANTOMJS); assertThat(capabilities.getCapability(ChromeOptions.CAPABILITY), is(notNullValue())); assertThat(capabilities.getBrowserName(), is("phantomjs")); From a47725ba73f4f07c2f061909bc7944c5cebf9ab5 Mon Sep 17 00:00:00 2001 From: Flavio Cysne Date: Thu, 10 Sep 2015 10:39:00 -0300 Subject: [PATCH 07/10] Correct PhantomJS test Remove ChromeOptions assertion from PhantomJS test method body. --- .../webdriver/config/RemoteDesiredCapabilitiesFactoryTest.java | 1 - 1 file changed, 1 deletion(-) 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 ea83e1d32..0a0757fe3 100644 --- a/webdriver/test/com/googlecode/jmeter/plugins/webdriver/config/RemoteDesiredCapabilitiesFactoryTest.java +++ b/webdriver/test/com/googlecode/jmeter/plugins/webdriver/config/RemoteDesiredCapabilitiesFactoryTest.java @@ -34,7 +34,6 @@ public void shouldReturnInternetExplorerDriverWhenInternetExplorerCapabilityIsPa @Test public void shouldReturnPhantomJSDriverWhenPhantomJSCapabilityIsPassed() throws Exception { DesiredCapabilities capabilities = RemoteDesiredCapabilitiesFactory.build(RemoteCapability.PHANTOMJS); - assertThat(capabilities.getCapability(ChromeOptions.CAPABILITY), is(notNullValue())); assertThat(capabilities.getBrowserName(), is("phantomjs")); } From 70402697634a874849e0ad7749602c9d93a21453 Mon Sep 17 00:00:00 2001 From: Flavio Cysne Date: Thu, 10 Sep 2015 10:56:32 -0300 Subject: [PATCH 08/10] Add cglib-nodep and phantomjsdriver to lib Include cglib-nodep and phantomjsdriver libraries in lib folder when packaging --- webdriver/pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/webdriver/pom.xml b/webdriver/pom.xml index d28570ab4..9abf34ab7 100644 --- a/webdriver/pom.xml +++ b/webdriver/pom.xml @@ -291,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 From c0b6ba2dc7affaf5d7ad7ffd1709e7602ecaf107 Mon Sep 17 00:00:00 2001 From: Flavio Cysne Date: Thu, 10 Sep 2015 11:51:30 -0300 Subject: [PATCH 09/10] Add basic PhantomJS (GhostDriver) capability to Remote WebDriver Add Changelog for PhantomJS (GhostDriver) capability --- site/dat/wiki/Changelog.wiki | 1 + 1 file changed, 1 insertion(+) 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 From a6d3e07abec97bf2860391a929053a4c68b56d6a Mon Sep 17 00:00:00 2001 From: Flavio Cysne Date: Thu, 10 Sep 2015 12:20:43 -0300 Subject: [PATCH 10/10] Add basic PhantomJS (GhostDriver) capability to Remote WebDriver Describe my contribution to JMeter-Plugins in Contributors wiki's page --- site/dat/wiki/Contributors.wiki | 1 + 1 file changed, 1 insertion(+) 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