Created
December 21, 2024 11:23
-
-
Save borodicht/275fe18ea5b1d9dfeadd6ca6631359a6 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package tests; | |
import org.openqa.selenium.WebDriver; | |
import org.openqa.selenium.chrome.ChromeDriver; | |
import org.testng.annotations.AfterMethod; | |
import org.testng.annotations.BeforeMethod; | |
import pages.*; | |
import java.time.Duration; | |
public class BaseTest { | |
WebDriver driver; | |
LoginPage loginPage; | |
ProductsPage productsPage; | |
CartPage cartPage; | |
InfoPage infoPage; | |
OverviewPage overviewPage; | |
CompletePage completePage; | |
@BeforeMethod | |
public void setup() { | |
driver = new ChromeDriver(); | |
driver.manage().window().maximize(); | |
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(20)); | |
loginPage = new LoginPage(driver); | |
productsPage = new ProductsPage(driver); | |
cartPage = new CartPage(driver); | |
infoPage = new InfoPage(driver); | |
overviewPage = new OverviewPage(driver); | |
completePage = new CompletePage(driver); | |
} | |
@AfterMethod(alwaysRun = true) | |
public void close() { | |
driver.quit(); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package pages; | |
import org.openqa.selenium.By; | |
import org.openqa.selenium.WebDriver; | |
public class CartPage { | |
WebDriver driver; | |
By checkoutButton = By.id("checkout"); | |
public CartPage(WebDriver driver) { | |
this.driver = driver; | |
} | |
public InfoPage clickCheckout() { | |
driver.findElement(checkoutButton).click(); | |
return new InfoPage(driver); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package tests; | |
import org.testng.Assert; | |
import org.testng.annotations.Test; | |
public class CheckoutTest extends BaseTest { | |
@Test | |
public void checkoutTest() throws InterruptedException { | |
loginPage.open() | |
.login("standard_user", "secret_sauce") | |
.addToCart("Sauce Labs Fleece Jacket") | |
.addToCart("Sauce Labs Onesie") | |
.clickToCart() | |
.clickCheckout() | |
.writeInfo("Тимофей", "Бородич", "220094") | |
.clickContinue() | |
.clickFinish(); | |
Assert.assertEquals(completePage.getMessage(), "Thank you for your order!"); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package pages; | |
import org.openqa.selenium.By; | |
import org.openqa.selenium.WebDriver; | |
public class CompletePage { | |
WebDriver driver; | |
By message = By.cssSelector(".complete-header"); | |
public CompletePage(WebDriver driver) { | |
this.driver = driver; | |
} | |
public String getMessage() { | |
return driver.findElement(message).getText(); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package pages; | |
import org.openqa.selenium.By; | |
import org.openqa.selenium.WebDriver; | |
public class InfoPage { | |
WebDriver driver; | |
By firstNameField = By.id("first-name"); | |
By lastNameField = By.id("last-name"); | |
By zipCodeField = By.cssSelector("#postal-code"); | |
By continueButton = By.id("continue"); | |
public InfoPage(WebDriver driver) { | |
this.driver = driver; | |
} | |
public InfoPage writeInfo(String firstName, String lastName, String zipCode) { | |
driver.findElement(firstNameField).sendKeys(firstName); | |
driver.findElement(lastNameField).sendKeys(lastName); | |
driver.findElement(zipCodeField).sendKeys(zipCode); | |
return this; | |
} | |
public OverviewPage clickContinue() { | |
driver.findElement(continueButton).click(); | |
return new OverviewPage(driver); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package pages; | |
import org.openqa.selenium.By; | |
import org.openqa.selenium.WebDriver; | |
public class LoginPage { | |
WebDriver driver; | |
By usernameField = By.id("user-name"); | |
By passwordField = By.id("password"); | |
By loginButton = By.id("login-button"); | |
By errorMessage = By.cssSelector("[data-test=error]"); | |
public LoginPage(WebDriver driver) { | |
this.driver = driver; | |
} | |
public LoginPage open() { | |
driver.get("https://www.saucedemo.com/"); | |
return this; | |
} | |
public ProductsPage login(String user, String password) { | |
driver.findElement(usernameField).sendKeys(user); | |
driver.findElement(passwordField).sendKeys(password); | |
driver.findElement(loginButton).click(); | |
return new ProductsPage(driver); | |
} | |
public void loginWithNegativeValue(String user, String password) { | |
driver.findElement(usernameField).sendKeys(user); | |
driver.findElement(passwordField).sendKeys(password); | |
driver.findElement(loginButton).click(); | |
} | |
public String getErrorMessage() { | |
return driver.findElement(errorMessage).getText(); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package tests; | |
import org.openqa.selenium.By; | |
import org.testng.Assert; | |
import org.testng.annotations.Test; | |
public class LoginTest extends BaseTest { | |
@Test | |
public void checkPositiveLogin() { | |
loginPage.open(); | |
loginPage.login("standard_user", "secret_sauce"); | |
Assert.assertTrue(productsPage.isPageOpened()); | |
} | |
@Test | |
public void checkLoginWithEmptyUsername() { | |
loginPage.open(); | |
loginPage.loginWithNegativeValue("", "secret_sauce"); | |
Assert.assertEquals(loginPage.getErrorMessage(), "Epic sadface: Username is required"); | |
} | |
@Test | |
public void checkLoginWithEmptyPassword() { | |
loginPage.open(); | |
loginPage.loginWithNegativeValue("standard_user", ""); | |
Assert.assertEquals(loginPage.getErrorMessage(), "Epic sadface: Password is required"); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package pages; | |
import org.openqa.selenium.By; | |
import org.openqa.selenium.WebDriver; | |
public class OverviewPage { | |
WebDriver driver; | |
By finishButton = By.id("finish"); | |
public OverviewPage(WebDriver driver) { | |
this.driver = driver; | |
} | |
public CompletePage clickFinish() { | |
driver.findElement(finishButton).click(); | |
return new CompletePage(driver); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package pages; | |
import org.openqa.selenium.By; | |
import org.openqa.selenium.WebDriver; | |
public class ProductsPage { | |
WebDriver driver; | |
By title = By.cssSelector("[data-test=title]"); | |
By cart = By.cssSelector(".shopping_cart_link"); | |
String productAddCart = "//div[text()='%s']//ancestor::div[@class='inventory_item']//button"; | |
public ProductsPage(WebDriver driver) { | |
this.driver = driver; | |
} | |
public boolean isPageOpened() { | |
return driver.findElement(title).isDisplayed(); | |
} | |
public ProductsPage addToCart (String product) { | |
driver.findElement(By.xpath(String.format(productAddCart, product))).click(); | |
return this; | |
} | |
public CartPage clickToCart() { | |
driver.findElement(cart).click(); | |
return new CartPage(driver); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment