Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions fixtures/errors.js
Original file line number Diff line number Diff line change
@@ -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",
}
};
3 changes: 2 additions & 1 deletion fixtures/userData.js
Original file line number Diff line number Diff line change
Expand Up @@ -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'}
}
35 changes: 21 additions & 14 deletions tests/login.spec.js
Original file line number Diff line number Diff line change
@@ -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)
})
})