|
|
|
import { Page } from '@playwright/test';
|
|
|
|
import BasePage from '../Base';
|
|
|
|
import { ProjectsPage } from '../ProjectsPage';
|
|
|
|
import { expect } from '@playwright/test';
|
|
|
|
|
|
|
|
export class SignupPage extends BasePage {
|
|
|
|
readonly projectsPage: ProjectsPage;
|
|
|
|
|
|
|
|
constructor(rootPage: Page) {
|
|
|
|
super(rootPage);
|
|
|
|
this.projectsPage = new ProjectsPage(rootPage);
|
|
|
|
}
|
|
|
|
|
|
|
|
prefixEmail(email: string) {
|
|
|
|
const parallelId = process.env.TEST_PARALLEL_INDEX ?? '0';
|
|
|
|
return `nc_test_${parallelId}_${email}`;
|
|
|
|
}
|
|
|
|
|
|
|
|
goto() {
|
|
|
|
return this.rootPage.goto('/#/signup/', { waitUntil: 'networkidle' });
|
|
|
|
}
|
|
|
|
|
|
|
|
get() {
|
|
|
|
return this.rootPage.locator('html');
|
|
|
|
}
|
|
|
|
|
|
|
|
async signUp({
|
|
|
|
email,
|
|
|
|
password,
|
|
|
|
withoutPrefix,
|
|
|
|
expectedError,
|
|
|
|
}: {
|
|
|
|
email: string;
|
|
|
|
password: string;
|
|
|
|
withoutPrefix?: boolean;
|
|
|
|
expectedError?: string;
|
|
|
|
}) {
|
|
|
|
if (!withoutPrefix) email = this.prefixEmail(email);
|
|
|
|
|
|
|
|
const signUp = this.get();
|
|
|
|
await signUp.locator('button:has-text("SIGN UP")').waitFor();
|
|
|
|
|
|
|
|
await signUp.locator(`input[placeholder="Enter your work email"]`).fill(email);
|
|
|
|
await signUp.locator(`input[placeholder="Enter your password"]`).fill(password);
|
|
|
|
await signUp.locator(`button:has-text("SIGN UP")`).click();
|
|
|
|
if (expectedError) {
|
|
|
|
await expect(signUp.getByTestId('nc-signup-error')).toHaveText(expectedError);
|
|
|
|
} else {
|
|
|
|
await this.rootPage.waitForLoadState('networkidle');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|