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

View File

@ -1,13 +1,17 @@
# Sample Cucumber test using the SWAGLABS site # Sample Cucumber test using the SWAGLABS site
Feature: Login 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 Scenario Outline: Login to SwagLabs Application with Correct credentials
Given User launched SwagLabs application Given Unauthenticated user is at the SwagLabs login page
When User verify the Page title When User logs in using username "<UserName>" and password "<Password>"
When User logged in the app using username <UserName> and password <Password> Then User can see product "<ProductName>"
Then User verify the product name <ProductName>
Then User logout from the application
Examples: Examples:
| UserName | Password | ProductName | | UserName | Password | ProductName |

View File

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

View File

@ -1,13 +1,12 @@
package org.example.steps; package org.example.steps;
import com.microsoft.playwright.Browser;
import com.microsoft.playwright.BrowserType;
import com.microsoft.playwright.Page; 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.Given;
import io.cucumber.java.en.Then; import io.cucumber.java.en.Then;
import io.cucumber.java.en.When; import io.cucumber.java.en.When;
import org.example.TestContext;
import org.example.pages.Home; import org.example.pages.Home;
import org.example.pages.Login; import org.example.pages.Login;
import org.junit.Assert; import org.junit.Assert;
@ -18,32 +17,51 @@ public class LoginSteps {
TestContext testContext = new TestContext("webkit", true); TestContext testContext = new TestContext("webkit", true);
Page page = testContext.page; Page page = testContext.page;
@Given("User launched SwagLabs application") @Before
public void setUp() { public void setUp() {
page.navigate("https://www.saucedemo.com/");
home = new Home(page); home = new Home(page);
login = new Login(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 //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 ) { public void loginIntoTheApplication(String username,String password ) {
login.loginIntoApplication(username, password); login.loginIntoApplication(username, password);
Assert.assertEquals("hello","hello");
} }
//Verify product name after login //Verify product name after login
@Then("User verify the product name {string}") @Then("User can see product {string}")
public void verifyProductsName(String productname) { public void verifyProductsName(String productname) {
String productName = home.getProductName(); String productName = home.getProductName();
Assert.assertEquals(productName, productname); Assert.assertEquals(productName, productname);
} }
//Logout from application //Logout from application
@Then("User logout from the application") @After
public void logoutFromApplication() { 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.Browser;
import com.microsoft.playwright.BrowserType; import com.microsoft.playwright.BrowserType;
@ -29,5 +29,6 @@ public class TestContext {
} catch (Exception e) { } catch (Exception e) {
System.out.println(e.getMessage()); 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