|
|
|
import { Page } from '@playwright/test';
|
|
|
|
import BasePage from '../Base';
|
|
|
|
|
|
|
|
export class LoginPage extends BasePage {
|
|
|
|
constructor(rootPage: Page) {
|
|
|
|
super(rootPage);
|
|
|
|
}
|
|
|
|
|
|
|
|
prefixEmail(email: string) {
|
|
|
|
const parallelId = process.env.TEST_PARALLEL_INDEX ?? '0';
|
|
|
|
return `nc_test_${parallelId}_${email}`;
|
|
|
|
}
|
|
|
|
|
|
|
|
async goto() {
|
|
|
|
return this.rootPage.goto('/#/signin');
|
|
|
|
}
|
|
|
|
|
|
|
|
get() {
|
|
|
|
return this.rootPage.locator('html');
|
|
|
|
}
|
|
|
|
|
|
|
|
async fillEmail({ email, withoutPrefix }: { email: string; withoutPrefix?: boolean }) {
|
|
|
|
if (!withoutPrefix) email = this.prefixEmail(email);
|
|
|
|
|
|
|
|
await this.get().locator(`[data-testid="nc-form-signin__email"]`).waitFor();
|
|
|
|
await this.get().locator(`[data-testid="nc-form-signin__email"]`).fill(email);
|
|
|
|
}
|
|
|
|
|
|
|
|
async fillPassword(password: string) {
|
|
|
|
await this.get().locator(`[data-testid="nc-form-signin__password"]`).fill(password);
|
|
|
|
}
|
|
|
|
|
|
|
|
async submit() {
|
|
|
|
await this.get().locator(`[data-testid="nc-form-signin__submit"]`).click();
|
|
|
|
await this.rootPage.locator('.nc-treeview-container').waitFor({ timeout: 10000 });
|
|
|
|
}
|
|
|
|
|
|
|
|
async signIn({
|
|
|
|
email,
|
|
|
|
password,
|
|
|
|
withoutPrefix,
|
|
|
|
skipReload = false,
|
|
|
|
}: {
|
|
|
|
email: string;
|
|
|
|
password: string;
|
|
|
|
withoutPrefix?: boolean;
|
|
|
|
skipReload?: boolean;
|
|
|
|
}) {
|
|
|
|
if (!skipReload) await this.goto();
|
|
|
|
|
|
|
|
// todo: Login page is sometimes not loaded. Probably because of lazy loading
|
|
|
|
await this.rootPage.waitForTimeout(1500);
|
|
|
|
await this.fillEmail({ email, withoutPrefix });
|
|
|
|
await this.fillPassword(password);
|
|
|
|
await this.submit();
|
|
|
|
}
|
|
|
|
}
|