From 94f9ac8428ce51f5874248b91c288ed6ac7c4d0c Mon Sep 17 00:00:00 2001 From: Jenish Date: Sun, 21 Sep 2025 13:20:16 +0545 Subject: [PATCH 1/2] added error message file --- fixtures/errors.js | 6 ++++++ tests/login.spec.js | 31 +++++++++++++++++-------------- 2 files changed, 23 insertions(+), 14 deletions(-) create mode 100644 fixtures/errors.js diff --git a/fixtures/errors.js b/fixtures/errors.js new file mode 100644 index 0000000..77d4d33 --- /dev/null +++ b/fixtures/errors.js @@ -0,0 +1,6 @@ +module.exports={ + TITLE_VALIDATION: "Products", + EMPTY_USER: "Epic sadface: Username is required", + INVALID_LOGIN: "Epic sadface: Username and password do not match any user in this service", + EMPTY_PASSWORD: "Epic sadface: Password is required", +} \ No newline at end of file diff --git a/tests/login.spec.js b/tests/login.spec.js index 994c7f1..c383607 100644 --- a/tests/login.spec.js +++ b/tests/login.spec.js @@ -1,29 +1,32 @@ const { test, expect } = require('@playwright/test'); const { LoginPage } = require('../pageObjects/LoginPage'); -const { validUser, emptyUser, invalidUser } = require('../fixtures/userData'); +const { validUser, emptyUser, invalidUser, emptyPassword } = require('../fixtures/userData'); const { DashboardPage } = require('../pageObjects/DashboardPage'); +const { TITLE_VALIDATON, EMPTY_USER, INVALID_LOGIN, EMPTY_PASSWORD, TITLE_VALIDATION } = require('../fixtures/errors'); + +test.describe('Login Functionality Tests', ()=>{ + let loginPage,dashboard -test.describe('Testing Login Funcationality', ()=>{ - test.beforeEach(async ({page})=>{ - const loginPage = new LoginPage(page); + loginPage = new LoginPage(page); + dashboard = new DashboardPage(page); await loginPage.goto(); }); -test('Valid user should log in successfully', async ({ page }) => { - const loginPage = new LoginPage(page); - const dashboard = new DashboardPage(page); +test('Valid user should log in successfully', async ({ page }) => { await loginPage.login(validUser.username, validUser.password); - await expect(dashboard.title).toHaveText('Products'); + await expect(dashboard.title).toHaveText(TITLE_VALIDATION); }) -test('Testing empty user', async ({page})=>{ - const loginPage = new LoginPage(page); +test('Empty username should show required error', async ({page})=>{ await loginPage.login(emptyUser.username, emptyUser.password); - await expect(loginPage.errorMessage).toHaveText('Epic sadface: Username is required'); + await expect(loginPage.errorMessage).toHaveText(EMPTY_USER); }) -test('Invalid Login', async ({page})=>{ - const loginPage = new LoginPage(page); +test('Invalid Login should show error message', async ({page})=>{ await loginPage.login(invalidUser.username, invalidUser.password); - await expect(loginPage.errorMessage).toHaveText('Epic sadface: Username and password do not match any user in this service'); + await expect(loginPage.errorMessage).toHaveText(INVALID_LOGIN); +}) +test('Empty Password should show required error',async({page})=>{ + await loginPage.login(emptyPassword.username,emptyPassword.password) + await expect(loginPage.errorMessage).toHaveText(EMPTY_PASSWORD); }) }) \ No newline at end of file From 5979ce4c41fbd16732d03cdc14d277f837d61e3e Mon Sep 17 00:00:00 2001 From: Jenish Date: Mon, 22 Sep 2025 10:13:32 +0545 Subject: [PATCH 2/2] added error, userdata and fix login --- fixtures/errors.js | 10 ++++++++-- fixtures/userData.js | 3 ++- tests/login.spec.js | 18 +++++++++++------- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/fixtures/errors.js b/fixtures/errors.js index 77d4d33..a03e7da 100644 --- a/fixtures/errors.js +++ b/fixtures/errors.js @@ -1,6 +1,12 @@ module.exports={ - TITLE_VALIDATION: "Products", + LOGIN:{ EMPTY_USER: "Epic sadface: Username is required", INVALID_LOGIN: "Epic sadface: Username and password do not match any user in this service", EMPTY_PASSWORD: "Epic sadface: Password is required", -} \ No newline at end of file + LOCKED_USER:"Epic sadface: Sorry, this user has been locked out.", + }, + + INVENTORY:{ + TITLE_VALIDATION: "Products", + } +}; \ No newline at end of file diff --git a/fixtures/userData.js b/fixtures/userData.js index 5472827..8b544a8 100644 --- a/fixtures/userData.js +++ b/fixtures/userData.js @@ -2,5 +2,6 @@ module.exports={ validUser: { username: 'standard_user', password: 'secret_sauce'}, emptyUser: {username: '', password: ''}, invalidUser: {username: 'error-user', password: 'password'}, - emptyPassword: {username:'standard_user', password: ''} + emptyPassword: {username:'standard_user', password: ''}, + lockedUser:{username:'locked_out_user',password:'secret_sauce'} } \ No newline at end of file diff --git a/tests/login.spec.js b/tests/login.spec.js index c383607..94e3ffb 100644 --- a/tests/login.spec.js +++ b/tests/login.spec.js @@ -1,10 +1,9 @@ const { test, expect } = require('@playwright/test'); const { LoginPage } = require('../pageObjects/LoginPage'); -const { validUser, emptyUser, invalidUser, emptyPassword } = require('../fixtures/userData'); +const { validUser, emptyUser, invalidUser, emptyPassword, lockedUser } = require('../fixtures/userData'); const { DashboardPage } = require('../pageObjects/DashboardPage'); -const { TITLE_VALIDATON, EMPTY_USER, INVALID_LOGIN, EMPTY_PASSWORD, TITLE_VALIDATION } = require('../fixtures/errors'); - +const {LOGIN, INVENTORY} = require('../fixtures/errors'); test.describe('Login Functionality Tests', ()=>{ let loginPage,dashboard @@ -15,18 +14,23 @@ test.describe('Login Functionality Tests', ()=>{ }); test('Valid user should log in successfully', async ({ page }) => { await loginPage.login(validUser.username, validUser.password); - await expect(dashboard.title).toHaveText(TITLE_VALIDATION); + await expect(page).toHaveURL(/inventory.html/); + await expect(dashboard.title).toHaveText(INVENTORY.TITLE_VALIDATION); }) test('Empty username should show required error', async ({page})=>{ await loginPage.login(emptyUser.username, emptyUser.password); - await expect(loginPage.errorMessage).toHaveText(EMPTY_USER); + await expect(loginPage.errorMessage).toHaveText(LOGIN.EMPTY_USER); }) test('Invalid Login should show error message', async ({page})=>{ await loginPage.login(invalidUser.username, invalidUser.password); - await expect(loginPage.errorMessage).toHaveText(INVALID_LOGIN); + await expect(loginPage.errorMessage).toHaveText(LOGIN.INVALID_LOGIN); }) test('Empty Password should show required error',async({page})=>{ await loginPage.login(emptyPassword.username,emptyPassword.password) - await expect(loginPage.errorMessage).toHaveText(EMPTY_PASSWORD); + await expect(loginPage.errorMessage).toHaveText(LOGIN.EMPTY_PASSWORD); +}) +test('Locked out user shouldnt log in',async({page})=>{ + await loginPage.login(lockedUser.username,lockedUser.password) + await expect(loginPage.errorMessage).toHaveText(LOGIN.LOCKED_USER) }) }) \ No newline at end of file