From b3a1262303a9be2c243f461b7a648267588ac8ee Mon Sep 17 00:00:00 2001 From: Diego Molina Date: Mon, 15 Jul 2024 16:55:53 +0200 Subject: [PATCH] Removing duplicated tests and examples using deprecated code --- training-sessions/advanced_demo/.gitignore | 18 ----- training-sessions/advanced_demo/README.md | 26 ------- training-sessions/advanced_demo/pom.xml | 42 ----------- .../src/test/java/ExtendedDebuggingTest.java | 42 ----------- .../src/test/java/ExtraSauceTest.java | 56 -------------- .../src/test/java/LocalExecutionTest.java | 25 ------- .../src/test/java/SauceConnectTest.java | 45 ------------ .../src/test/java/SauceDemoTest.java | 30 -------- .../src/test/java/SauceExecutionTest.java | 31 -------- .../src/test/java/TestWatcherTest.java | 27 ------- training-sessions/synchronization/.gitignore | 18 ----- training-sessions/synchronization/README.md | 41 ----------- training-sessions/synchronization/pom.xml | 36 --------- .../src/test/java/DeclarativeTest.java | 61 ---------------- .../src/test/java/NoSynchTest.java | 42 ----------- .../src/test/java/SynchAbstractTest.java | 73 ------------------- .../src/test/java/SynchExplicitTest.java | 49 ------------- .../src/test/java/SynchSalsaVerdeTest.java | 64 ---------------- .../src/test/java/data/UserData.java | 25 ------- .../src/test/java/pages/LoginPage.java | 51 ------------- 20 files changed, 802 deletions(-) delete mode 100644 training-sessions/advanced_demo/.gitignore delete mode 100644 training-sessions/advanced_demo/README.md delete mode 100644 training-sessions/advanced_demo/pom.xml delete mode 100644 training-sessions/advanced_demo/src/test/java/ExtendedDebuggingTest.java delete mode 100644 training-sessions/advanced_demo/src/test/java/ExtraSauceTest.java delete mode 100644 training-sessions/advanced_demo/src/test/java/LocalExecutionTest.java delete mode 100644 training-sessions/advanced_demo/src/test/java/SauceConnectTest.java delete mode 100644 training-sessions/advanced_demo/src/test/java/SauceDemoTest.java delete mode 100644 training-sessions/advanced_demo/src/test/java/SauceExecutionTest.java delete mode 100644 training-sessions/advanced_demo/src/test/java/TestWatcherTest.java delete mode 100644 training-sessions/synchronization/.gitignore delete mode 100644 training-sessions/synchronization/README.md delete mode 100644 training-sessions/synchronization/pom.xml delete mode 100644 training-sessions/synchronization/src/test/java/DeclarativeTest.java delete mode 100644 training-sessions/synchronization/src/test/java/NoSynchTest.java delete mode 100644 training-sessions/synchronization/src/test/java/SynchAbstractTest.java delete mode 100644 training-sessions/synchronization/src/test/java/SynchExplicitTest.java delete mode 100644 training-sessions/synchronization/src/test/java/SynchSalsaVerdeTest.java delete mode 100644 training-sessions/synchronization/src/test/java/data/UserData.java delete mode 100644 training-sessions/synchronization/src/test/java/pages/LoginPage.java diff --git a/training-sessions/advanced_demo/.gitignore b/training-sessions/advanced_demo/.gitignore deleted file mode 100644 index df9d762d..00000000 --- a/training-sessions/advanced_demo/.gitignore +++ /dev/null @@ -1,18 +0,0 @@ -### Java template -*.class - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.ear - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* - -# Created by .ignore support plugin (hsz.mobi) - -target/ -.idea/ diff --git a/training-sessions/advanced_demo/README.md b/training-sessions/advanced_demo/README.md deleted file mode 100644 index bc5bea1b..00000000 --- a/training-sessions/advanced_demo/README.md +++ /dev/null @@ -1,26 +0,0 @@ -## Advanced Introduction to Sauce Labs - -This code is provided on an "AS-IS” basis without warranty of any kind, either express or implied, including without limitation any implied warranties of condition, uninterrupted use, merchantability, fitness for a particular purpose, or non-infringement. Your tests and testing environments may require you to modify this framework. Issues regarding this framework should be submitted through GitHub. For questions regarding Sauce Labs integration, please see the Sauce Labs documentation at https://wiki.saucelabs.com/. This framework is not maintained by Sauce Labs Support. - -### Training Plan - -1. `LocalExecutionTest` shows off running locally - -2. `SauceExecutionTest` shows the basics of running on Sauce Labs - a. This uses the Sauce Bindings example straight from the website - -3. `ExtraSauceTest` shows all of the main Sauce Labs specific values that can be used - -4. `TestWatcherTest` shows sending passing & failing information to Sauce - a. This uses SalsaVerde's `com.saucedemo.SauceTestWatcher` class - -5. `SauceDemoTest` shows running an actual authentication test to look at commands list - a. Note this is using SalsaVerde syntax - -6. `ExtendedDebuggingTest` - Sets Extended debugging values to show in UI - -7. `SauceConnectTest` - kick off a tunnel locally and show the sub-account: - a. Expects these sc flags: `--tunnel-identifier ORANGE --shared-tunnel --no-remove-colliding-tunnels --pidfile /tmp/pid0.log'` - b. Requires overriding Sauce Bindings defaults with different username/access key values - - diff --git a/training-sessions/advanced_demo/pom.xml b/training-sessions/advanced_demo/pom.xml deleted file mode 100644 index 0199fdbe..00000000 --- a/training-sessions/advanced_demo/pom.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - 4.0.0 - - org.example - advanced_demo - 1.0-SNAPSHOT - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 8 - 8 - - - - - - - - io.github.bonigarcia - webdrivermanager - 4.0.0 - test - - - junit - junit - 4.13.2 - - - com.saucelabs - salsa_verde - 0.1.0 - - - \ No newline at end of file diff --git a/training-sessions/advanced_demo/src/test/java/ExtendedDebuggingTest.java b/training-sessions/advanced_demo/src/test/java/ExtendedDebuggingTest.java deleted file mode 100644 index 5884a0c7..00000000 --- a/training-sessions/advanced_demo/src/test/java/ExtendedDebuggingTest.java +++ /dev/null @@ -1,42 +0,0 @@ -import com.saucelabs.salsaverde.Browser; -import com.saucelabs.salsaverde.junit.SauceTestWatcher; -import com.saucelabs.saucebindings.SauceOptions; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.Description; -import org.openqa.selenium.By; - -public class ExtendedDebuggingTest { - public Browser browser; - - @Rule - public SauceTestWatcher testWatcher = new SauceTestWatcher() { - @Override - protected void starting(Description description) { - SauceOptions sauceOptions = new SauceOptions(); - sauceOptions.setExtendedDebugging(true); - sauceOptions.setCapturePerformance(true); - - this.setSauceOptions(sauceOptions); - super.starting(description); - } - }; - - @Before - public void setup() { - browser = new Browser(testWatcher.getDriver()); - } - - @Test - public void ExtendedDebuggingDemo() { - browser.goTo("https://www.saucedemo.com/"); - - String email = "standard_user"; - String password = "secret_sauce"; - - browser.element(By.id("user-name")).setText(email); - browser.element(By.id("password")).setText(password); - browser.element(By.className("btn_action")).click(); - } -} diff --git a/training-sessions/advanced_demo/src/test/java/ExtraSauceTest.java b/training-sessions/advanced_demo/src/test/java/ExtraSauceTest.java deleted file mode 100644 index cf6d436a..00000000 --- a/training-sessions/advanced_demo/src/test/java/ExtraSauceTest.java +++ /dev/null @@ -1,56 +0,0 @@ -import com.saucelabs.saucebindings.Browser; -import com.saucelabs.saucebindings.SauceOptions; -import com.saucelabs.saucebindings.SaucePlatform; -import com.saucelabs.saucebindings.SauceSession; -import org.junit.Test; -import org.openqa.selenium.remote.RemoteWebDriver; - -import java.util.ArrayList; - -public class ExtraSauceTest { - - @Test - public void extraSauce() { - // https://wiki.saucelabs.com/display/DOCS/Test+Configuration+Options - SauceOptions sauceOptions = new SauceOptions(); - - // Primary Options - sauceOptions.setBrowserName(Browser.FIREFOX); - sauceOptions.setBrowserVersion("73.0"); - sauceOptions.setPlatformName(SaucePlatform.WINDOWS_8); - - // Test Details - ArrayList tags = new ArrayList<>(); - tags.add("Tag 1"); - tags.add("Tag 2"); - - sauceOptions.setName("Placeholder Test Name (always set this dynamically)"); - sauceOptions.setBuild("Placeholder Build Name + Number (always set this dynamically)"); - sauceOptions.setTags(tags); - - // System Preferences - sauceOptions.setScreenResolution("1280x1024"); - sauceOptions.setTimeZone("Alaska"); - - // Special Features - sauceOptions.setExtendedDebugging(true); - sauceOptions.setCapturePerformance(true); - - // Artifact Toggles - sauceOptions.setRecordVideo(false); - sauceOptions.setVideoUploadOnPass(false); - sauceOptions.setRecordScreenshots(false); - sauceOptions.setRecordLogs(false); - - // Timeout Values - sauceOptions.setMaxDuration(1800); - sauceOptions.setCommandTimeout(300); - sauceOptions.setIdleTimeout(90); - - - SauceSession session = new SauceSession(sauceOptions); - RemoteWebDriver driver = session.start(); - driver.get("https://www.saucedemo.com/"); - session.stop(true); - } -} diff --git a/training-sessions/advanced_demo/src/test/java/LocalExecutionTest.java b/training-sessions/advanced_demo/src/test/java/LocalExecutionTest.java deleted file mode 100644 index a2ce9bd6..00000000 --- a/training-sessions/advanced_demo/src/test/java/LocalExecutionTest.java +++ /dev/null @@ -1,25 +0,0 @@ -import io.github.bonigarcia.wdm.WebDriverManager; -import org.junit.Test; -import org.openqa.selenium.chrome.ChromeDriver; - -public class LocalExecutionTest { - - @Test - public void localExecution() { - // Options: - // - // 1. Specify location of driver - // System.setProperty("webdriver.chrome.driver", "lib/drivers/chromedriver"); - // - // 2. Add driver to PATH ENV - // - // 3. Use Driver manager - WebDriverManager.chromedriver().setup(); - - // Start session (opens browser) - RemoteWebDriver driver = new ChromeDriver(); - - // Quit session (closes browser) - driver.quit(); - } -} diff --git a/training-sessions/advanced_demo/src/test/java/SauceConnectTest.java b/training-sessions/advanced_demo/src/test/java/SauceConnectTest.java deleted file mode 100644 index ef5a8999..00000000 --- a/training-sessions/advanced_demo/src/test/java/SauceConnectTest.java +++ /dev/null @@ -1,45 +0,0 @@ -import com.saucelabs.salsaverde.Browser; -import com.saucelabs.salsaverde.junit.SauceTestWatcher; -import com.saucelabs.saucebindings.SauceOptions; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.Description; -import org.openqa.selenium.By; - -public class SauceConnectTest { - public Browser browser; - - @Rule - public SauceTestWatcher testWatcher = new SauceTestWatcher() { - @Override - protected void starting(Description description) { - System.setProperty("SAUCE_USERNAME", System.getenv("SAUCE_USER_DEMO")); - System.setProperty("SAUCE_ACCESS_KEY", System.getenv("SAUCE_KEY_DEMO")); - - SauceOptions sauceOptions = new SauceOptions(); - sauceOptions.setTunnelIdentifier("ORANGE"); - sauceOptions.setParentTunnel("titusfortner"); - - this.setSauceOptions(sauceOptions); - super.starting(description); - } - }; - - @Before - public void setup() { - browser = new Browser(testWatcher.getDriver()); - } - - @Test - public void SauceConnectDemo() { - browser.goTo("https://www.saucedemo.com/"); - - String email = "standard_user"; - String password = "secret_sauce"; - - browser.element(By.id("user-name")).setText(email); - browser.element(By.id("password")).setText(password); - browser.element(By.className("btn_action")).click(); - } -} diff --git a/training-sessions/advanced_demo/src/test/java/SauceDemoTest.java b/training-sessions/advanced_demo/src/test/java/SauceDemoTest.java deleted file mode 100644 index f86847e3..00000000 --- a/training-sessions/advanced_demo/src/test/java/SauceDemoTest.java +++ /dev/null @@ -1,30 +0,0 @@ -import com.saucelabs.salsaverde.Browser; -import com.saucelabs.salsaverde.junit.SauceTestWatcher; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.openqa.selenium.By; - -public class SauceDemoTest { - public Browser browser; - - @Rule - public SauceTestWatcher testWatcher = new SauceTestWatcher(); - - @Before - public void setup() { - browser = new Browser(testWatcher.getDriver()); - } - - @Test - public void SauceDemo() { - browser.goTo("https://www.saucedemo.com/"); - - String email = "standard_user"; - String password = "secret_sauce"; - - browser.element(By.id("user-name")).setText(email); - browser.element(By.id("password")).setText(password); - browser.element(By.className("btn_action")).click(); - } -} diff --git a/training-sessions/advanced_demo/src/test/java/SauceExecutionTest.java b/training-sessions/advanced_demo/src/test/java/SauceExecutionTest.java deleted file mode 100644 index 974ba3be..00000000 --- a/training-sessions/advanced_demo/src/test/java/SauceExecutionTest.java +++ /dev/null @@ -1,31 +0,0 @@ -import com.saucelabs.saucebindings.Browser; -import com.saucelabs.saucebindings.SauceOptions; -import com.saucelabs.saucebindings.SaucePlatform; -import com.saucelabs.saucebindings.SauceSession; -import org.junit.Test; -import org.openqa.selenium.remote.RemoteWebDriver; - -import java.net.MalformedURLException; - -public class SauceExecutionTest { - @Test - public void sauceExecution() throws MalformedURLException { - // 1. Specify the 3 basic parameters of a SauceOptions instance - SauceOptions sauceOptions = new SauceOptions(); - sauceOptions.setBrowserName(Browser.FIREFOX); - sauceOptions.setBrowserVersion("73.0"); - sauceOptions.setPlatformName(SaucePlatform.WINDOWS_8); - - // 2. Create Session object with the Options object instance - SauceSession session = new SauceSession(sauceOptions); - - // 3. Start Session to get the Driver - RemoteWebDriver driver = session.start(); - - // 4. Use the driver in your tests just like normal - driver.get("https://www.saucedemo.com/"); - - // 5. Stop the Session with whether the test passed or failed - session.stop(true); - } -} diff --git a/training-sessions/advanced_demo/src/test/java/TestWatcherTest.java b/training-sessions/advanced_demo/src/test/java/TestWatcherTest.java deleted file mode 100644 index 480997ad..00000000 --- a/training-sessions/advanced_demo/src/test/java/TestWatcherTest.java +++ /dev/null @@ -1,27 +0,0 @@ -import com.saucelabs.salsaverde.Browser; -import com.saucelabs.salsaverde.junit.SauceTestWatcher; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; - -public class TestWatcherTest { - public Browser browser; - - @Rule - public SauceTestWatcher testWatcher = new SauceTestWatcher(); - - @Before - public void setup() { - browser = new Browser(testWatcher.getDriver()); - } - - @Test - public void testFail() { - throw new RuntimeException("Throws Exception"); - } - - @Test - public void testPass() { - System.out.println("This should pass"); - } -} diff --git a/training-sessions/synchronization/.gitignore b/training-sessions/synchronization/.gitignore deleted file mode 100644 index df9d762d..00000000 --- a/training-sessions/synchronization/.gitignore +++ /dev/null @@ -1,18 +0,0 @@ -### Java template -*.class - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.ear - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* - -# Created by .ignore support plugin (hsz.mobi) - -target/ -.idea/ diff --git a/training-sessions/synchronization/README.md b/training-sessions/synchronization/README.md deleted file mode 100644 index 5f4f5793..00000000 --- a/training-sessions/synchronization/README.md +++ /dev/null @@ -1,41 +0,0 @@ -## Synchronization Examples - -This code is provided on an "AS-IS” basis without warranty of any kind, either express or implied, including without limitation any implied warranties of condition, uninterrupted use, merchantability, fitness for a particular purpose, or non-infringement. Your tests and testing environments may require you to modify this framework. Issues regarding this framework should be submitted through GitHub. For questions regarding Sauce Labs integration, please see the Sauce Labs documentation at https://wiki.saucelabs.com/. This framework is not maintained by Sauce Labs Support. - -### Training Plan - -Start by showing http://watir.com/examples/wait.html - -1. NoSynchTest will not pass because it needs to be synchronized - -2. SynchExplicitTest shows the industry standard recommendation to get a test to pass - a. It works - b. The same code duplicated everywhere - c. It never makes sense to take an action on an element that isn't displayed - -3. SynchAbstractTest moves the synchronization code to a centralized place - a. Same number of wire calls - b. Less code duplication - -4. DeclarativeTest shows a well abstracted "real world" tests for logging in - a. Use it to show the basic extra wire calls that synchronized code means - b. (Note: this is the minimal extra, would be more powerful if more extra synch was added) - -5. SynchSalsaVerde shows an example of SalsaVerde usage that properly leverages the -"Forgiveness over Permission" Approach - -6. Show `User.bad()` results and the resulting failure and exception - -7. Show how `loginSuccessfully()` gives a good exception message because it is opinionated - -### Examples of Extra Synchronization: - -* Is the Current Window Open -* Is there an alert -* Set the driver to the default browsing context -* Verify Collection tag names match expected -* Ensure element exists -* Ensure element visible -* Ensure element enabled -* Ensure element is not read only -* Ensure element is not stale diff --git a/training-sessions/synchronization/pom.xml b/training-sessions/synchronization/pom.xml deleted file mode 100644 index dfeb587b..00000000 --- a/training-sessions/synchronization/pom.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - 4.0.0 - - org.example - synchronization_examples - 1.0-SNAPSHOT - - - - org.apache.maven.plugins - maven-compiler-plugin - - 8 - 8 - - - - - - - - com.saucelabs - salsa_verde - 0.1.0 - - - junit - junit - 4.13.2 - - - - \ No newline at end of file diff --git a/training-sessions/synchronization/src/test/java/DeclarativeTest.java b/training-sessions/synchronization/src/test/java/DeclarativeTest.java deleted file mode 100644 index 9da9a954..00000000 --- a/training-sessions/synchronization/src/test/java/DeclarativeTest.java +++ /dev/null @@ -1,61 +0,0 @@ -import com.saucelabs.salsaverde.Browser; -import com.saucelabs.salsaverde.elements.Executor; -import com.saucelabs.salsaverde.junit.BaseTestWatcher; -import com.saucelabs.salsaverde.junit.SauceTestWatcher; -import com.saucelabs.salsaverde.pages.PageObject; -import data.UserData; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.openqa.selenium.remote.RemoteWebDriver; -import pages.LoginPage; - - -public class DeclarativeTest { - public Browser browser; - - @Rule - public BaseTestWatcher testWatcher = new SauceTestWatcher(); - - @Before - public void setup() { - browser = new Browser((RemoteWebDriver) testWatcher.getDriver()); - - // Explicitly sets browser rather than hiding it; it's just one line - PageObject.setBrowser(browser); - Executor.waitTime = 5; - } - - @Test - public void loginSuccessfully() { - // Use contextually informative static methods to create Data Objects - UserData userData = UserData.valid(); - - // Don't put the magic in the constructor, have a method that does what you expect it to - LoginPage loginPage = new LoginPage(); - loginPage.visit(); - - // Declarative - what it means to log in is elsewhere; - // Not data providers or ordered params, the object - loginPage.loginSuccessfully(userData); - - Assert.assertFalse(loginPage.isOnPage()); - } - - @Test - public void loginFailure() { - // Use contextually informative static methods to create Data Objects - UserData userData = UserData.valid(); - - // Don't put the magic in the constructor, have a method that does what you expect it to - LoginPage loginPage = new LoginPage(); - loginPage.visit(); - - // Declarative - what it means to log in is elsewhere; - // No data providers or ordered params, just an object - loginPage.loginSuccessfully(userData); - - Assert.assertFalse(loginPage.isOnPage()); - } -} diff --git a/training-sessions/synchronization/src/test/java/NoSynchTest.java b/training-sessions/synchronization/src/test/java/NoSynchTest.java deleted file mode 100644 index 1619dc91..00000000 --- a/training-sessions/synchronization/src/test/java/NoSynchTest.java +++ /dev/null @@ -1,42 +0,0 @@ -import com.saucelabs.saucebindings.SauceOptions; -import com.saucelabs.saucebindings.SauceSession; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TestName; -import org.openqa.selenium.By; -import org.openqa.selenium.NoSuchElementException; -import org.openqa.selenium.remote.RemoteWebDriver; - - -public class NoSynchTest { - public SauceSession session; - public RemoteWebDriver driver; - - @Rule - public TestName name = new TestName(); - - @Before - public void setup() { - SauceOptions options = new SauceOptions(); - options.setName(name.getMethodName()); - session = new SauceSession(options); - driver = session.start(); - } - - @Test - public void failsToSynch() { - driver.get("http://watir.com/examples/wait.html"); - - driver.findElement(By.id("add_foobar")).click(); - - try { - driver.findElement(By.id("foobar")).click(); - session.stop(true); - } catch (NoSuchElementException e) { - session.stop(false); - Assert.assertTrue(e.getMessage(), false); - } - } -} diff --git a/training-sessions/synchronization/src/test/java/SynchAbstractTest.java b/training-sessions/synchronization/src/test/java/SynchAbstractTest.java deleted file mode 100644 index 22f8fcb1..00000000 --- a/training-sessions/synchronization/src/test/java/SynchAbstractTest.java +++ /dev/null @@ -1,73 +0,0 @@ -import com.saucelabs.saucebindings.SauceOptions; -import com.saucelabs.saucebindings.SauceSession; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TestName; -import org.openqa.selenium.By; -import org.openqa.selenium.ElementNotInteractableException; -import org.openqa.selenium.WebElement; -import org.openqa.selenium.remote.RemoteWebDriver; -import org.openqa.selenium.support.ui.ExpectedConditions; -import org.openqa.selenium.support.ui.WebDriverWait; - - -public class SynchAbstractTest { - public SauceSession session; - public RemoteWebDriver driver; - - @Rule - public TestName name = new TestName(); - - @Before - public void setup() { - SauceOptions options = new SauceOptions(); - options.setName(name.getMethodName()); - session = new SauceSession(options); - driver = session.start(); - } - - public void click(By locator) { - WebDriverWait wait = new WebDriverWait(driver, 30); - - wait.until(ExpectedConditions.visibilityOfElementLocated(locator)).click(); - } - - public void sendKeys(By locator, String text) { - WebDriverWait wait = new WebDriverWait(driver, 30); - - WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(locator)); - element.clear(); - element.sendKeys(text); - } - - @Test - public void synchronizeAbstract() { - driver.get("http://watir.com/examples/wait.html"); - - click(By.id("add_foobar")); - - try { - click(By.id("foobar")); - session.stop(true); - } catch (ElementNotInteractableException e) { - session.stop(false); - Assert.assertTrue(e.getMessage(), false); - } - } - - @Test - public void fillFormAbstract() { - driver.get("http://watir.com/examples/simple_form.html"); - - sendKeys(By.id("new_user_first_name"), "First"); - sendKeys(By.id("new_user_last_name"), "Last"); - sendKeys(By.id("new_user_email"), "user@example.com"); - click(By.id("submitButton")); - - boolean result = !("http://watir.com/examples/simple_form.html").equals(driver.getCurrentUrl()); - - session.stop(result); - } -} diff --git a/training-sessions/synchronization/src/test/java/SynchExplicitTest.java b/training-sessions/synchronization/src/test/java/SynchExplicitTest.java deleted file mode 100644 index 1c6dccad..00000000 --- a/training-sessions/synchronization/src/test/java/SynchExplicitTest.java +++ /dev/null @@ -1,49 +0,0 @@ -import com.saucelabs.saucebindings.SauceOptions; -import com.saucelabs.saucebindings.SauceSession; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TestName; -import org.openqa.selenium.By; -import org.openqa.selenium.ElementNotInteractableException; -import org.openqa.selenium.WebElement; -import org.openqa.selenium.remote.RemoteWebDriver; -import org.openqa.selenium.support.ui.ExpectedConditions; -import org.openqa.selenium.support.ui.WebDriverWait; - - -public class SynchExplicitTest { - private SauceSession session; - private RemoteWebDriver driver; - - @Rule - public TestName name = new TestName(); - - @Before - public void setup() { - SauceOptions options = new SauceOptions(); - options.setName(name.getMethodName()); - session = new SauceSession(options); - driver = session.start(); - } - - @Test - public void synchronizeExplicit() { - driver.get("http://watir.com/examples/wait.html"); - WebDriverWait wait = new WebDriverWait(driver, 30); - - wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("add_foobar"))); - driver.findElement(By.id("add_foobar")).click(); - - WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("foobar"))); - - try { - element.click(); - session.stop(true); - } catch (ElementNotInteractableException e) { - session.stop(false); - Assert.assertTrue(e.getMessage(), false); - } - } -} diff --git a/training-sessions/synchronization/src/test/java/SynchSalsaVerdeTest.java b/training-sessions/synchronization/src/test/java/SynchSalsaVerdeTest.java deleted file mode 100644 index 111d1a3f..00000000 --- a/training-sessions/synchronization/src/test/java/SynchSalsaVerdeTest.java +++ /dev/null @@ -1,64 +0,0 @@ -import com.saucelabs.salsaverde.Browser; -import com.saucelabs.salsaverde.elements.Element; -import com.saucelabs.salsaverde.exceptions.ElementNotEnabledException; -import com.saucelabs.saucebindings.SauceOptions; -import com.saucelabs.saucebindings.SauceSession; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TestName; -import org.openqa.selenium.By; -import org.openqa.selenium.ElementNotInteractableException; -import org.openqa.selenium.NoSuchElementException; -import org.openqa.selenium.StaleElementReferenceException; -import org.openqa.selenium.remote.RemoteWebDriver; -import org.openqa.selenium.support.ui.ExpectedConditions; -import org.openqa.selenium.support.ui.WebDriverWait; - - -public class SynchSalsaVerdeTest { - public SauceSession session; - public Browser browser; - - @Rule - public TestName name = new TestName(); - - @Before - public void setup() { - SauceOptions options = new SauceOptions(); - options.setName(name.getMethodName()); - session = new SauceSession(options); - RemoteWebDriver driver = session.start(); - browser = new Browser(driver); - } - - @Test - public void synchronizeSalsaVerde() { - browser.goTo("http://watir.com/examples/wait.html"); - - browser.element(By.id("add_foobar")).click(); - - try { - browser.element(By.id("foobar")).click(); - session.stop(true); - } catch (ElementNotInteractableException e) { - session.stop(false); - Assert.assertTrue(e.getMessage(), false); - } - } - - @Test - public void fillFormSalsaVerde() { - browser.goTo("http://watir.com/examples/simple_form.html"); - - browser.element(By.id("new_user_first_name")).setText("First"); - browser.element(By.id("new_user_last_name")).setText("Last"); - browser.element(By.id("new_user_email")).setText("user@example.com"); - browser.element(By.id("submitButton")).click(); - - boolean result = !("http://watir.com/examples/simple_form.html").equals(browser.getCurrentUrl()); - - session.stop(result); - } -} diff --git a/training-sessions/synchronization/src/test/java/data/UserData.java b/training-sessions/synchronization/src/test/java/data/UserData.java deleted file mode 100644 index f49aa78f..00000000 --- a/training-sessions/synchronization/src/test/java/data/UserData.java +++ /dev/null @@ -1,25 +0,0 @@ -package data; - -import com.saucelabs.salsaverde.data.DataObject; -import lombok.Getter; -import lombok.Setter; - -@Getter @Setter -public class UserData extends DataObject { - private String username = faker.name().username(); - private String password = faker.internet().password(); - - public static UserData valid() { - UserData userData = new UserData(); - userData.username = "standard_user"; - userData.password = "secret_sauce"; - return userData; - } - - public static UserData bad() { - UserData userData = new UserData(); - userData.username = "bad_user"; - userData.password = "wrong_password"; - return userData; - } -} diff --git a/training-sessions/synchronization/src/test/java/pages/LoginPage.java b/training-sessions/synchronization/src/test/java/pages/LoginPage.java deleted file mode 100644 index 09a8ef6d..00000000 --- a/training-sessions/synchronization/src/test/java/pages/LoginPage.java +++ /dev/null @@ -1,51 +0,0 @@ -package pages; - -import com.saucelabs.salsaverde.elements.Element; -import com.saucelabs.salsaverde.pages.OnPage; -import com.saucelabs.salsaverde.pages.PageObject; -import data.UserData; -import lombok.SneakyThrows; -import org.openqa.selenium.By; -import org.openqa.selenium.TimeoutException; -import org.openqa.selenium.support.ui.WebDriverWait; - -@OnPage(url="https://www.saucedemo.com/", title="Swag Labs", elements={"usernameField", "passwordField"}) -public class LoginPage extends PageObject { - private final Element usernameField = browser.element(By.id("user-name")); - private final Element passwordField = browser.element(By.id("password")); - private final Element submitButton = browser.element(By.className("btn_action")); - private final Element error = browser.element(By.cssSelector("[data-test=error]")); - - // Opinionated methods allow for synchronization where it matters - @SneakyThrows - public void loginSuccessfully(UserData userData) { - login(userData); - - try { - synchWait().until((page) -> !isOnPage()); - } catch (TimeoutException e) { - throw new TimeoutException("login was unsuccessful; found error message: " + error.getText()); - } - } - - @SneakyThrows - public void loginFailure(UserData userData) { - login(userData); - - try { - synchWait().until((page) -> error.doesExist()); - } catch (TimeoutException e) { - throw new TimeoutException("expected unsuccessful login to show errors, but none were found"); - } - } - - public void login(UserData user) { - usernameField.setText(user.getUsername()); - passwordField.setText(user.getPassword()); - submitButton.click(); - } - - public WebDriverWait synchWait() { - return new WebDriverWait(browser.getDriver(), 30); - } -}