diff --git a/fixtures/userData.js b/fixtures/userData.js new file mode 100644 index 0000000..c899cdc --- /dev/null +++ b/fixtures/userData.js @@ -0,0 +1,3 @@ +module.exports={ + validUser: { username: 'standard_user', password: 'secret_sauce'} +} \ No newline at end of file diff --git a/pageObjects/LoginPage.js b/pageObjects/LoginPage.js new file mode 100644 index 0000000..080a339 --- /dev/null +++ b/pageObjects/LoginPage.js @@ -0,0 +1,20 @@ +class LoginPage{ + constructor (page){ + this.page = page; + this.usernameInput = 'input[name="user-name"]'; + this.passwordInput = 'input[name="password"]'; + this.submitButton = '[data-test="login-button"]'; + } + + async goto(){ + await this.page.goto('https://www.saucedemo.com/'); + } + + async login(username,password){ + await this.page.fill(this.usernameInput,username); + await this.page.fill(this.passwordInput,password); + await this.page.click(this.submitButton); + } +} + +module.exports ={ LoginPage}; \ No newline at end of file diff --git a/tests/login.spec.js b/tests/login.spec.js new file mode 100644 index 0000000..678c8ec --- /dev/null +++ b/tests/login.spec.js @@ -0,0 +1,11 @@ + +const { test, expect } = require('@playwright/test'); +const { LoginPage } = require('../pageObjects/LoginPage'); +const { validUser } = require('../fixtures/userData'); + +test('Valid user should log in successfully', async ({ page }) => { + const loginPage = new LoginPage(page); + await loginPage.goto(); + await loginPage.login(validUser.username, validUser.password); + await expect(page).toHaveURL(/inventory/); +});