Files
myeasycms-v2/apps/e2e/tests/account/account.po.ts
giancarlo b8f00f0a2d Refactor E2E tests, update utils, and modify plan-picker validation
Several changes have been made to optimize the testing and validation workflows. The end-to-end tests for user billing, invitations, account, team billing, and team accounts have been retouched for improved performance and better accuracy. There has been a minor modification in the validation rules for plan-picker in the billing component. Furthermore, modifications are made to several utility functions to fine-tune their operations.
2024-05-05 18:15:11 +07:00

81 lines
2.1 KiB
TypeScript

import { Page, expect } from '@playwright/test';
import { AuthPageObject } from '../authentication/auth.po';
export class AccountPageObject {
private readonly page: Page;
public auth: AuthPageObject;
constructor(page: Page) {
this.page = page;
this.auth = new AuthPageObject(page);
}
async setup() {
return this.auth.signUpFlow('/home/settings');
}
async updateName(name: string) {
await this.page.fill('[data-test="update-account-name-form"] input', name);
await this.page.click('[data-test="update-account-name-form"] button');
}
async updateEmail(email: string) {
await expect(async () => {
await this.page.fill(
'[data-test="account-email-form-email-input"]',
email,
);
await this.page.fill(
'[data-test="account-email-form-repeat-email-input"]',
email,
);
await this.page.click('[data-test="account-email-form"] button');
const req = await this.page.waitForResponse((resp) => {
return resp.url().includes('auth/v1/user');
});
expect(req.status()).toBe(200);
}).toPass();
}
async updatePassword(password: string) {
await this.page.fill(
'[data-test="account-password-form-password-input"]',
password,
);
await this.page.fill(
'[data-test="account-password-form-repeat-password-input"]',
password,
);
await this.page.click('[data-test="account-password-form"] button');
}
async deleteAccount() {
await expect(async () => {
await this.page.click('[data-test="delete-account-button"]');
await this.page.fill(
'[data-test="delete-account-input-field"]',
'DELETE',
);
await this.page.click('[data-test="confirm-delete-account-button"]');
const response = await this.page.waitForResponse((resp) => {
return (
resp.url().includes('home/settings') &&
resp.request().method() === 'POST'
);
});
expect(response.status()).toBe(204);
}).toPass();
}
getProfileName() {
return this.page.locator('[data-test="account-dropdown-display-name"]');
}
}