Files
myeasycms-v2/apps/e2e/tests/account/account.po.ts
Giancarlo Buomprisco fa2fa9a15c chore: improve invitation flow, update project dependencies and documentation for Next.js 16 (#408)
* chore: update project dependencies and documentation for Next.js 16

- Upgraded Next.js from version 15 to 16 across various documentation files and components.
- Updated references to Next.js 16 in AGENTS.md and CLAUDE.md for consistency.
- Incremented application version to 2.21.0 in package.json.
- Refactored identity setup components to improve user experience and added confirmation dialogs for authentication methods.
- Enhanced invitation flow with new logic for handling user redirection and token generation.

* refactor: streamline invitation flow in e2e tests

- Simplified the invitation flow test by using a predefined email instead of generating a random one.
- Removed unnecessary steps such as clearing cookies and reloading the page before user sign-up.
- Enhanced clarity by eliminating commented-out code related to identity verification and user membership checks.

* refactor: improve code readability in IdentitiesPage and UpdatePasswordForm components

- Enhanced formatting of JSX elements in IdentitiesPage and UpdatePasswordForm for better readability.
- Adjusted indentation and line breaks to maintain consistent coding style across components.

* refactor: enhance LinkAccountsList component with user redirection logic

- Updated the LinkAccountsList component to include a redirectToPath option in the useLinkIdentityWithProvider hook for improved user experience.
- Removed redundant user hook declaration to streamline the code structure.

* refactor: update account setup logic in JoinTeamAccountPage

- Introduced a check for email-only authentication support to streamline account setup requirements.
- Adjusted the conditions for determining if a new account should set up additional authentication methods, enhancing user experience for new users.
2025-11-05 11:39:08 +07:00

78 lines
2.0 KiB
TypeScript

import { Page, expect } from '@playwright/test';
import { AuthPageObject } from '../authentication/auth.po';
import { OtpPo } from '../utils/otp.po';
export class AccountPageObject {
private readonly page: Page;
public auth: AuthPageObject;
private otp: OtpPo;
constructor(page: Page) {
this.page = page;
this.auth = new AuthPageObject(page);
this.otp = new OtpPo(page);
}
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,
);
const click = this.page.click('[data-test="account-email-form"] button');
const req = await this.page
.waitForResponse((resp) => {
return resp.url().includes('auth/v1/user');
})
.then((response) => {
expect(response.status()).toBe(200);
});
return Promise.all([click, req]);
}).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="identity-form"] button');
}
async deleteAccount(email: string) {
// Click the delete account button to open the modal
await this.page.click('[data-test="delete-account-button"]');
// Complete the OTP verification process
await this.otp.completeOtpVerification(email);
await this.page.waitForTimeout(500);
await this.page.click('[data-test="confirm-delete-account-button"]');
}
getProfileName() {
return this.page.locator('[data-test="account-dropdown-display-name"]');
}
}