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");
+    }
+}