completed first demo test

This commit is contained in:
Greg Gauthier 2023-01-26 11:14:19 +00:00
parent 8d743d9fa9
commit 9a98767b67
7 changed files with 65 additions and 26 deletions

View File

@ -1,5 +1,6 @@
package org.example.pages;
import com.microsoft.playwright.Locator;
import com.microsoft.playwright.Page;
public class Login {
@ -15,9 +16,18 @@ public class Login {
public Login(Page page) {
this.page = page;
}
public String title() {
return page.title();
}
}public String verifyTitle() {
return page.title();}
public Locator usernameField() {
return page.locator("//*[@id=\"user-name\"]");
}
public Locator passwordField() {
return page.locator("//*[@id=\"password\"]");
}
public void loginIntoApplication(String email, String pass) {
enterUserName(email);
@ -26,7 +36,7 @@ public class Login {
public void logoutApplication() {
clickOnHamburger();
clickOnLogout(); } // Logout from the application
clickOnLogout(); }
public void enterUserName(String email) {
page.fill(username, email);}

View File

@ -1,13 +1,17 @@
# Sample Cucumber test using the SWAGLABS site
Feature: Login
Description: Demonstration of cucumber with Junit, and Playwright
Background:
Given User has a functional browser
When User navigates to the Swaglabs site
Then User can see the SwagLabs login page
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
Given Unauthenticated user is at the SwagLabs login page
When User logs in using username "<UserName>" and password "<Password>"
Then User can see product "<ProductName>"
Examples:
| UserName | Password | ProductName |

View File

@ -7,8 +7,10 @@ import org.junit.runner.RunWith;
@RunWith(Cucumber.class)
@CucumberOptions(
features = "src/test/java/org/example/features/",
glue = {"steps"},
plugin = {"pretty"})
glue = {"org.example.steps"},
plugin = {"pretty"},
publish = true
)
public class DemoRunner {
}

View File

@ -1,13 +1,12 @@
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.AfterAll;
import io.cucumber.java.Before;
import io.cucumber.java.After;
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;
@ -18,32 +17,51 @@ public class LoginSteps {
TestContext testContext = new TestContext("webkit", true);
Page page = testContext.page;
@Given("User launched SwagLabs application")
@Before
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");
@Given("User has a functional browser")
public void userHasAFunctionalBrowser() {
Assert.assertEquals("webkit", testContext.browser.browserType().name());
}
@Then("User can see the SwagLabs login page")
public void userCanSeeTheSwagLabsLoginPage() {
Assert.assertTrue(login.usernameField().isVisible() && login.usernameField().isEditable());
Assert.assertTrue(login.passwordField().isVisible() && login.passwordField().isEditable());
}
@Given("User navigates to the Swaglabs site")
public void userNavigatesToSwagLabs() {
page.navigate("https://www.saucedemo.com/");
Assert.assertEquals(login.title(), "Swag Labs");
}
@Given("Unauthenticated user is at the SwagLabs login page")
public void verifyLoginPage() {
Assert.assertTrue(login.usernameField().isVisible() && login.usernameField().isEditable());
Assert.assertTrue(login.passwordField().isVisible() && login.passwordField().isEditable());
}
//Login into the application
@When("User logged in the app using username {string} and password {string}")
@When("User logs in using username {string} and password {string}")
public void loginIntoTheApplication(String username,String password ) {
login.loginIntoApplication(username, password);
Assert.assertEquals("hello","hello");
}
//Verify product name after login
@Then("User verify the product name {string}")
@Then("User can see product {string}")
public void verifyProductsName(String productname) {
String productName = home.getProductName();
Assert.assertEquals(productName, productname);
}
//Logout from application
@Then("User logout from the application")
@After
public void logoutFromApplication() {
login.logoutApplication();}
login.logoutApplication();
}
}

View File

@ -1,4 +1,4 @@
package org.example;
package org.example.steps;
import com.microsoft.playwright.Browser;
import com.microsoft.playwright.BrowserType;
@ -29,5 +29,6 @@ public class TestContext {
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}

View File

@ -0,0 +1,2 @@
cucumber.publish.enabled=true
cucumber.publish.quiet=true

View File

@ -0,0 +1,2 @@
cucumber.publish.enabled=true
cucumber.publish.quiet=true