test(dashboard): add Playwright e2e scaffolding with smoke spec
Milestone A of the frontend test plan. Sets up the test rig — config, globalSetup that probes the backend and seeds an admin session into storageState, lightweight fixtures, and a 3-test smoke spec — without yet covering any user journeys (those land in Milestone B). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
28
dashboard/tests/e2e/smoke.spec.ts
Normal file
28
dashboard/tests/e2e/smoke.spec.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import { expect, test } from '@playwright/test';
|
||||
import { loginAsAdmin } from './fixtures/auth';
|
||||
|
||||
// A1 smoke: prove globalSetup + webServer + fixtures + proxy all work.
|
||||
|
||||
test.describe('smoke', () => {
|
||||
test.describe('unauthenticated', () => {
|
||||
test.use({ storageState: { cookies: [], origins: [] } });
|
||||
|
||||
test('root redirects to login and shows the form', async ({ page }) => {
|
||||
await page.goto('/admin/');
|
||||
await expect(page).toHaveURL(/\/admin\/login$/);
|
||||
await expect(page.getByLabel('Username')).toBeVisible();
|
||||
await expect(page.getByLabel('Password')).toBeVisible();
|
||||
await expect(page.getByRole('button', { name: /sign in/i })).toBeVisible();
|
||||
});
|
||||
|
||||
test('valid credentials land on the apps page', async ({ page }) => {
|
||||
await loginAsAdmin(page);
|
||||
await expect(page.getByRole('link', { name: 'Apps' })).toBeVisible();
|
||||
});
|
||||
});
|
||||
|
||||
test('admin storageState already lands on apps', async ({ page }) => {
|
||||
await page.goto('/admin/');
|
||||
await expect(page).toHaveURL(/\/admin\/apps$/);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user