mirror of
https://github.com/steveiliop56/tinyauth.git
synced 2026-07-17 23:41:11 +00:00
47 lines
1.7 KiB
TypeScript
47 lines
1.7 KiB
TypeScript
import {expect, Page} from '@playwright/test';
|
|
import { OTP } from 'otplib';
|
|
|
|
export class LoginFixture {
|
|
constructor(public readonly page: Page) {}
|
|
|
|
async run(username: string, password: string) {
|
|
await expect(this.page.getByText('Welcome back, please login')).toBeVisible();
|
|
await this.page.getByLabel('Username').fill(username);
|
|
await this.page.getByLabel('Password').fill(password);
|
|
await this.page.getByRole('button', { name: 'Login' }).click();
|
|
}
|
|
|
|
async expectSuccess(username: string) {
|
|
await expect(this.page.getByText(`You are currently logged in as ${username}.`)).toBeVisible()
|
|
}
|
|
}
|
|
|
|
export class LogoutFixture {
|
|
constructor(public readonly page: Page) {}
|
|
|
|
async run() {
|
|
await expect(this.page.getByText('Click the button below to logout.')).toBeVisible();
|
|
await this.page.getByRole('button', { name: 'Logout' }).click();
|
|
}
|
|
|
|
async expectSuccess() {
|
|
await expect(this.page.getByText('Welcome back, please login')).toBeVisible();
|
|
}
|
|
}
|
|
|
|
export class TOTPFixture {
|
|
constructor(public readonly page: Page) {}
|
|
|
|
async run(secret: string) {
|
|
await expect(this.page.getByText('Enter your TOTP code')).toBeVisible();
|
|
const otp = new OTP();
|
|
const token = await otp.generate({ secret });
|
|
await this.page.getByPlaceholder('XXXXXX').fill(token);
|
|
// we shouldn't need to click continue, it will auto submit
|
|
// await this.page.getByRole('button', { name: 'Continue' }).click();
|
|
}
|
|
|
|
async expectSuccess(username: string) {
|
|
await expect(this.page.getByText(`You are currently logged in as ${username}.`)).toBeVisible()
|
|
}
|
|
} |