From 8eb4981c48ca4fb264daae8a0f077dde95804bbb Mon Sep 17 00:00:00 2001 From: Carlos Lindo Date: Thu, 30 Mar 2017 14:32:21 +0100 Subject: [PATCH 1/4] Added grid implementation. Changed selenium driver version to 3.3.1 --- pom.xml | 2 +- .../test/config/UiTestProperties.java | 12 ++++++ .../test/config/spring/UiTestConfig.java | 2 + .../test/config/webdriver/SharedDriver.java | 37 +++++++++++++++++++ .../resources/props-for-ui-tests.properties | 5 ++- 5 files changed, 56 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 681c3c8..de49d59 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,7 @@ 4.2.5.RELEASE 3.3.0 1.4.4 - 2.52.0 + 3.3.1 2.7.2 4.5.2 2.19.1 diff --git a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/UiTestProperties.java b/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/UiTestProperties.java index 8e9c327..b571c5d 100644 --- a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/UiTestProperties.java +++ b/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/UiTestProperties.java @@ -17,4 +17,16 @@ public String getApplicationBaseUrl() { public int getSeleniumWaitTimeOutSeconds() { return environment.getProperty("ui.acceptance.test.selenium.wait.timeout.seconds", Integer.class, 10); } + + public boolean isGridEnabled(){ + return Boolean.valueOf(environment.getProperty("ui.acceptance.test.selenium.grid.enabled")); + } + + public String getDefaultBrowser(){ + return environment.getProperty("ui.acceptance.test.selenium.default.browser"); + } + + public String getDefaultHubUrl(){ + return environment.getProperty("ui.acceptance.test.selenium.default.hub.url"); + } } diff --git a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/spring/UiTestConfig.java b/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/spring/UiTestConfig.java index b2d7d0d..ae518d0 100644 --- a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/spring/UiTestConfig.java +++ b/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/spring/UiTestConfig.java @@ -19,6 +19,8 @@ public TestWorld testWorld() { @Bean public SharedDriver driver() { + if (properties().isGridEnabled()) + return new SharedDriver(properties().getDefaultBrowser(), properties().getDefaultHubUrl()); return new SharedDriver(); } diff --git a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/webdriver/SharedDriver.java b/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/webdriver/SharedDriver.java index 9db0193..411f525 100644 --- a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/webdriver/SharedDriver.java +++ b/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/webdriver/SharedDriver.java @@ -2,8 +2,13 @@ import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; +import org.openqa.selenium.remote.DesiredCapabilities; +import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.support.events.EventFiringWebDriver; +import java.net.MalformedURLException; +import java.net.URL; + /** * Creates a browser session which can be used to interact with a web UI. * This class allows for a single session to be re-used across multiple @@ -27,6 +32,32 @@ private static void quitGlobalInstance() { } } + private static WebDriver getRealDriver(String defaultBrowser,String defaultHubUrl) { + if (REAL_DRIVER == null) { + switch (defaultBrowser){ + case "firefox": + try { + DesiredCapabilities capability = DesiredCapabilities.firefox(); + REAL_DRIVER = new RemoteWebDriver(new URL(defaultHubUrl), capability); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + break; + case "chrome": + try { + DesiredCapabilities capability = DesiredCapabilities.chrome(); + REAL_DRIVER = new RemoteWebDriver(new URL(defaultHubUrl), capability); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + break; + default:REAL_DRIVER = new FirefoxDriver(); + break; + } + } + return REAL_DRIVER; + } + private static WebDriver getRealDriver() { if (REAL_DRIVER == null) { REAL_DRIVER = new FirefoxDriver(); @@ -34,6 +65,12 @@ private static WebDriver getRealDriver() { return REAL_DRIVER; } + public SharedDriver(String defaultBrowser,String defaultHubUrl) { + super(getRealDriver(defaultBrowser,defaultHubUrl)); + Runtime.getRuntime().addShutdownHook(CLOSE_THREAD); + } + + public SharedDriver() { super(getRealDriver()); Runtime.getRuntime().addShutdownHook(CLOSE_THREAD); diff --git a/ui-acceptance-tests/src/test/resources/props-for-ui-tests.properties b/ui-acceptance-tests/src/test/resources/props-for-ui-tests.properties index 59aa2e2..f8a077a 100644 --- a/ui-acceptance-tests/src/test/resources/props-for-ui-tests.properties +++ b/ui-acceptance-tests/src/test/resources/props-for-ui-tests.properties @@ -1,4 +1,7 @@ # Properties can be overwritten at runtime by passing in maven arguments using -D # e.g. mvn clean install -Dui.acceptance.test.application.base.url=https:/www.google.com ui.acceptance.test.application.base.url=https://www.google.co.uk -ui.acceptance.test.selenium.wait.timeout.seconds=10 \ No newline at end of file +ui.acceptance.test.selenium.wait.timeout.seconds=10 +ui.acceptance.test.selenium.grid.enabled=false +ui.acceptance.test.selenium.default.browser=firefox +ui.acceptance.test.selenium.default.hub.url=http://127.0.0.1:4444/wd/hub \ No newline at end of file From 36c31b9727bc63516570b6114084d8b3142f4b86 Mon Sep 17 00:00:00 2001 From: Carlos Lindo Date: Thu, 30 Mar 2017 14:36:13 +0100 Subject: [PATCH 2/4] Changed selenium driver version to 2.52.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index de49d59..681c3c8 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,7 @@ 4.2.5.RELEASE 3.3.0 1.4.4 - 3.3.1 + 2.52.0 2.7.2 4.5.2 2.19.1 From 947936e1e79bf049e2ff9755e0f7d20a05bd00f9 Mon Sep 17 00:00:00 2001 From: Carlos Lindo Date: Thu, 30 Mar 2017 15:03:57 +0100 Subject: [PATCH 3/4] Fixed the tests --- .../acceptance/test/config/TestWorld.java | 2 +- .../test/config/UiTestProperties.java | 2 +- .../test/config/spring/UiTestConfig.java | 10 +++++----- .../test/config/webdriver/SharedDriver.java | 2 +- .../test/config/webdriver/WaitConditions.java | 2 +- .../test/config/webdriver/WebDriverHooks.java | 4 ++-- .../interaction/objects/AbstractPageObject.java | 17 +++++++++++++---- .../objects/GoogleSearchPageObject.java | 2 +- .../definitions/AbstractStepDefinition.java | 6 +++--- .../step/definitions/GoogleSearchStepDefs.java | 4 ++-- 10 files changed, 30 insertions(+), 21 deletions(-) rename ui-acceptance-tests/src/test/java/com/opencredo/test/{security => ui}/acceptance/test/config/TestWorld.java (66%) rename ui-acceptance-tests/src/test/java/com/opencredo/test/{security => ui}/acceptance/test/config/UiTestProperties.java (94%) rename ui-acceptance-tests/src/test/java/com/opencredo/test/{security => ui}/acceptance/test/config/spring/UiTestConfig.java (71%) rename ui-acceptance-tests/src/test/java/com/opencredo/test/{security => ui}/acceptance/test/config/webdriver/SharedDriver.java (97%) rename ui-acceptance-tests/src/test/java/com/opencredo/test/{security => ui}/acceptance/test/config/webdriver/WaitConditions.java (94%) rename ui-acceptance-tests/src/test/java/com/opencredo/test/{security => ui}/acceptance/test/config/webdriver/WebDriverHooks.java (90%) rename ui-acceptance-tests/src/test/java/com/opencredo/test/{security => ui}/acceptance/test/interaction/objects/AbstractPageObject.java (78%) rename ui-acceptance-tests/src/test/java/com/opencredo/test/{security => ui}/acceptance/test/interaction/objects/GoogleSearchPageObject.java (89%) rename ui-acceptance-tests/src/test/java/com/opencredo/test/{security => ui}/acceptance/test/step/definitions/AbstractStepDefinition.java (78%) rename ui-acceptance-tests/src/test/java/com/opencredo/test/{security => ui}/acceptance/test/step/definitions/GoogleSearchStepDefs.java (86%) diff --git a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/TestWorld.java b/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/config/TestWorld.java similarity index 66% rename from ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/TestWorld.java rename to ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/config/TestWorld.java index 72669cd..c972faa 100644 --- a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/TestWorld.java +++ b/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/config/TestWorld.java @@ -1,4 +1,4 @@ -package com.opencredo.test.security.acceptance.test.config; +package com.opencredo.test.ui.acceptance.test.config; import java.util.HashMap; diff --git a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/UiTestProperties.java b/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/config/UiTestProperties.java similarity index 94% rename from ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/UiTestProperties.java rename to ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/config/UiTestProperties.java index b571c5d..e284e2c 100644 --- a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/UiTestProperties.java +++ b/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/config/UiTestProperties.java @@ -1,4 +1,4 @@ -package com.opencredo.test.security.acceptance.test.config; +package com.opencredo.test.ui.acceptance.test.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; diff --git a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/spring/UiTestConfig.java b/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/config/spring/UiTestConfig.java similarity index 71% rename from ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/spring/UiTestConfig.java rename to ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/config/spring/UiTestConfig.java index ae518d0..530fbdb 100644 --- a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/spring/UiTestConfig.java +++ b/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/config/spring/UiTestConfig.java @@ -1,9 +1,9 @@ -package com.opencredo.test.security.acceptance.test.config.spring; +package com.opencredo.test.ui.acceptance.test.config.spring; -import com.opencredo.test.security.acceptance.test.config.TestWorld; -import com.opencredo.test.security.acceptance.test.config.UiTestProperties; -import com.opencredo.test.security.acceptance.test.interaction.objects.GoogleSearchPageObject; -import com.opencredo.test.security.acceptance.test.config.webdriver.SharedDriver; +import com.opencredo.test.ui.acceptance.test.interaction.objects.GoogleSearchPageObject; +import com.opencredo.test.ui.acceptance.test.config.TestWorld; +import com.opencredo.test.ui.acceptance.test.config.UiTestProperties; +import com.opencredo.test.ui.acceptance.test.config.webdriver.SharedDriver; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; diff --git a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/webdriver/SharedDriver.java b/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/config/webdriver/SharedDriver.java similarity index 97% rename from ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/webdriver/SharedDriver.java rename to ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/config/webdriver/SharedDriver.java index 411f525..796fefb 100644 --- a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/webdriver/SharedDriver.java +++ b/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/config/webdriver/SharedDriver.java @@ -1,4 +1,4 @@ -package com.opencredo.test.security.acceptance.test.config.webdriver; +package com.opencredo.test.ui.acceptance.test.config.webdriver; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; diff --git a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/webdriver/WaitConditions.java b/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/config/webdriver/WaitConditions.java similarity index 94% rename from ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/webdriver/WaitConditions.java rename to ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/config/webdriver/WaitConditions.java index 50c7881..fb66106 100644 --- a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/webdriver/WaitConditions.java +++ b/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/config/webdriver/WaitConditions.java @@ -1,4 +1,4 @@ -package com.opencredo.test.security.acceptance.test.config.webdriver; +package com.opencredo.test.ui.acceptance.test.config.webdriver; import org.openqa.selenium.WebDriver; import org.openqa.selenium.support.ui.ExpectedCondition; diff --git a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/webdriver/WebDriverHooks.java b/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/config/webdriver/WebDriverHooks.java similarity index 90% rename from ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/webdriver/WebDriverHooks.java rename to ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/config/webdriver/WebDriverHooks.java index ad53a52..9add234 100644 --- a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/config/webdriver/WebDriverHooks.java +++ b/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/config/webdriver/WebDriverHooks.java @@ -1,6 +1,6 @@ -package com.opencredo.test.security.acceptance.test.config.webdriver; +package com.opencredo.test.ui.acceptance.test.config.webdriver; -import com.opencredo.test.security.acceptance.test.config.spring.UiTestConfig; +import com.opencredo.test.ui.acceptance.test.config.spring.UiTestConfig; import cucumber.api.Scenario; import cucumber.api.java.After; import cucumber.api.java.Before; diff --git a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/interaction/objects/AbstractPageObject.java b/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/interaction/objects/AbstractPageObject.java similarity index 78% rename from ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/interaction/objects/AbstractPageObject.java rename to ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/interaction/objects/AbstractPageObject.java index fabf870..e8e2fb2 100644 --- a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/interaction/objects/AbstractPageObject.java +++ b/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/interaction/objects/AbstractPageObject.java @@ -1,8 +1,17 @@ -package com.opencredo.test.security.acceptance.test.interaction.objects; +package com.opencredo.test.ui.acceptance.test.interaction.objects; -import com.opencredo.test.security.acceptance.test.config.webdriver.WaitConditions; -import org.openqa.selenium.*; -import org.openqa.selenium.support.ui.*; +import com.opencredo.test.ui.acceptance.test.config.webdriver.WaitConditions; +import org.openqa.selenium.By; +import org.openqa.selenium.NoSuchElementException; +import org.openqa.selenium.StaleElementReferenceException; +import org.openqa.selenium.TimeoutException; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.ExpectedCondition; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.Select; +import org.openqa.selenium.support.ui.Wait; +import org.openqa.selenium.support.ui.WebDriverWait; /** * Reusable methods for all page objects diff --git a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/interaction/objects/GoogleSearchPageObject.java b/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/interaction/objects/GoogleSearchPageObject.java similarity index 89% rename from ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/interaction/objects/GoogleSearchPageObject.java rename to ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/interaction/objects/GoogleSearchPageObject.java index 4a05a87..76946b6 100644 --- a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/interaction/objects/GoogleSearchPageObject.java +++ b/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/interaction/objects/GoogleSearchPageObject.java @@ -1,4 +1,4 @@ -package com.opencredo.test.security.acceptance.test.interaction.objects; +package com.opencredo.test.ui.acceptance.test.interaction.objects; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; diff --git a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/step/definitions/AbstractStepDefinition.java b/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/step/definitions/AbstractStepDefinition.java similarity index 78% rename from ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/step/definitions/AbstractStepDefinition.java rename to ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/step/definitions/AbstractStepDefinition.java index d30ab85..09b8a55 100644 --- a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/step/definitions/AbstractStepDefinition.java +++ b/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/step/definitions/AbstractStepDefinition.java @@ -1,7 +1,7 @@ -package com.opencredo.test.security.acceptance.test.step.definitions; +package com.opencredo.test.ui.acceptance.test.step.definitions; -import com.opencredo.test.security.acceptance.test.config.TestWorld; -import com.opencredo.test.security.acceptance.test.config.spring.UiTestConfig; +import com.opencredo.test.ui.acceptance.test.config.TestWorld; +import com.opencredo.test.ui.acceptance.test.config.spring.UiTestConfig; import cucumber.api.Scenario; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; diff --git a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/step/definitions/GoogleSearchStepDefs.java b/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/step/definitions/GoogleSearchStepDefs.java similarity index 86% rename from ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/step/definitions/GoogleSearchStepDefs.java rename to ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/step/definitions/GoogleSearchStepDefs.java index 5696d98..d6557c4 100644 --- a/ui-acceptance-tests/src/test/java/com/opencredo/test/security/acceptance/test/step/definitions/GoogleSearchStepDefs.java +++ b/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/step/definitions/GoogleSearchStepDefs.java @@ -1,6 +1,6 @@ -package com.opencredo.test.security.acceptance.test.step.definitions; +package com.opencredo.test.ui.acceptance.test.step.definitions; -import com.opencredo.test.security.acceptance.test.interaction.objects.GoogleSearchPageObject; +import com.opencredo.test.ui.acceptance.test.interaction.objects.GoogleSearchPageObject; import cucumber.api.Scenario; import cucumber.api.java.Before; import cucumber.api.java.en.Given; From 7c4e4e64fa35e2c6d28771b8b56041b815698aaf Mon Sep 17 00:00:00 2001 From: Carlos Lindo Date: Thu, 30 Mar 2017 16:38:14 +0100 Subject: [PATCH 4/4] Changed selenium version to 2.52.0 --- .../ui/acceptance/test/config/webdriver/SharedDriver.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/config/webdriver/SharedDriver.java b/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/config/webdriver/SharedDriver.java index 796fefb..f8640f6 100644 --- a/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/config/webdriver/SharedDriver.java +++ b/ui-acceptance-tests/src/test/java/com/opencredo/test/ui/acceptance/test/config/webdriver/SharedDriver.java @@ -23,6 +23,7 @@ public void run() { quitGlobalInstance(); } }; + public WebDriver driver; private static void quitGlobalInstance() { WebDriver driver = REAL_DRIVER; @@ -37,8 +38,8 @@ private static WebDriver getRealDriver(String defaultBrowser,String defaultHubUr switch (defaultBrowser){ case "firefox": try { - DesiredCapabilities capability = DesiredCapabilities.firefox(); - REAL_DRIVER = new RemoteWebDriver(new URL(defaultHubUrl), capability); + DesiredCapabilities capabilities = DesiredCapabilities.firefox(); + REAL_DRIVER = new RemoteWebDriver(new URL(defaultHubUrl), capabilities); } catch (MalformedURLException e) { e.printStackTrace(); }