import { expect, Page } from "@playwright/test"; import Core from '../../../lib/global/global'; // Define the Elements txt_Username: String; pwd_Password: String; btn_Login: String; const core = Core.getInstance(); export default class LoginPage { constructor(private page: Page) { this.page = page; } static Elements = { txt_Username: "//*[contains(@id,'mat-input') and @placeholder='Username']", pwd_Password: "//*[contains(@id,'mat-input') and @placeholder='Password']", btn_Login: "//form//span[contains(text(),'Login')]/parent::button", lbl_ErrorMessage: "//mat-error[contains(@id,'mat-mdc-error')]" } // Static method to return Elements static getObjects() { return this.Elements; } async navigateToLoginPage() { await core.Browser.navigateTo("/login"); await expect(this.page).toHaveTitle("BookCart"); } async enterUserName(user: string) { await this.page.locator(LoginPage.Elements.txt_Username).fill(user); } async enterPassword(Password: string) { await this.page.locator(LoginPage.Elements.pwd_Password).fill(Password); } async clickLoginButton() { await core.Mouse.singleClick(LoginPage.Elements.btn_Login); } getErrorMessage() { return this.page.locator(LoginPage.Elements.lbl_ErrorMessage); } async loginUser(user: string, password: string) { await this.enterUserName(user); await this.enterPassword(password); await this.clickLoginButton(); } }