From c52fb40f89a9da7279820030b55ac9c6876d6271 Mon Sep 17 00:00:00 2001 From: joshgrant Date: Thu, 26 Apr 2018 16:08:34 -0400 Subject: [PATCH 01/10] poc for removing DesiredCaps --- .../java/com/yourcompany/Tests/W3CTest.java | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 src/test/java/com/yourcompany/Tests/W3CTest.java diff --git a/src/test/java/com/yourcompany/Tests/W3CTest.java b/src/test/java/com/yourcompany/Tests/W3CTest.java new file mode 100644 index 0000000..5f52258 --- /dev/null +++ b/src/test/java/com/yourcompany/Tests/W3CTest.java @@ -0,0 +1,85 @@ +package com.yourcompany.Tests; + +import com.saucelabs.junit.Parallelized; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized.Parameter; +import org.junit.runners.Parameterized.Parameters; +import org.openqa.selenium.By; +import org.openqa.selenium.MutableCapabilities; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.edge.EdgeOptions; +import org.openqa.selenium.firefox.FirefoxOptions; +import org.openqa.selenium.remote.RemoteWebDriver; +import org.openqa.selenium.safari.SafariOptions; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; + +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Arrays; +import java.util.Collection; + +@RunWith(Parallelized.class) +public class W3CTest { + + private WebDriver driver; + + @Parameters + public static Collection data() { + return Arrays.asList(new Object[][] { + {new ChromeOptions()}, + {new FirefoxOptions()}, + {new EdgeOptions()}, + {new SafariOptions()} + }); + } + + @Parameter + public MutableCapabilities options; + + @Before + public void setup() throws MalformedURLException { + String username = System.getenv("SAUCE_USERNAME"); + String accesskey = System.getenv("SAUCE_ACCESS_KEY"); + + // condition particular capabilities as needed + if (options instanceof SafariOptions){ + options.setCapability("platform", "OS X 10.12"); + } else { + options.setCapability("platform", "Windows 10"); + } + + options.setCapability("version", "latest"); + options.setCapability("seleniumVersion", "3.11.0"); + + //MutableCapabilities sauceCaps = new MutableCapabilities(); + options.setCapability("name", "W3CTest - basic"); + options.setCapability("build", "W3C Experiment"); + + driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + "@ondemand.saucelabs.com/wd/hub"), options); + } + + @After + public void teardown(){ + driver.quit(); + } + + @Test + public void basic(){ + driver.get("http://a.testaddressbook.com/"); + WebDriverWait wait = new WebDriverWait(driver, 10); + + wait.until(ExpectedConditions.elementToBeClickable(driver.findElement(By.id("sign-in")))); + driver.findElement(By.id("sign-in")).click(); + + wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.id("clearance")))); + String expected = driver.findElement(By.id("clearance")).getText(); + + Assert.assertTrue(expected.contains("Sign")); + } +} From bc52a662f54590372e59a1940dcb45b6bf60c266 Mon Sep 17 00:00:00 2001 From: joshgrant Date: Thu, 26 Apr 2018 16:14:23 -0400 Subject: [PATCH 02/10] need to update selenium version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a8b0503..9e2d807 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ org.seleniumhq.selenium selenium-java - 2.53.1 + 3.11.0 test From 7be55fc8cb99704677b1be00d1f344827ce8abab Mon Sep 17 00:00:00 2001 From: joshgrant Date: Fri, 27 Apr 2018 09:27:16 -0400 Subject: [PATCH 03/10] something else with TestNG --- pom.xml | 5 ++ .../java/com/yourcompany/Tests/W3CTestNG.java | 84 +++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 src/test/java/com/yourcompany/Tests/W3CTestNG.java diff --git a/pom.xml b/pom.xml index 9e2d807..fbb914f 100644 --- a/pom.xml +++ b/pom.xml @@ -18,6 +18,11 @@ 4.12 test + + org.testng + testng + 6.14.3 + org.seleniumhq.selenium selenium-java diff --git a/src/test/java/com/yourcompany/Tests/W3CTestNG.java b/src/test/java/com/yourcompany/Tests/W3CTestNG.java new file mode 100644 index 0000000..042c44a --- /dev/null +++ b/src/test/java/com/yourcompany/Tests/W3CTestNG.java @@ -0,0 +1,84 @@ +package com.yourcompany.Tests; + +import org.junit.After; +import org.openqa.selenium.By; +import org.openqa.selenium.JavascriptExecutor; +import org.openqa.selenium.MutableCapabilities; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.edge.EdgeOptions; +import org.openqa.selenium.firefox.FirefoxOptions; +import org.openqa.selenium.ie.InternetExplorerOptions; +import org.openqa.selenium.remote.RemoteWebDriver; +import org.openqa.selenium.safari.SafariOptions; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; +import org.testng.Assert; +import org.testng.ITest; +import org.testng.ITestResult; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.DataProvider; +import org.testng.annotations.Test; + +import java.net.MalformedURLException; +import java.net.URL; + +public class W3CTestNG { + + private WebDriver driver; + + @DataProvider + public static Object[][] data() { + return new Object[][] { + //{new ChromeOptions()}, + {new FirefoxOptions()}, + {new EdgeOptions()}, + {new SafariOptions()}, + {new InternetExplorerOptions()} + }; + } + + @AfterMethod + public void teardown(ITestResult result){ + //((JavascriptExecutor) driver).executeScript("sauce:job-result=" + (result.isSuccess() ? "passed" : "failed")); + driver.quit(); + } + + @Test(dataProvider = "data") + public void simple(MutableCapabilities options) throws MalformedURLException { + String username = System.getenv("SAUCE_USERNAME"); + String accesskey = System.getenv("SAUCE_ACCESS_KEY"); + + // condition particular capabilities as needed + if (options instanceof SafariOptions){ + options.setCapability("platform", "OS X 10.12"); + } else if (options instanceof InternetExplorerOptions) { + options.setCapability("platform", "Windows 7"); + } else { + options.setCapability("platform", "Windows 10"); + } + + MutableCapabilities sauceOptions = new MutableCapabilities(); + sauceOptions.setCapability("version", "latest"); + sauceOptions.setCapability("seleniumVersion", "3.11.0"); + + sauceOptions.setCapability("name", "W3CTest - basic"); + sauceOptions.setCapability("build", "W3C Experiment"); + + options.setCapability("sauce:options", sauceOptions); + + driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + "@ondemand.saucelabs.com/wd/hub"), options); + + System.out.print(((RemoteWebDriver) driver).getCapabilities().getBrowserName()); + driver.get("http://a.testaddressbook.com/"); + WebDriverWait wait = new WebDriverWait(driver, 30); + + wait.until(ExpectedConditions.elementToBeClickable(driver.findElement(By.id("sign-in")))); + driver.findElement(By.id("sign-in")).click(); + + wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.id("clearance")))); + String expected = driver.findElement(By.id("clearance")).getText(); + + Assert.assertTrue(expected.contains("Sign")); + } +} From f7b74d52d7dc7d6cb2417cc52af0cd86e020ed9f Mon Sep 17 00:00:00 2001 From: joshgrant Date: Wed, 23 May 2018 11:39:29 -0400 Subject: [PATCH 04/10] single case works --- .../java/com/yourcompany/Tests/W3CTestNG.java | 12 ++--- .../com/yourcompany/Tests/W3CTestSingle.java | 52 +++++++++++++++++++ 2 files changed, 57 insertions(+), 7 deletions(-) create mode 100644 src/test/java/com/yourcompany/Tests/W3CTestSingle.java diff --git a/src/test/java/com/yourcompany/Tests/W3CTestNG.java b/src/test/java/com/yourcompany/Tests/W3CTestNG.java index 042c44a..8fa068a 100644 --- a/src/test/java/com/yourcompany/Tests/W3CTestNG.java +++ b/src/test/java/com/yourcompany/Tests/W3CTestNG.java @@ -50,26 +50,24 @@ public void simple(MutableCapabilities options) throws MalformedURLException { String accesskey = System.getenv("SAUCE_ACCESS_KEY"); // condition particular capabilities as needed + options.setCapability("browserVersion", "latest"); if (options instanceof SafariOptions){ - options.setCapability("platform", "OS X 10.12"); + options.setCapability("platformName", "OS X 10.12"); } else if (options instanceof InternetExplorerOptions) { - options.setCapability("platform", "Windows 7"); + options.setCapability("platformName", "Windows 7"); } else { - options.setCapability("platform", "Windows 10"); + options.setCapability("platformName", "Windows 10"); } MutableCapabilities sauceOptions = new MutableCapabilities(); - sauceOptions.setCapability("version", "latest"); sauceOptions.setCapability("seleniumVersion", "3.11.0"); - - sauceOptions.setCapability("name", "W3CTest - basic"); + sauceOptions.setCapability("name", "W3CTestNG - basic2"); sauceOptions.setCapability("build", "W3C Experiment"); options.setCapability("sauce:options", sauceOptions); driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + "@ondemand.saucelabs.com/wd/hub"), options); - System.out.print(((RemoteWebDriver) driver).getCapabilities().getBrowserName()); driver.get("http://a.testaddressbook.com/"); WebDriverWait wait = new WebDriverWait(driver, 30); diff --git a/src/test/java/com/yourcompany/Tests/W3CTestSingle.java b/src/test/java/com/yourcompany/Tests/W3CTestSingle.java new file mode 100644 index 0000000..7dab54f --- /dev/null +++ b/src/test/java/com/yourcompany/Tests/W3CTestSingle.java @@ -0,0 +1,52 @@ +package com.yourcompany.Tests; + +import org.openqa.selenium.MutableCapabilities; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.firefox.FirefoxOptions; +import org.openqa.selenium.remote.RemoteWebDriver; +import org.testng.Assert; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import java.net.MalformedURLException; +import java.net.URL; + +public class W3CTestSingle { + + public WebDriver driver; + + @BeforeMethod + public void setUp() throws MalformedURLException { + FirefoxOptions options = new FirefoxOptions(); + + String username = System.getenv("SAUCE_USERNAME"); + String accesskey = System.getenv("SAUCE_ACCESS_KEY"); + + // condition particular capabilities as needed + options.setCapability("browserVersion", "latest"); + options.setCapability("platformName", "Windows 10"); + + MutableCapabilities sauceOptions = new MutableCapabilities(); + sauceOptions.setCapability("seleniumVersion", "3.11.0"); + sauceOptions.setCapability("name", "firefoxTitle"); + sauceOptions.setCapability("build", "W3C Experiment"); + + options.setCapability("sauce:options", sauceOptions); + + driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + "@ondemand.saucelabs.com/wd/hub"), options); + } + + @AfterMethod + public void teardown(){ + driver.quit(); + } + + @Test + public void basic() { + driver.get("http://a.testaddressbook.com/"); + String expected = driver.getTitle(); + + Assert.assertTrue(expected.contains("Address Book")); + } +} From 1dae9d831c5d6a4388a1f4ec0e48df56ca29e443 Mon Sep 17 00:00:00 2001 From: joshgrant Date: Wed, 23 May 2018 11:57:55 -0400 Subject: [PATCH 05/10] google case not quite working --- src/test/java/com/yourcompany/Tests/W3CTestSingle.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/yourcompany/Tests/W3CTestSingle.java b/src/test/java/com/yourcompany/Tests/W3CTestSingle.java index 7dab54f..69877f2 100644 --- a/src/test/java/com/yourcompany/Tests/W3CTestSingle.java +++ b/src/test/java/com/yourcompany/Tests/W3CTestSingle.java @@ -2,6 +2,7 @@ import org.openqa.selenium.MutableCapabilities; import org.openqa.selenium.WebDriver; +import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.firefox.FirefoxOptions; import org.openqa.selenium.remote.RemoteWebDriver; import org.testng.Assert; @@ -18,7 +19,7 @@ public class W3CTestSingle { @BeforeMethod public void setUp() throws MalformedURLException { - FirefoxOptions options = new FirefoxOptions(); + ChromeOptions options = new ChromeOptions(); String username = System.getenv("SAUCE_USERNAME"); String accesskey = System.getenv("SAUCE_ACCESS_KEY"); @@ -26,10 +27,13 @@ public void setUp() throws MalformedURLException { // condition particular capabilities as needed options.setCapability("browserVersion", "latest"); options.setCapability("platformName", "Windows 10"); + MutableCapabilities goog = new MutableCapabilities(); + goog.setCapability("w3c", true); + options.setCapability("goog:chromeOptions" , goog); MutableCapabilities sauceOptions = new MutableCapabilities(); sauceOptions.setCapability("seleniumVersion", "3.11.0"); - sauceOptions.setCapability("name", "firefoxTitle"); + sauceOptions.setCapability("name", "googleCase"); sauceOptions.setCapability("build", "W3C Experiment"); options.setCapability("sauce:options", sauceOptions); From a57bc64a8377a70d6f8b26ce463ae14ea2ac7e29 Mon Sep 17 00:00:00 2001 From: joshgrant Date: Thu, 24 May 2018 09:28:37 -0400 Subject: [PATCH 06/10] working --- src/test/java/com/yourcompany/Tests/W3CTest.java | 8 ++++---- src/test/java/com/yourcompany/Tests/W3CTestNG.java | 12 +++--------- .../java/com/yourcompany/Tests/W3CTestSingle.java | 8 +++++--- 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/src/test/java/com/yourcompany/Tests/W3CTest.java b/src/test/java/com/yourcompany/Tests/W3CTest.java index 5f52258..1cafa8d 100644 --- a/src/test/java/com/yourcompany/Tests/W3CTest.java +++ b/src/test/java/com/yourcompany/Tests/W3CTest.java @@ -32,7 +32,7 @@ public class W3CTest { @Parameters public static Collection data() { return Arrays.asList(new Object[][] { - {new ChromeOptions()}, + //{new ChromeOptions()}, {new FirefoxOptions()}, {new EdgeOptions()}, {new SafariOptions()} @@ -49,12 +49,12 @@ public void setup() throws MalformedURLException { // condition particular capabilities as needed if (options instanceof SafariOptions){ - options.setCapability("platform", "OS X 10.12"); + options.setCapability("platformName", "OS X 10.12"); } else { - options.setCapability("platform", "Windows 10"); + options.setCapability("platformName", "Windows 10"); } - options.setCapability("version", "latest"); + options.setCapability("browserVersion", "latest"); options.setCapability("seleniumVersion", "3.11.0"); //MutableCapabilities sauceCaps = new MutableCapabilities(); diff --git a/src/test/java/com/yourcompany/Tests/W3CTestNG.java b/src/test/java/com/yourcompany/Tests/W3CTestNG.java index 8fa068a..3ed5787 100644 --- a/src/test/java/com/yourcompany/Tests/W3CTestNG.java +++ b/src/test/java/com/yourcompany/Tests/W3CTestNG.java @@ -62,21 +62,15 @@ public void simple(MutableCapabilities options) throws MalformedURLException { MutableCapabilities sauceOptions = new MutableCapabilities(); sauceOptions.setCapability("seleniumVersion", "3.11.0"); sauceOptions.setCapability("name", "W3CTestNG - basic2"); - sauceOptions.setCapability("build", "W3C Experiment"); + sauceOptions.setCapability("build", "W3C II"); options.setCapability("sauce:options", sauceOptions); driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + "@ondemand.saucelabs.com/wd/hub"), options); driver.get("http://a.testaddressbook.com/"); - WebDriverWait wait = new WebDriverWait(driver, 30); + String title = driver.getTitle(); - wait.until(ExpectedConditions.elementToBeClickable(driver.findElement(By.id("sign-in")))); - driver.findElement(By.id("sign-in")).click(); - - wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.id("clearance")))); - String expected = driver.findElement(By.id("clearance")).getText(); - - Assert.assertTrue(expected.contains("Sign")); + Assert.assertTrue(title.contains("Address")); } } diff --git a/src/test/java/com/yourcompany/Tests/W3CTestSingle.java b/src/test/java/com/yourcompany/Tests/W3CTestSingle.java index 69877f2..f038457 100644 --- a/src/test/java/com/yourcompany/Tests/W3CTestSingle.java +++ b/src/test/java/com/yourcompany/Tests/W3CTestSingle.java @@ -19,13 +19,14 @@ public class W3CTestSingle { @BeforeMethod public void setUp() throws MalformedURLException { - ChromeOptions options = new ChromeOptions(); - + // could also be EdgeOptions or SafariOptions + MutableCapabilities options = new FirefoxOptions(); String username = System.getenv("SAUCE_USERNAME"); String accesskey = System.getenv("SAUCE_ACCESS_KEY"); // condition particular capabilities as needed options.setCapability("browserVersion", "latest"); + // if Safari then choose OS X 10 options.setCapability("platformName", "Windows 10"); MutableCapabilities goog = new MutableCapabilities(); goog.setCapability("w3c", true); @@ -33,7 +34,8 @@ public void setUp() throws MalformedURLException { MutableCapabilities sauceOptions = new MutableCapabilities(); sauceOptions.setCapability("seleniumVersion", "3.11.0"); - sauceOptions.setCapability("name", "googleCase"); + + sauceOptions.setCapability("name", "W3C Firefox"); sauceOptions.setCapability("build", "W3C Experiment"); options.setCapability("sauce:options", sauceOptions); From 750411d9cc1f4a6920d2b6186240233f142da5ae Mon Sep 17 00:00:00 2001 From: joshgrant Date: Thu, 24 May 2018 14:32:10 -0400 Subject: [PATCH 07/10] more samples --- ...{W3CTestSingle.java => W3CSingleTest.java} | 30 +++++++++---------- .../java/com/yourcompany/Tests/W3CTest.java | 6 +++- 2 files changed, 19 insertions(+), 17 deletions(-) rename src/test/java/com/yourcompany/Tests/{W3CTestSingle.java => W3CSingleTest.java} (67%) diff --git a/src/test/java/com/yourcompany/Tests/W3CTestSingle.java b/src/test/java/com/yourcompany/Tests/W3CSingleTest.java similarity index 67% rename from src/test/java/com/yourcompany/Tests/W3CTestSingle.java rename to src/test/java/com/yourcompany/Tests/W3CSingleTest.java index f038457..12cab65 100644 --- a/src/test/java/com/yourcompany/Tests/W3CTestSingle.java +++ b/src/test/java/com/yourcompany/Tests/W3CSingleTest.java @@ -1,36 +1,33 @@ package com.yourcompany.Tests; +import com.yourcompany.Pages.GuineaPigPage; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; import org.openqa.selenium.MutableCapabilities; import org.openqa.selenium.WebDriver; -import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.firefox.FirefoxOptions; import org.openqa.selenium.remote.RemoteWebDriver; -import org.testng.Assert; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; import java.net.MalformedURLException; import java.net.URL; -public class W3CTestSingle { +import static org.junit.Assert.assertFalse; + +public class W3CSingleTest { public WebDriver driver; - @BeforeMethod + @Before public void setUp() throws MalformedURLException { // could also be EdgeOptions or SafariOptions MutableCapabilities options = new FirefoxOptions(); String username = System.getenv("SAUCE_USERNAME"); String accesskey = System.getenv("SAUCE_ACCESS_KEY"); - // condition particular capabilities as needed options.setCapability("browserVersion", "latest"); - // if Safari then choose OS X 10 options.setCapability("platformName", "Windows 10"); MutableCapabilities goog = new MutableCapabilities(); - goog.setCapability("w3c", true); - options.setCapability("goog:chromeOptions" , goog); MutableCapabilities sauceOptions = new MutableCapabilities(); sauceOptions.setCapability("seleniumVersion", "3.11.0"); @@ -43,16 +40,17 @@ public void setUp() throws MalformedURLException { driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + "@ondemand.saucelabs.com/wd/hub"), options); } - @AfterMethod + @After public void teardown(){ driver.quit(); } @Test - public void basic() { - driver.get("http://a.testaddressbook.com/"); - String expected = driver.getTitle(); + public void verifyLinkTest() { + GuineaPigPage page = GuineaPigPage.visitPage(driver); + + page.followLink(); - Assert.assertTrue(expected.contains("Address Book")); + assertFalse(page.isOnPage()); } } diff --git a/src/test/java/com/yourcompany/Tests/W3CTest.java b/src/test/java/com/yourcompany/Tests/W3CTest.java index 1cafa8d..ae47716 100644 --- a/src/test/java/com/yourcompany/Tests/W3CTest.java +++ b/src/test/java/com/yourcompany/Tests/W3CTest.java @@ -29,10 +29,14 @@ public class W3CTest { private WebDriver driver; + /** + * Collection of data parametrizes tests, in this case + * using W3C compliant browsers (does not include Chrome here) + * @return + */ @Parameters public static Collection data() { return Arrays.asList(new Object[][] { - //{new ChromeOptions()}, {new FirefoxOptions()}, {new EdgeOptions()}, {new SafariOptions()} From 6c9d0a7a7291737b50e29daebdb18e092f5bc05e Mon Sep 17 00:00:00 2001 From: joshgrant Date: Thu, 24 May 2018 15:30:55 -0400 Subject: [PATCH 08/10] cleanup JUnit example and remove testng case --- .../com/yourcompany/Tests/W3CSingleTest.java | 56 -------------- .../java/com/yourcompany/Tests/W3CTest.java | 31 ++++---- .../java/com/yourcompany/Tests/W3CTestNG.java | 76 ------------------- 3 files changed, 17 insertions(+), 146 deletions(-) delete mode 100644 src/test/java/com/yourcompany/Tests/W3CSingleTest.java delete mode 100644 src/test/java/com/yourcompany/Tests/W3CTestNG.java diff --git a/src/test/java/com/yourcompany/Tests/W3CSingleTest.java b/src/test/java/com/yourcompany/Tests/W3CSingleTest.java deleted file mode 100644 index 12cab65..0000000 --- a/src/test/java/com/yourcompany/Tests/W3CSingleTest.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.yourcompany.Tests; - -import com.yourcompany.Pages.GuineaPigPage; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.openqa.selenium.MutableCapabilities; -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.firefox.FirefoxOptions; -import org.openqa.selenium.remote.RemoteWebDriver; - -import java.net.MalformedURLException; -import java.net.URL; - -import static org.junit.Assert.assertFalse; - -public class W3CSingleTest { - - public WebDriver driver; - - @Before - public void setUp() throws MalformedURLException { - // could also be EdgeOptions or SafariOptions - MutableCapabilities options = new FirefoxOptions(); - String username = System.getenv("SAUCE_USERNAME"); - String accesskey = System.getenv("SAUCE_ACCESS_KEY"); - - options.setCapability("browserVersion", "latest"); - options.setCapability("platformName", "Windows 10"); - MutableCapabilities goog = new MutableCapabilities(); - - MutableCapabilities sauceOptions = new MutableCapabilities(); - sauceOptions.setCapability("seleniumVersion", "3.11.0"); - - sauceOptions.setCapability("name", "W3C Firefox"); - sauceOptions.setCapability("build", "W3C Experiment"); - - options.setCapability("sauce:options", sauceOptions); - - driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + "@ondemand.saucelabs.com/wd/hub"), options); - } - - @After - public void teardown(){ - driver.quit(); - } - - @Test - public void verifyLinkTest() { - GuineaPigPage page = GuineaPigPage.visitPage(driver); - - page.followLink(); - - assertFalse(page.isOnPage()); - } -} diff --git a/src/test/java/com/yourcompany/Tests/W3CTest.java b/src/test/java/com/yourcompany/Tests/W3CTest.java index ae47716..7088f15 100644 --- a/src/test/java/com/yourcompany/Tests/W3CTest.java +++ b/src/test/java/com/yourcompany/Tests/W3CTest.java @@ -1,6 +1,7 @@ package com.yourcompany.Tests; import com.saucelabs.junit.Parallelized; +import com.yourcompany.Pages.GuineaPigPage; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -14,6 +15,7 @@ import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.edge.EdgeOptions; import org.openqa.selenium.firefox.FirefoxOptions; +import org.openqa.selenium.ie.InternetExplorerOptions; import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.safari.SafariOptions; import org.openqa.selenium.support.ui.ExpectedConditions; @@ -24,6 +26,8 @@ import java.util.Arrays; import java.util.Collection; +import static org.junit.Assert.assertFalse; + @RunWith(Parallelized.class) public class W3CTest { @@ -52,20 +56,24 @@ public void setup() throws MalformedURLException { String accesskey = System.getenv("SAUCE_ACCESS_KEY"); // condition particular capabilities as needed + options.setCapability("browserVersion", "latest"); if (options instanceof SafariOptions){ options.setCapability("platformName", "OS X 10.12"); + } else if (options instanceof InternetExplorerOptions) { + options.setCapability("platformName", "Windows 7"); } else { options.setCapability("platformName", "Windows 10"); } - options.setCapability("browserVersion", "latest"); - options.setCapability("seleniumVersion", "3.11.0"); + MutableCapabilities sauceOptions = new MutableCapabilities(); + sauceOptions.setCapability("seleniumVersion", "3.11.0"); + sauceOptions.setCapability("name", "W3C"); + sauceOptions.setCapability("build", "JUnit Case - Follow Link Test"); - //MutableCapabilities sauceCaps = new MutableCapabilities(); - options.setCapability("name", "W3CTest - basic"); - options.setCapability("build", "W3C Experiment"); + options.setCapability("sauce:options", sauceOptions); driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + "@ondemand.saucelabs.com/wd/hub"), options); + } @After @@ -74,16 +82,11 @@ public void teardown(){ } @Test - public void basic(){ - driver.get("http://a.testaddressbook.com/"); - WebDriverWait wait = new WebDriverWait(driver, 10); - - wait.until(ExpectedConditions.elementToBeClickable(driver.findElement(By.id("sign-in")))); - driver.findElement(By.id("sign-in")).click(); + public void followLinkTest(){ + GuineaPigPage page = GuineaPigPage.visitPage(driver); - wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.id("clearance")))); - String expected = driver.findElement(By.id("clearance")).getText(); + page.followLink(); - Assert.assertTrue(expected.contains("Sign")); + assertFalse(page.isOnPage()); } } diff --git a/src/test/java/com/yourcompany/Tests/W3CTestNG.java b/src/test/java/com/yourcompany/Tests/W3CTestNG.java deleted file mode 100644 index 3ed5787..0000000 --- a/src/test/java/com/yourcompany/Tests/W3CTestNG.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.yourcompany.Tests; - -import org.junit.After; -import org.openqa.selenium.By; -import org.openqa.selenium.JavascriptExecutor; -import org.openqa.selenium.MutableCapabilities; -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.chrome.ChromeOptions; -import org.openqa.selenium.edge.EdgeOptions; -import org.openqa.selenium.firefox.FirefoxOptions; -import org.openqa.selenium.ie.InternetExplorerOptions; -import org.openqa.selenium.remote.RemoteWebDriver; -import org.openqa.selenium.safari.SafariOptions; -import org.openqa.selenium.support.ui.ExpectedConditions; -import org.openqa.selenium.support.ui.WebDriverWait; -import org.testng.Assert; -import org.testng.ITest; -import org.testng.ITestResult; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; - -import java.net.MalformedURLException; -import java.net.URL; - -public class W3CTestNG { - - private WebDriver driver; - - @DataProvider - public static Object[][] data() { - return new Object[][] { - //{new ChromeOptions()}, - {new FirefoxOptions()}, - {new EdgeOptions()}, - {new SafariOptions()}, - {new InternetExplorerOptions()} - }; - } - - @AfterMethod - public void teardown(ITestResult result){ - //((JavascriptExecutor) driver).executeScript("sauce:job-result=" + (result.isSuccess() ? "passed" : "failed")); - driver.quit(); - } - - @Test(dataProvider = "data") - public void simple(MutableCapabilities options) throws MalformedURLException { - String username = System.getenv("SAUCE_USERNAME"); - String accesskey = System.getenv("SAUCE_ACCESS_KEY"); - - // condition particular capabilities as needed - options.setCapability("browserVersion", "latest"); - if (options instanceof SafariOptions){ - options.setCapability("platformName", "OS X 10.12"); - } else if (options instanceof InternetExplorerOptions) { - options.setCapability("platformName", "Windows 7"); - } else { - options.setCapability("platformName", "Windows 10"); - } - - MutableCapabilities sauceOptions = new MutableCapabilities(); - sauceOptions.setCapability("seleniumVersion", "3.11.0"); - sauceOptions.setCapability("name", "W3CTestNG - basic2"); - sauceOptions.setCapability("build", "W3C II"); - - options.setCapability("sauce:options", sauceOptions); - - driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + "@ondemand.saucelabs.com/wd/hub"), options); - - driver.get("http://a.testaddressbook.com/"); - String title = driver.getTitle(); - - Assert.assertTrue(title.contains("Address")); - } -} From 4e2794a4b9d7f016badb97ab232c3e994c23f12c Mon Sep 17 00:00:00 2001 From: joshgrant Date: Thu, 24 May 2018 15:32:46 -0400 Subject: [PATCH 09/10] remove testng from pom --- pom.xml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/pom.xml b/pom.xml index fbb914f..9e2d807 100644 --- a/pom.xml +++ b/pom.xml @@ -18,11 +18,6 @@ 4.12 test - - org.testng - testng - 6.14.3 - org.seleniumhq.selenium selenium-java From dd7fbb49cf479077cc8a91195d87f682de088166 Mon Sep 17 00:00:00 2001 From: joshgrant Date: Thu, 24 May 2018 22:56:22 -0400 Subject: [PATCH 10/10] a bit of cleanup --- .../java/com/yourcompany/Tests/W3CTest.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/test/java/com/yourcompany/Tests/W3CTest.java b/src/test/java/com/yourcompany/Tests/W3CTest.java index 7088f15..82526ce 100644 --- a/src/test/java/com/yourcompany/Tests/W3CTest.java +++ b/src/test/java/com/yourcompany/Tests/W3CTest.java @@ -41,29 +41,31 @@ public class W3CTest { @Parameters public static Collection data() { return Arrays.asList(new Object[][] { - {new FirefoxOptions()}, - {new EdgeOptions()}, - {new SafariOptions()} + {new FirefoxOptions(), "latest", "Windows 10"}, + {new FirefoxOptions(), "58.0", "OS X 10.12"}, + {new EdgeOptions(), "latest", "Windows 10"}, + {new SafariOptions(), "latest", "OS X 10.12"}, + {new InternetExplorerOptions(), "latest", "Windows 7"}, }); } @Parameter public MutableCapabilities options; + @Parameter(1) + public String browserVersion; + + @Parameter(2) + public String platformName; + @Before public void setup() throws MalformedURLException { String username = System.getenv("SAUCE_USERNAME"); String accesskey = System.getenv("SAUCE_ACCESS_KEY"); // condition particular capabilities as needed - options.setCapability("browserVersion", "latest"); - if (options instanceof SafariOptions){ - options.setCapability("platformName", "OS X 10.12"); - } else if (options instanceof InternetExplorerOptions) { - options.setCapability("platformName", "Windows 7"); - } else { - options.setCapability("platformName", "Windows 10"); - } + options.setCapability("browserVersion", browserVersion); + options.setCapability("platformName", platformName); MutableCapabilities sauceOptions = new MutableCapabilities(); sauceOptions.setCapability("seleniumVersion", "3.11.0");