Adds a happy-path spec (login → dashboard → registratie wizard, including a real identity-document upload → real submit) and a degraded-path spec (?scenario=error → <app-async> error slot → retry), both driving the real app against the real .NET backend, plus a CI job that boots both. Writing the retry spec surfaced a real bug: AsyncComponent's retry() only reloads a [resource]-fed instance, so every real page (all [data]-fed via a store's RemoteData) had a silently no-op retry button. Added a retryClicked output and wired it on the dashboard's two async blocks. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
30 lines
1017 B
TypeScript
30 lines
1017 B
TypeScript
import { defineConfig } from '@playwright/test';
|
|
|
|
// Smoke-level e2e (WP-19): one happy path, one degraded path, against the REAL
|
|
// backend — proving the FE+BE seam, not replacing component/unit tests.
|
|
const baseURL = process.env['E2E_BASE_URL'] ?? 'http://localhost:4200';
|
|
|
|
export default defineConfig({
|
|
testDir: './e2e',
|
|
timeout: 30_000,
|
|
fullyParallel: true,
|
|
retries: process.env['CI'] ? 1 : 0,
|
|
reporter: process.env['CI'] ? 'github' : 'list',
|
|
use: {
|
|
baseURL,
|
|
trace: 'on-first-retry',
|
|
},
|
|
projects: [{ name: 'chromium', use: { browserName: 'chromium' } }],
|
|
// CI starts `ng serve` + the backend as separate job steps (both need to be up
|
|
// before the suite runs); locally, boot `npm start` automatically so `npm run e2e`
|
|
// works standalone — the backend still needs `dotnet run` running separately.
|
|
webServer: process.env['CI']
|
|
? undefined
|
|
: {
|
|
command: 'npm start',
|
|
url: baseURL,
|
|
reuseExistingServer: true,
|
|
timeout: 120_000,
|
|
},
|
|
});
|