mirror of https://github.com/nocodb/nocodb
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
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}`; |
|
} |
|
|
|
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(); |
|
} |
|
}
|
|
|