feat: support guest session (#919)
This commit is contained in:
parent
24cb2ce19b
commit
9279135355
34 changed files with 741 additions and 288 deletions
65
tests/pages/auth.ts
Normal file
65
tests/pages/auth.ts
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
import type { Page } from '@playwright/test';
|
||||
import { expect } from '../fixtures';
|
||||
|
||||
export class AuthPage {
|
||||
constructor(private page: Page) {}
|
||||
|
||||
async gotoLogin() {
|
||||
await this.page.goto('/login');
|
||||
await expect(this.page.getByRole('heading')).toContainText('Sign In');
|
||||
}
|
||||
|
||||
async gotoRegister() {
|
||||
await this.page.goto('/register');
|
||||
await expect(this.page.getByRole('heading')).toContainText('Sign Up');
|
||||
}
|
||||
|
||||
async register(email: string, password: string) {
|
||||
await this.gotoRegister();
|
||||
await this.page.getByPlaceholder('user@acme.com').click();
|
||||
await this.page.getByPlaceholder('user@acme.com').fill(email);
|
||||
await this.page.getByLabel('Password').click();
|
||||
await this.page.getByLabel('Password').fill(password);
|
||||
await this.page.getByRole('button', { name: 'Sign Up' }).click();
|
||||
}
|
||||
|
||||
async login(email: string, password: string) {
|
||||
await this.gotoLogin();
|
||||
await this.page.getByPlaceholder('user@acme.com').click();
|
||||
await this.page.getByPlaceholder('user@acme.com').fill(email);
|
||||
await this.page.getByLabel('Password').click();
|
||||
await this.page.getByLabel('Password').fill(password);
|
||||
await this.page.getByRole('button', { name: 'Sign In' }).click();
|
||||
}
|
||||
|
||||
async logout(email: string, password: string) {
|
||||
await this.login(email, password);
|
||||
await this.page.waitForURL('/');
|
||||
|
||||
await this.openSidebar();
|
||||
|
||||
const userNavButton = this.page.getByTestId('user-nav-button');
|
||||
await expect(userNavButton).toBeVisible();
|
||||
|
||||
await userNavButton.click();
|
||||
const userNavMenu = this.page.getByTestId('user-nav-menu');
|
||||
await expect(userNavMenu).toBeVisible();
|
||||
|
||||
const authMenuItem = this.page.getByTestId('user-nav-item-auth');
|
||||
await expect(authMenuItem).toContainText('Sign out');
|
||||
|
||||
await authMenuItem.click();
|
||||
|
||||
const userEmail = this.page.getByTestId('user-email');
|
||||
await expect(userEmail).toContainText('Guest');
|
||||
}
|
||||
|
||||
async expectToastToContain(text: string) {
|
||||
await expect(this.page.getByTestId('toast')).toContainText(text);
|
||||
}
|
||||
|
||||
async openSidebar() {
|
||||
const sidebarToggleButton = this.page.getByTestId('sidebar-toggle-button');
|
||||
await sidebarToggleButton.click();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import { chatModels } from '@/lib/ai/models';
|
||||
import { expect, Page } from '@playwright/test';
|
||||
import { expect, type Page } from '@playwright/test';
|
||||
|
||||
export class ChatPage {
|
||||
constructor(private page: Page) {}
|
||||
|
|
@ -179,4 +179,13 @@ export class ChatPage {
|
|||
},
|
||||
};
|
||||
}
|
||||
|
||||
async expectToastToContain(text: string) {
|
||||
await expect(this.page.getByTestId('toast')).toContainText(text);
|
||||
}
|
||||
|
||||
async openSideBar() {
|
||||
const sidebarToggleButton = this.page.getByTestId('sidebar-toggle-button');
|
||||
await sidebarToggleButton.click();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue