mirror of
https://github.com/steveiliop56/tinyauth.git
synced 2026-07-17 23:41:11 +00:00
feat: add simple e2e tests
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
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()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user