first example using saucelabs swag shop example
This commit is contained in:
parent
d5490c9133
commit
8d743d9fa9
21
pom.xml
21
pom.xml
@ -39,14 +39,7 @@
|
|||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|
||||||
<!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-suite -->
|
<!-- *********************************** JUNIT5 **************************** -->
|
||||||
<dependency>
|
|
||||||
<groupId>org.junit.platform</groupId>
|
|
||||||
<artifactId>junit-platform-suite</artifactId>
|
|
||||||
<version>1.9.2</version>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
|
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.junit.jupiter</groupId>
|
<groupId>org.junit.jupiter</groupId>
|
||||||
@ -55,6 +48,7 @@
|
|||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- *************************** PLAYWRIGHT **************************** -->
|
||||||
<!-- https://mvnrepository.com/artifact/com.microsoft.playwright/playwright -->
|
<!-- https://mvnrepository.com/artifact/com.microsoft.playwright/playwright -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.microsoft.playwright</groupId>
|
<groupId>com.microsoft.playwright</groupId>
|
||||||
@ -83,13 +77,22 @@
|
|||||||
<version>1.29.0</version>
|
<version>1.29.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- *********************** CUCUMBER ******************************* -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.cucumber</groupId>
|
<groupId>io.cucumber</groupId>
|
||||||
<artifactId>cucumber-java</artifactId>
|
<artifactId>cucumber-java</artifactId>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-junit -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.cucumber</groupId>
|
||||||
|
<artifactId>cucumber-junit</artifactId>
|
||||||
|
<version>7.11.0</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.cucumber</groupId>
|
<groupId>io.cucumber</groupId>
|
||||||
<artifactId>cucumber-junit-platform-engine</artifactId>
|
<artifactId>cucumber-junit-platform-engine</artifactId>
|
||||||
|
18
src/main/java/org/example/pages/Home.java
Normal file
18
src/main/java/org/example/pages/Home.java
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
package org.example.pages;
|
||||||
|
|
||||||
|
import com.microsoft.playwright.Page;
|
||||||
|
|
||||||
|
public class Home {
|
||||||
|
|
||||||
|
Page page;
|
||||||
|
|
||||||
|
String productName_1 ="id=item_4_title_link";
|
||||||
|
|
||||||
|
public Home(Page page) {
|
||||||
|
this.page =page;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getProductName() {
|
||||||
|
return page.textContent(productName_1);
|
||||||
|
}
|
||||||
|
}
|
46
src/main/java/org/example/pages/Login.java
Normal file
46
src/main/java/org/example/pages/Login.java
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
package org.example.pages;
|
||||||
|
|
||||||
|
import com.microsoft.playwright.Page;
|
||||||
|
|
||||||
|
public class Login {
|
||||||
|
|
||||||
|
Page page;
|
||||||
|
|
||||||
|
// Locator strings for use in playwright
|
||||||
|
String username = "id=user-name";
|
||||||
|
String password = "id=password";
|
||||||
|
String clickLogin = "id=login-button";
|
||||||
|
String clickHamburger = "id=react-burger-menu-btn";
|
||||||
|
String clickLogout = "id=logout_sidebar_link";
|
||||||
|
|
||||||
|
public Login(Page page) {
|
||||||
|
this.page = page;
|
||||||
|
|
||||||
|
}public String verifyTitle() {
|
||||||
|
return page.title();}
|
||||||
|
|
||||||
|
public void loginIntoApplication(String email, String pass) {
|
||||||
|
enterUserName(email);
|
||||||
|
enterPassword(pass);
|
||||||
|
clickLoginButton();}
|
||||||
|
|
||||||
|
public void logoutApplication() {
|
||||||
|
clickOnHamburger();
|
||||||
|
clickOnLogout(); } // Logout from the application
|
||||||
|
|
||||||
|
public void enterUserName(String email) {
|
||||||
|
page.fill(username, email);}
|
||||||
|
|
||||||
|
public void enterPassword(String pass) {
|
||||||
|
page.fill(password, pass);}
|
||||||
|
|
||||||
|
public void clickLoginButton() {
|
||||||
|
page.click(clickLogin);}
|
||||||
|
|
||||||
|
public void clickOnHamburger() {
|
||||||
|
page.click(clickHamburger);
|
||||||
|
|
||||||
|
}
|
||||||
|
public void clickOnLogout() {
|
||||||
|
page.click(clickLogout);}
|
||||||
|
}
|
33
src/test/java/org/example/TestContext.java
Normal file
33
src/test/java/org/example/TestContext.java
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
package org.example;
|
||||||
|
|
||||||
|
import com.microsoft.playwright.Browser;
|
||||||
|
import com.microsoft.playwright.BrowserType;
|
||||||
|
import com.microsoft.playwright.Page;
|
||||||
|
import com.microsoft.playwright.Playwright;
|
||||||
|
|
||||||
|
public class TestContext {
|
||||||
|
public Playwright playwright = Playwright.create();
|
||||||
|
public Browser browser;
|
||||||
|
public Page page;
|
||||||
|
/***
|
||||||
|
* TestContext returns the Playwright browser driver, and a page for executing steps
|
||||||
|
* @param driver: a string indiciating the kind of browser you want
|
||||||
|
* @param headless: a boolean indicating whether you'd like the browser headless or not
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public TestContext(String driver, boolean headless){
|
||||||
|
try {
|
||||||
|
switch (driver) {
|
||||||
|
case "webkit": browser =
|
||||||
|
playwright.webkit().launch(new BrowserType.LaunchOptions().setHeadless(headless));
|
||||||
|
case "chromium": browser =
|
||||||
|
playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(headless));
|
||||||
|
case "firefox": browser = playwright.firefox().launch(new BrowserType.LaunchOptions().setHeadless(headless));
|
||||||
|
default: browser = playwright.webkit().launch();
|
||||||
|
}
|
||||||
|
page = browser.newPage();
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
15
src/test/java/org/example/features/login.feature
Normal file
15
src/test/java/org/example/features/login.feature
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# Sample Cucumber test using the SWAGLABS site
|
||||||
|
|
||||||
|
Feature: Login
|
||||||
|
|
||||||
|
Scenario Outline: Login to SwagLabs Application with Correct credentials
|
||||||
|
Given User launched SwagLabs application
|
||||||
|
When User verify the Page title
|
||||||
|
When User logged in the app using username “<UserName>” and password “<Password>”
|
||||||
|
Then User verify the product name “<ProductName>”
|
||||||
|
Then User logout from the application
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
| UserName | Password | ProductName |
|
||||||
|
| standard_user | secret_sauce | Sauce Labs Backpack |
|
||||||
|
|
14
src/test/java/org/example/runner/DemoRunner.java
Normal file
14
src/test/java/org/example/runner/DemoRunner.java
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
package org.example.runner;
|
||||||
|
|
||||||
|
import io.cucumber.junit.Cucumber;
|
||||||
|
import io.cucumber.junit.CucumberOptions;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
|
@RunWith(Cucumber.class)
|
||||||
|
@CucumberOptions(
|
||||||
|
features = "src/test/java/org/example/features/",
|
||||||
|
glue = {"steps"},
|
||||||
|
plugin = {"pretty"})
|
||||||
|
public class DemoRunner {
|
||||||
|
|
||||||
|
}
|
49
src/test/java/org/example/steps/LoginSteps.java
Normal file
49
src/test/java/org/example/steps/LoginSteps.java
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
package org.example.steps;
|
||||||
|
|
||||||
|
import com.microsoft.playwright.Browser;
|
||||||
|
import com.microsoft.playwright.BrowserType;
|
||||||
|
import com.microsoft.playwright.Page;
|
||||||
|
import com.microsoft.playwright.Playwright;
|
||||||
|
import io.cucumber.java.en.Given;
|
||||||
|
import io.cucumber.java.en.Then;
|
||||||
|
import io.cucumber.java.en.When;
|
||||||
|
import org.example.TestContext;
|
||||||
|
import org.example.pages.Home;
|
||||||
|
import org.example.pages.Login;
|
||||||
|
import org.junit.Assert;
|
||||||
|
|
||||||
|
public class LoginSteps {
|
||||||
|
Login login;
|
||||||
|
Home home;
|
||||||
|
TestContext testContext = new TestContext("webkit", true);
|
||||||
|
Page page = testContext.page;
|
||||||
|
|
||||||
|
@Given("User launched SwagLabs application")
|
||||||
|
public void setUp() {
|
||||||
|
page.navigate("https://www.saucedemo.com/");
|
||||||
|
home = new Home(page);
|
||||||
|
login = new Login(page);
|
||||||
|
}
|
||||||
|
@When("User verify the Page title")
|
||||||
|
public void verifyPageTitle() {
|
||||||
|
String title = login.verifyTitle();
|
||||||
|
Assert.assertEquals(title, "Swag Labs");
|
||||||
|
|
||||||
|
}
|
||||||
|
//Login into the application
|
||||||
|
@When("User logged in the app using username {string} and password {string}")
|
||||||
|
public void loginIntoTheApplication(String username,String password ) {
|
||||||
|
login.loginIntoApplication(username, password);
|
||||||
|
}
|
||||||
|
//Verify product name after login
|
||||||
|
@Then("User verify the product name {string}")
|
||||||
|
public void verifyProductsName(String productname) {
|
||||||
|
String productName = home.getProductName();
|
||||||
|
Assert.assertEquals(productName, productname);
|
||||||
|
|
||||||
|
}
|
||||||
|
//Logout from application
|
||||||
|
@Then("User logout from the application")
|
||||||
|
public void logoutFromApplication() {
|
||||||
|
login.logoutApplication();}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user