fa9aa5cff1
Implements the automated Playwright E2E suite as the pre-UAT gate following the UAT failures identified in GRO-299. Creates 5 test files in apps/web/e2e/: - portal-auth.spec.ts: verifies client portal auth (client name shown, not "Hi, Guest") - portal-data.spec.ts: verifies portal sections render without auth gates - admin-services.spec.ts: asserts no duplicate service names in admin/services and booking wizard - admin-reports.spec.ts: verifies reports page shows non-zero data for last 60 days - console-health.spec.ts: asserts no 404s for favicon/PWA assets and no JS exceptions Also adds: - apps/web/e2e/ with Playwright config targeting groombook.dev.farh.net - Shared fixtures with storageState-based auth via dev login selector - test:e2e npm script in apps/web/package.json - web-e2e CI job targeting PRs (runs after deploy-dev) Note: Tests 1 & 2 (portal auth/data) depend on GRO-300 being deployed. Tests 3-5 run against current dev state. Co-Authored-By: Paperclip <noreply@paperclip.ing>
34 lines
872 B
TypeScript
34 lines
872 B
TypeScript
import { defineConfig, devices } from "@playwright/test";
|
|
|
|
/**
|
|
* Playwright configuration for GroomBook Web E2E tests.
|
|
*
|
|
* Targets the deployed dev environment at groombook.dev.farh.net.
|
|
* Uses the dev login selector (/login) for authentication — no hardcoded credentials.
|
|
*
|
|
* Run locally:
|
|
* pnpm --filter @groombook/web-e2e test
|
|
*
|
|
* CI: Runs on every PR targeting main, blocking merge on failure.
|
|
*/
|
|
export default defineConfig({
|
|
testDir: "./tests",
|
|
timeout: 30_000,
|
|
retries: process.env.CI ? 2 : 0,
|
|
workers: process.env.CI ? 1 : undefined,
|
|
reporter: process.env.CI ? "github" : "list",
|
|
|
|
use: {
|
|
baseURL: "https://groombook.dev.farh.net",
|
|
trace: "on-first-retry",
|
|
screenshot: "only-on-failure",
|
|
serviceWorkers: "block",
|
|
},
|
|
|
|
projects: [
|
|
{
|
|
name: "chromium",
|
|
use: { ...devices["Desktop Chrome"] },
|
|
},
|
|
],
|
|
}); |