cfb38e8fc6
- Global setup: authenticates as admin, saves storageState for reuse - playwright.config.ts: 3 projects (setup, authenticated, unauthenticated) - authenticated-admin.spec.ts: 16 admin pages tested with real auth session - accessibility.spec.ts: axe-core scans on all admin, public, and portal pages - visual-regression.spec.ts: dark mode baselines for key pages (toHaveScreenshot) - @axe-core/playwright added as devDependency - .gitignore updated: excludes .auth/ and test-results/ Full suite: 262 tests passing (setup:1, authenticated:52, unauthenticated:209)
42 lines
999 B
TypeScript
42 lines
999 B
TypeScript
import { defineConfig } from "@playwright/test"
|
|
import path from "path"
|
|
|
|
const authFile = path.join(__dirname, "e2e", ".auth", "admin.json")
|
|
|
|
export default defineConfig({
|
|
testDir: "./e2e",
|
|
fullyParallel: false,
|
|
retries: 0,
|
|
timeout: 90_000,
|
|
use: {
|
|
baseURL: "http://localhost:3000",
|
|
screenshot: "on",
|
|
trace: "on-first-retry",
|
|
navigationTimeout: 60_000,
|
|
actionTimeout: 30_000,
|
|
},
|
|
projects: [
|
|
{
|
|
name: "setup",
|
|
testMatch: /global-setup\.ts/,
|
|
},
|
|
{
|
|
name: "authenticated",
|
|
testMatch:
|
|
/authenticated-admin|visual-regression|accessibility/,
|
|
dependencies: ["setup"],
|
|
use: {
|
|
storageState: authFile,
|
|
browserName: "chromium",
|
|
},
|
|
},
|
|
{
|
|
name: "unauthenticated",
|
|
testMatch:
|
|
/functional-flows|full-check|user-story-tests|system-test|staff-management|screenshot-tour|authenticated-tour/,
|
|
use: { browserName: "chromium" },
|
|
},
|
|
],
|
|
outputDir: "./e2e/test-results",
|
|
})
|