New `visual` project covers six low-volatility screens — portal login, dashboard, and the four core lists (clients/yachts/berths/invoices) — with full-page screenshots that diff to a 2% pixel-ratio tolerance. Animations and the cursor caret are disabled inline so transient rendering doesn't trigger flaky diffs. Detail screens (yacht detail, EOI dialog, invoice form steps) are intentionally deferred until we have stable per-id fixtures so snapshots don't drift with seed data. Regenerate with: pnpm exec playwright test --project=visual --update-snapshots Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
83 lines
2.2 KiB
TypeScript
83 lines
2.2 KiB
TypeScript
import { defineConfig, devices } from '@playwright/test';
|
|
|
|
export default defineConfig({
|
|
testDir: './tests/e2e',
|
|
fullyParallel: false,
|
|
forbidOnly: !!process.env.CI,
|
|
retries: 0,
|
|
workers: 1, // Sequential — so tests can build on each other
|
|
reporter: [['list'], ['html', { open: 'never' }]],
|
|
timeout: 60_000,
|
|
expect: { timeout: 10_000 },
|
|
|
|
use: {
|
|
baseURL: 'http://localhost:3000',
|
|
trace: 'on-first-retry',
|
|
screenshot: 'only-on-failure',
|
|
video: 'retain-on-failure',
|
|
actionTimeout: 15_000,
|
|
navigationTimeout: 30_000,
|
|
},
|
|
|
|
projects: [
|
|
{
|
|
name: 'setup',
|
|
testMatch: /smoke\/global-setup\.ts/,
|
|
},
|
|
{
|
|
name: 'smoke',
|
|
testMatch: /smoke\/\d{2}-.*\.spec\.ts/,
|
|
dependencies: ['setup'],
|
|
use: {
|
|
...devices['Desktop Chrome'],
|
|
viewport: { width: 1440, height: 900 },
|
|
},
|
|
},
|
|
{
|
|
name: 'exhaustive',
|
|
testMatch: /exhaustive\/.*\.spec\.ts/,
|
|
dependencies: ['setup'],
|
|
use: {
|
|
...devices['Desktop Chrome'],
|
|
viewport: { width: 1440, height: 900 },
|
|
},
|
|
},
|
|
{
|
|
name: 'destructive',
|
|
testMatch: /destructive\/.*\.spec\.ts/,
|
|
dependencies: ['setup'],
|
|
use: {
|
|
...devices['Desktop Chrome'],
|
|
viewport: { width: 1440, height: 900 },
|
|
},
|
|
},
|
|
{
|
|
// Real-API tests hit live external services (Documenso, IMAP, etc.).
|
|
// Opt-in only: pnpm exec playwright test --project=realapi
|
|
name: 'realapi',
|
|
testMatch: /realapi\/.*\.spec\.ts/,
|
|
dependencies: ['setup'],
|
|
timeout: 120_000,
|
|
use: {
|
|
...devices['Desktop Chrome'],
|
|
viewport: { width: 1440, height: 900 },
|
|
},
|
|
},
|
|
{
|
|
// Visual regression baselines. Regenerate with --update-snapshots after
|
|
// intentional UI changes; otherwise pnpm exec playwright test --project=visual
|
|
// diffs against the committed PNGs.
|
|
name: 'visual',
|
|
testMatch: /visual\/.*\.spec\.ts/,
|
|
dependencies: ['setup'],
|
|
use: {
|
|
...devices['Desktop Chrome'],
|
|
viewport: { width: 1440, height: 900 },
|
|
},
|
|
},
|
|
],
|
|
|
|
// Don't start the dev server — we expect it to already be running
|
|
webServer: undefined,
|
|
});
|