Files
myeasycms-v2/apps/e2e/tests/authentication/auth.po.ts
giancarlo be82e6b342 Refactor tests and update turbo.json configuration
Removed unnecessary response wait in `auth.po.ts` and a redundant output property in `turbo.json`. The code is now simpler with less redundancy, which makes it easier to read and maintain. Removed files are either not used or not necessary for the project to behave as expected.
2024-04-12 21:42:32 +08:00

79 lines
1.9 KiB
TypeScript

import { expect, Page } from '@playwright/test';
import { Mailbox } from '../utils/mailbox';
export class AuthPageObject {
private readonly page: Page;
private readonly mailbox: Mailbox;
constructor(page: Page) {
this.page = page;
this.mailbox = new Mailbox(page);
}
goToSignIn() {
return this.page.goto('/auth/sign-in', {
waitUntil: 'networkidle',
});
}
goToSignUp() {
return this.page.goto('/auth/sign-up', {
waitUntil: 'networkidle',
});
}
async signOut() {
await this.page.click('[data-test="account-dropdown-trigger"]');
await this.page.click('[data-test="account-dropdown-sign-out"]');
}
async signIn(params: {
email: string,
password: string
}) {
await this.page.fill('input[name="email"]', params.email);
await this.page.fill('input[name="password"]', params.password);
await this.page.click('button[type="submit"]');
}
async signUp(params: {
email: string,
password: string,
repeatPassword: string
}) {
await this.page.fill('input[name="email"]', params.email);
await this.page.fill('input[name="password"]', params.password);
await this.page.fill('input[name="repeatPassword"]', params.repeatPassword);
await this.page.click('button[type="submit"]');
}
async visitConfirmEmailLink(email: string) {
return expect(async() => {
const res = await this.mailbox.visitMailbox(email);
expect(res).not.toBeNull();
}).toPass();
}
createRandomEmail() {
const value = Math.random() * 10000000000;
return `${value.toFixed(0)}@makerkit.dev`;
}
async signUpFlow(path: string) {
const email = this.createRandomEmail();
await this.page.goto(`/auth/sign-up?next=${path}`, {
waitUntil: 'networkidle',
});
await this.signUp({
email,
password: 'password',
repeatPassword: 'password',
});
await this.visitConfirmEmailLink(email);
}
}