import { expect, Page } from "@playwright/test"; import Core from '../../../lib/global/global'; const core = Core.getInstance(); export default class RegisterPage { constructor(private page: Page) { } static Elements = { txt_FirstName: "//input[@formcontrolname='firstName']", txt_LastName: "//input[@formcontrolname='lastName']", txt_UserName: "//input[@formcontrolname='userName']", pwd_Password: "//input[@formcontrolname='password']", pwd_ConfirmPassword: "//input[@formcontrolname='confirmPassword']", opt_MaleInput: "//input[@value='Male']", opt_FemaleInput: "//input[@value='Female']", btn_Register: "//span[text()='Register']/parent::button" } // Static method to return Elements static getObjects() { return this.Elements; } async navigateToRegisterPage() { await core.Browser.navigateTo("https://bookcart.azurewebsites.net/register") // await this.base.goto("https://bookcart.azurewebsites.net/register") } async registerUser(firstname: string, lastname: string, userName: string, password: string, confirmPassword: string, gender: string) { await this.page.type(RegisterPage.Elements.txt_FirstName, firstname); await this.page.type(RegisterPage.Elements.txt_LastName, lastname); // this must be unique always await this.enterUsername(userName); await this.page.type(RegisterPage.Elements.pwd_Password, password); await this.page.type(RegisterPage.Elements.pwd_ConfirmPassword, confirmPassword); if (gender == "m") { await this.page.click(RegisterPage.Elements.opt_MaleInput); await expect(this.page.locator(RegisterPage.Elements.opt_MaleInput)).toBeChecked(); } else { await this.page.click(RegisterPage.Elements.opt_FemaleInput); await expect(this.page.locator(RegisterPage.Elements.opt_FemaleInput)).toBeChecked(); } const regBtn = this.page.locator(RegisterPage.Elements.btn_Register); await regBtn.click(); } async enterUsername(userName: string) { await this.page.type(RegisterPage.Elements.txt_UserName, userName); const [response] = await Promise.all([ this.page.waitForResponse(res => { return res.status() == 200 && res.url() == `https://bookcart.azurewebsites.net/api/user/validateUserName/${userName}` }) ]); await response.finished(); } }