import { expect, test } from '@playwright/test' test.beforeEach(async ({ page }) => { await page.goto('/') }) test('shows an error for invalid credentials', async ({ page }) => { await page.getByLabel('Username').fill('admin') await page.getByRole('textbox', { name: 'Password', exact: true }).fill('wrong-password') await page.getByRole('button', { name: 'Sign in' }).click() await expect(page.getByRole('alert')).toHaveText('Invalid username or password') }) test('logs in with the initialized admin user', async ({ page }) => { await page.getByLabel('Username').fill('admin') await page.getByRole('textbox', { name: 'Password', exact: true }).fill('admin') await page.getByRole('button', { name: 'Sign in' }).click() await expect(page).toHaveURL('/users') await expect(page.getByRole('heading', { name: 'User Management' })).toBeVisible() const adminRow = page.getByRole('row').filter({ hasText: 'admin' }) await expect(adminRow).toContainText('admin') await expect(page.getByRole('button', { name: 'Sign out' })).toBeVisible() const token = await page.evaluate(() => { const session = JSON.parse(sessionStorage.getItem('bolts-session')!) as { token: string } return session.token }) const signOutRequest = page.waitForRequest(request => request.url().endsWith('/api/signout') && request.method() === 'POST', ) await page.getByRole('button', { name: 'Sign out' }).click() await signOutRequest await expect(page).toHaveURL('/') await expect(page.getByRole('button', { name: 'Sign in' })).toBeVisible() const response = await page.request.get('/api/users', { headers: { Authorization: `Bearer ${token}` }, }) expect(response.status()).toBe(403) })