多维表格
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

57 lines
1.5 KiB

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}`;
}
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();
}
}