From ef1f0adc827bac9f383f1fadbe7d4e2f55679472 Mon Sep 17 00:00:00 2001 From: joshgrant Date: Tue, 9 Apr 2019 13:43:35 -0400 Subject: [PATCH 1/3] starting point of SauceDriver --- .../com/saucelabs/common/SauceDriver.java | 35 +++++++++++ .../java/com/saucelabs/common/SauceLabs.java | 12 ++++ .../SauceDriverTests.java | 62 +++++++++++++++++++ pom.xml | 1 - 4 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 common/src/main/java/com/saucelabs/common/SauceDriver.java create mode 100644 common/src/main/java/com/saucelabs/common/SauceLabs.java create mode 100644 common/src/test/java/com.saucelabs.common/SauceDriverTests.java diff --git a/common/src/main/java/com/saucelabs/common/SauceDriver.java b/common/src/main/java/com/saucelabs/common/SauceDriver.java new file mode 100644 index 0000000..c758015 --- /dev/null +++ b/common/src/main/java/com/saucelabs/common/SauceDriver.java @@ -0,0 +1,35 @@ +package com.saucelabs.common; + +import org.openqa.selenium.MutableCapabilities; +import org.openqa.selenium.chrome.ChromeOptions; + +public class SauceDriver { + + private MutableCapabilities options; + + public SauceDriver(MutableCapabilities capabilities){ + this.options = capabilities; + } + + public SauceDriver(){ + this(new MutableCapabilities()); + } + + public SauceDriver(String browser){ + this.options = browserNameToOptions(browser); + } + + + public MutableCapabilities getOptions() { + return options; + } + + private MutableCapabilities browserNameToOptions(String browser) { + if (browser.toLowerCase().equals("chrome")) { + return new ChromeOptions(); + } + else { + return new MutableCapabilities(); + } + } +} diff --git a/common/src/main/java/com/saucelabs/common/SauceLabs.java b/common/src/main/java/com/saucelabs/common/SauceLabs.java new file mode 100644 index 0000000..a52f780 --- /dev/null +++ b/common/src/main/java/com/saucelabs/common/SauceLabs.java @@ -0,0 +1,12 @@ +package com.saucelabs.common; + +public class SauceLabs { + + public SauceDriver driver; + public SauceHelper helper; + + public SauceLabs(){ + this.driver = new SauceDriver(); + this.helper = new SauceHelper(); + } +} diff --git a/common/src/test/java/com.saucelabs.common/SauceDriverTests.java b/common/src/test/java/com.saucelabs.common/SauceDriverTests.java new file mode 100644 index 0000000..cd8cb0b --- /dev/null +++ b/common/src/test/java/com.saucelabs.common/SauceDriverTests.java @@ -0,0 +1,62 @@ +package com.saucelabs.common; + +import org.junit.Test; +import org.openqa.selenium.MutableCapabilities; +import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.remote.DesiredCapabilities; + +import static org.junit.Assert.assertEquals; + +public class SauceDriverTests { + + private SauceDriver driver; + + @Test + public void basicDefault() { + driver = new SauceDriver(); + + MutableCapabilities expectedOptions = new MutableCapabilities(); + + assertEquals(driver.getOptions(), expectedOptions); + } + + @Test + public void desiredCapabilities(){ + DesiredCapabilities capabilities = new DesiredCapabilities(); + + driver = new SauceDriver(capabilities); + + MutableCapabilities expectedOptions = new MutableCapabilities(); + + assertEquals(driver.getOptions(), expectedOptions); + } + + @Test + public void browserOptions(){ + MutableCapabilities options = new MutableCapabilities(); + + driver = new SauceDriver(options); + + MutableCapabilities expectedOptions = new MutableCapabilities(); + + assertEquals(driver.getOptions(), expectedOptions); + } + + @Test + public void setOnlyBrowser(){ + driver = new SauceDriver("chrome"); + + MutableCapabilities expectedOptions = new ChromeOptions(); + + assertEquals(driver.getOptions(), expectedOptions); + } + + @Test + public void setOnlyMobileOS() { + driver = new SauceDriver("android"); + + MutableCapabilities expectedOptions = new MutableCapabilities(); + + assertEquals(driver.getOptions(), expectedOptions); + } +} diff --git a/pom.xml b/pom.xml index cab1993..1d8c8dd 100644 --- a/pom.xml +++ b/pom.xml @@ -55,7 +55,6 @@ org.seleniumhq.selenium selenium-java 3.141.59 - test From d7c68641c045ffcce9753e2d36be088869897c45 Mon Sep 17 00:00:00 2001 From: joshgrant Date: Tue, 9 Apr 2019 14:07:05 -0400 Subject: [PATCH 2/3] better naming, fleshing out more functionality --- .../com/saucelabs/common/SauceDriver.java | 35 ----------- .../java/com/saucelabs/common/SauceLabs.java | 4 +- .../com/saucelabs/common/SauceRemoteGrid.java | 58 +++++++++++++++++++ ...verTests.java => SauceRemoteGridTest.java} | 25 ++++---- 4 files changed, 73 insertions(+), 49 deletions(-) delete mode 100644 common/src/main/java/com/saucelabs/common/SauceDriver.java create mode 100644 common/src/main/java/com/saucelabs/common/SauceRemoteGrid.java rename common/src/test/java/com.saucelabs.common/{SauceDriverTests.java => SauceRemoteGridTest.java} (59%) diff --git a/common/src/main/java/com/saucelabs/common/SauceDriver.java b/common/src/main/java/com/saucelabs/common/SauceDriver.java deleted file mode 100644 index c758015..0000000 --- a/common/src/main/java/com/saucelabs/common/SauceDriver.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.saucelabs.common; - -import org.openqa.selenium.MutableCapabilities; -import org.openqa.selenium.chrome.ChromeOptions; - -public class SauceDriver { - - private MutableCapabilities options; - - public SauceDriver(MutableCapabilities capabilities){ - this.options = capabilities; - } - - public SauceDriver(){ - this(new MutableCapabilities()); - } - - public SauceDriver(String browser){ - this.options = browserNameToOptions(browser); - } - - - public MutableCapabilities getOptions() { - return options; - } - - private MutableCapabilities browserNameToOptions(String browser) { - if (browser.toLowerCase().equals("chrome")) { - return new ChromeOptions(); - } - else { - return new MutableCapabilities(); - } - } -} diff --git a/common/src/main/java/com/saucelabs/common/SauceLabs.java b/common/src/main/java/com/saucelabs/common/SauceLabs.java index a52f780..9bc1faf 100644 --- a/common/src/main/java/com/saucelabs/common/SauceLabs.java +++ b/common/src/main/java/com/saucelabs/common/SauceLabs.java @@ -2,11 +2,11 @@ public class SauceLabs { - public SauceDriver driver; + public SauceRemoteGrid driver; public SauceHelper helper; public SauceLabs(){ - this.driver = new SauceDriver(); + this.driver = new SauceRemoteGrid(); this.helper = new SauceHelper(); } } diff --git a/common/src/main/java/com/saucelabs/common/SauceRemoteGrid.java b/common/src/main/java/com/saucelabs/common/SauceRemoteGrid.java new file mode 100644 index 0000000..71751c5 --- /dev/null +++ b/common/src/main/java/com/saucelabs/common/SauceRemoteGrid.java @@ -0,0 +1,58 @@ +package com.saucelabs.common; + +import org.openqa.selenium.MutableCapabilities; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.remote.RemoteWebDriver; + +import java.net.MalformedURLException; +import java.net.URL; + +public class SauceRemoteGrid { + + private static final String SAUCE_ONDEMAND_URL = "https://ondemand.saucelabs.com/wd/hub"; + + private MutableCapabilities options; + private WebDriver driver; + + public SauceRemoteGrid(MutableCapabilities capabilities){ + this.options = capabilities; + //this.driver = connect(capabilities); + } + + public SauceRemoteGrid(){ + this(new MutableCapabilities()); + } + + public SauceRemoteGrid(String browser){ + this.options = browserNameToOptions(browser); + //this.driver = connect(this.options); + } + + + public MutableCapabilities getOptions() { + return options; + } + + public WebDriver getDriver() { + return driver; + } + + private MutableCapabilities browserNameToOptions(String browser) { + if (browser.toLowerCase().equals("chrome")) { + return new ChromeOptions(); + } + else { + return new MutableCapabilities(); + } + } + + private WebDriver connect(MutableCapabilities options) { + try { + return new RemoteWebDriver(new URL(SAUCE_ONDEMAND_URL), options); + } catch (MalformedURLException e) { + System.out.println("Did you change the Sauce URL?"); + return null; + } + } +} diff --git a/common/src/test/java/com.saucelabs.common/SauceDriverTests.java b/common/src/test/java/com.saucelabs.common/SauceRemoteGridTest.java similarity index 59% rename from common/src/test/java/com.saucelabs.common/SauceDriverTests.java rename to common/src/test/java/com.saucelabs.common/SauceRemoteGridTest.java index cd8cb0b..f148b5f 100644 --- a/common/src/test/java/com.saucelabs.common/SauceDriverTests.java +++ b/common/src/test/java/com.saucelabs.common/SauceRemoteGridTest.java @@ -7,56 +7,57 @@ import static org.junit.Assert.assertEquals; -public class SauceDriverTests { +public class SauceRemoteGridTest { - private SauceDriver driver; + private SauceRemoteGrid sauceGrid; @Test public void basicDefault() { - driver = new SauceDriver(); + sauceGrid = new SauceRemoteGrid(); MutableCapabilities expectedOptions = new MutableCapabilities(); - assertEquals(driver.getOptions(), expectedOptions); + assertEquals(sauceGrid.getOptions(), expectedOptions); } @Test public void desiredCapabilities(){ DesiredCapabilities capabilities = new DesiredCapabilities(); - driver = new SauceDriver(capabilities); + sauceGrid = new SauceRemoteGrid(capabilities); MutableCapabilities expectedOptions = new MutableCapabilities(); - assertEquals(driver.getOptions(), expectedOptions); + assertEquals(sauceGrid.getOptions(), expectedOptions); } @Test public void browserOptions(){ MutableCapabilities options = new MutableCapabilities(); - driver = new SauceDriver(options); + sauceGrid = new SauceRemoteGrid(options); MutableCapabilities expectedOptions = new MutableCapabilities(); - assertEquals(driver.getOptions(), expectedOptions); + assertEquals(sauceGrid.getOptions(), expectedOptions); } @Test public void setOnlyBrowser(){ - driver = new SauceDriver("chrome"); + sauceGrid = new SauceRemoteGrid("chrome"); MutableCapabilities expectedOptions = new ChromeOptions(); - assertEquals(driver.getOptions(), expectedOptions); + assertEquals(sauceGrid.getOptions(), expectedOptions); } @Test public void setOnlyMobileOS() { - driver = new SauceDriver("android"); + sauceGrid = new SauceRemoteGrid("android"); MutableCapabilities expectedOptions = new MutableCapabilities(); + expectedOptions.setCapability("platformName", "Android"); - assertEquals(driver.getOptions(), expectedOptions); + assertEquals(sauceGrid.getOptions(), expectedOptions); } } From 41979e1bb64bde40aca4e86533d2e93297018bd1 Mon Sep 17 00:00:00 2001 From: joshgrant Date: Tue, 9 Apr 2019 14:12:01 -0400 Subject: [PATCH 3/3] one last fixup --- common/src/main/java/com/saucelabs/common/SauceLabs.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/com/saucelabs/common/SauceLabs.java b/common/src/main/java/com/saucelabs/common/SauceLabs.java index 9bc1faf..46f98cd 100644 --- a/common/src/main/java/com/saucelabs/common/SauceLabs.java +++ b/common/src/main/java/com/saucelabs/common/SauceLabs.java @@ -2,11 +2,11 @@ public class SauceLabs { - public SauceRemoteGrid driver; + public SauceRemoteGrid grid; public SauceHelper helper; public SauceLabs(){ - this.driver = new SauceRemoteGrid(); + this.grid = new SauceRemoteGrid(); this.helper = new SauceHelper(); } }