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