diff --git a/fixtures/errors.js b/fixtures/errors.js new file mode 100644 index 0000000..a03e7da --- /dev/null +++ b/fixtures/errors.js @@ -0,0 +1,12 @@ +module.exports={ + 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", + 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 994c7f1..94e3ffb 100644 --- a/tests/login.spec.js +++ b/tests/login.spec.js @@ -1,29 +1,36 @@ const { test, expect } = require('@playwright/test'); const { LoginPage } = require('../pageObjects/LoginPage'); -const { validUser, emptyUser, invalidUser } = require('../fixtures/userData'); +const { validUser, emptyUser, invalidUser, emptyPassword, lockedUser } = require('../fixtures/userData'); const { DashboardPage } = require('../pageObjects/DashboardPage'); +const {LOGIN, INVENTORY} = 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(page).toHaveURL(/inventory.html/); + await expect(dashboard.title).toHaveText(INVENTORY.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(LOGIN.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(LOGIN.INVALID_LOGIN); +}) +test('Empty Password should show required error',async({page})=>{ + await loginPage.login(emptyPassword.username,emptyPassword.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