Changes include updating the user and team billing specs to increase visibility timeout and alter navigation route post-billing. Minor adjustments have been made to the page aesthetics and redirection logic. Also, refactored import statements for code organization purposes. Changes in the build script are also reflected in the commit.
78 lines
2.3 KiB
TypeScript
78 lines
2.3 KiB
TypeScript
import { expect, Page } from '@playwright/test';
|
|
import { AuthPageObject } from '../authentication/auth.po';
|
|
|
|
export class TeamAccountsPageObject {
|
|
private readonly page: Page;
|
|
public auth: AuthPageObject;
|
|
|
|
constructor(page: Page) {
|
|
this.page = page;
|
|
this.auth = new AuthPageObject(page);
|
|
}
|
|
|
|
async setup(params = this.createTeamName()) {
|
|
await this.auth.signUpFlow('/home');
|
|
await this.createTeam(params);
|
|
}
|
|
|
|
async getTeamFromSelector(teamSlug: string) {
|
|
await this.openAccountsSelector();
|
|
|
|
return this.page.locator(`[data-test="account-selector-team"][data-value="${teamSlug}"]`);
|
|
}
|
|
|
|
async selectAccount(teamName: string) {
|
|
await this.page.click(`[data-test="account-selector-team"][data-name="${teamName}"]`);
|
|
}
|
|
|
|
async getTeams() {
|
|
await this.openAccountsSelector();
|
|
|
|
return this.page.locator('[data-test="account-selector-team"]');
|
|
}
|
|
|
|
goToSettings() {
|
|
return this.page.locator('a', {
|
|
hasText: 'Settings',
|
|
}).click();
|
|
}
|
|
|
|
goToBilling() {
|
|
return this.page.getByRole('button', { name: 'Billing' }).click();
|
|
}
|
|
|
|
async openAccountsSelector() {
|
|
await this.page.click('[data-test="account-selector-trigger"]');
|
|
}
|
|
|
|
async createTeam({ teamName, slug } = this.createTeamName()) {
|
|
await this.openAccountsSelector();
|
|
|
|
await this.page.click('[data-test="create-team-account-trigger"]');
|
|
await this.page.fill('[data-test="create-team-form"] input', teamName);
|
|
await this.page.click('[data-test="create-team-form"] button:last-child');
|
|
}
|
|
|
|
async updateName(name: string) {
|
|
await this.page.fill('[data-test="update-team-account-name-form"] input', name);
|
|
await this.page.click('[data-test="update-team-account-name-form"] button');
|
|
}
|
|
|
|
async deleteAccount(teamName: string) {
|
|
await this.page.click('[data-test="delete-team-trigger"]');
|
|
|
|
expect(await this.page.locator('[data-test="delete-team-form-confirm-input"]').isVisible()).toBeTruthy();
|
|
|
|
await this.page.fill('[data-test="delete-team-form-confirm-input"]', teamName);
|
|
await this.page.click('[data-test="delete-team-form-confirm-button"]');
|
|
}
|
|
|
|
createTeamName() {
|
|
const random = (Math.random() * 100000000).toFixed(0);
|
|
|
|
const teamName = `Team-Name-${random}`;
|
|
const slug = `team-name-${random}`;
|
|
|
|
return { teamName, slug };
|
|
}
|
|
} |