4c475f2b0e
Add a webkit project to the Playwright config so the hermetic mock-mode specs run in both Chromium and WebKit, and install both browsers in CI. WebKit's Debian build runs headless without extra host system libraries (verified locally: smoke + zoom pass in webkit); the workflow comment records the one-time host install-deps fallback if a runner ever lacks a library. Desktop WebKit does not reproduce iOS Safari's text auto-inflation, so the app.css text-size-adjust guard stays outside e2e coverage.
30 lines
1.1 KiB
TypeScript
30 lines
1.1 KiB
TypeScript
import { defineConfig, devices } from '@playwright/test';
|
|
|
|
// Hermetic e2e: Playwright boots the Vite dev server in `mock` mode (the in-memory
|
|
// fake transport), so the smoke needs no backend/gateway/Postgres.
|
|
export default defineConfig({
|
|
testDir: './e2e',
|
|
fullyParallel: true,
|
|
forbidOnly: !!process.env.CI,
|
|
retries: process.env.CI ? 1 : 0,
|
|
reporter: 'list',
|
|
use: {
|
|
baseURL: 'http://localhost:4173',
|
|
trace: 'on-first-retry',
|
|
},
|
|
webServer: {
|
|
command: 'pnpm exec vite --mode mock --port 4173 --strictPort',
|
|
url: 'http://localhost:4173',
|
|
reuseExistingServer: !process.env.CI,
|
|
timeout: 60_000,
|
|
},
|
|
// Run the same hermetic specs in Chromium and WebKit (Safari's engine) so the UI is
|
|
// exercised in both rendering/JS engines. Note: desktop WebKit on Linux does not
|
|
// reproduce iOS Safari's text auto-inflation, so the `text-size-adjust` guard in
|
|
// app.css is not regression-covered here — but engine-level CSS/JS differences are.
|
|
projects: [
|
|
{ name: 'chromium', use: { ...devices['Desktop Chrome'] } },
|
|
{ name: 'webkit', use: { ...devices['Desktop Safari'] } },
|
|
],
|
|
});
|