diff --git a/pom.xml b/pom.xml
index cd59dac..1507cf0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,6 +7,33 @@
org.example
quickstart-java
1.0-SNAPSHOT
-
-
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 8
+ 8
+
+
+
+
+
+
+ org.seleniumhq.selenium
+ selenium-java
+ 4.0.0-beta-3
+
+
+ com.saucelabs
+ sauce_bindings
+ 1.1.0
+
+
+ junit
+ junit
+ 4.13.1
+
+
\ 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");
+ }
+}