From a9804a8d024f0095889d3dc843641a4e3ed30256 Mon Sep 17 00:00:00 2001 From: titusfortner <titusfortner@gmail.com> Date: Fri, 4 Jun 2021 12:44:32 -0500 Subject: [PATCH] shows what this would look like with a JUnit Base Test approach --- pom.xml | 31 ++++++++++++- .../com/saucelabs/junit/SauceBaseTest.java | 45 +++++++++++++++++++ .../quickstart/AdjustOptionsTest.java | 28 ++++++++++++ .../saucelabs/quickstart/QuickstartTest.java | 14 ++++++ 4 files changed, 116 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/saucelabs/junit/SauceBaseTest.java create mode 100644 src/test/java/com/saucelabs/quickstart/AdjustOptionsTest.java create mode 100644 src/test/java/com/saucelabs/quickstart/QuickstartTest.java diff --git a/pom.xml b/pom.xml index cd59dac..1507cf0 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,33 @@ <groupId>org.example</groupId> <artifactId>quickstart-java</artifactId> <version>1.0-SNAPSHOT</version> - - + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>8</source> + <target>8</target> + </configuration> + </plugin> + </plugins> + </build> + <dependencies> + <dependency> + <groupId>org.seleniumhq.selenium</groupId> + <artifactId>selenium-java</artifactId> + <version>4.0.0-beta-3</version> + </dependency> + <dependency> + <groupId>com.saucelabs</groupId> + <artifactId>sauce_bindings</artifactId> + <version>1.1.0</version> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.13.1</version> + </dependency> + </dependencies> </project> \ No newline at end of file diff --git a/src/main/java/com/saucelabs/junit/SauceBaseTest.java b/src/main/java/com/saucelabs/junit/SauceBaseTest.java new file mode 100644 index 0000000..4b1b25e --- /dev/null +++ b/src/main/java/com/saucelabs/junit/SauceBaseTest.java @@ -0,0 +1,45 @@ +package com.saucelabs.junit; + +import com.saucelabs.saucebindings.SauceSession; +import com.saucelabs.saucebindings.options.SauceOptions; +import org.junit.Before; +import org.junit.Rule; +import org.junit.rules.TestName; +import org.junit.rules.TestWatcher; +import org.junit.runner.Description; +import org.openqa.selenium.WebDriver; + +public class SauceBaseTest { + protected WebDriver driver; + protected SauceSession session; + + @Rule + public SauceTestWatcher watcher = new SauceTestWatcher(); + + @Rule + public TestName testName = new TestName(); + + public SauceOptions createSauceOptions() { + return new SauceOptions(); + } + + @Before + public void setup() { + SauceOptions sauceOptions = createSauceOptions(); + sauceOptions.sauce().setName(testName.getMethodName()); + session = new SauceSession(sauceOptions); + driver = session.start(); + } + + public class SauceTestWatcher extends TestWatcher { + @Override + protected void succeeded(Description description) { + session.stop(true); + } + + @Override + protected void failed(Throwable e, Description description) { + session.stop(false); + } + } +} diff --git a/src/test/java/com/saucelabs/quickstart/AdjustOptionsTest.java b/src/test/java/com/saucelabs/quickstart/AdjustOptionsTest.java new file mode 100644 index 0000000..38a4295 --- /dev/null +++ b/src/test/java/com/saucelabs/quickstart/AdjustOptionsTest.java @@ -0,0 +1,28 @@ +package com.saucelabs.quickstart; + +import com.saucelabs.saucebindings.JobVisibility; +import com.saucelabs.saucebindings.SaucePlatform; +import com.saucelabs.saucebindings.options.SauceOptions; +import com.saucelabs.junit.SauceBaseTest; +import org.junit.Test; + +import java.time.Duration; + +import static org.junit.Assert.assertEquals; + +public class AdjustOptionsTest extends SauceBaseTest { + + public SauceOptions createSauceOptions() { + return SauceOptions.firefox() + .setMaxDuration(Duration.ofMinutes(30)) + .setJobVisibility(JobVisibility.TEAM) + .setPlatformName(SaucePlatform.MAC_CATALINA) + .build(); + } + + @Test + public void useCustomOptions() throws AssertionError { + driver.navigate().to("https://www.saucedemo.com"); + assertEquals(driver.getTitle(), "Swag Labs"); + } +} diff --git a/src/test/java/com/saucelabs/quickstart/QuickstartTest.java b/src/test/java/com/saucelabs/quickstart/QuickstartTest.java new file mode 100644 index 0000000..458b96b --- /dev/null +++ b/src/test/java/com/saucelabs/quickstart/QuickstartTest.java @@ -0,0 +1,14 @@ +package com.saucelabs.quickstart; + +import com.saucelabs.junit.SauceBaseTest; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class QuickstartTest extends SauceBaseTest { + @Test + public void useAllDefaults() throws AssertionError { + driver.navigate().to("https://www.saucedemo.com"); + assertEquals(driver.getTitle(), "Swag Labs"); + } +}