43 lines
1.6 KiB
TypeScript
43 lines
1.6 KiB
TypeScript
import { defineConfig, devices } from "@playwright/test";
|
||
|
||
const APP_URL = process.env["E2E_APP_URL"] ?? "http://127.0.0.1:3000";
|
||
|
||
export default defineConfig({
|
||
testDir: "./tests/e2e",
|
||
/*
|
||
* Prueft vor dem ersten Ablauf, dass die Voraussetzungen stimmen: ein gebauter
|
||
* Stand antwortet, der Seed-Bestand steht, und der Server liest **dieselbe**
|
||
* Datenbank wie dieser Prozess. Ohne das faellt jede fehlende Voraussetzung
|
||
* erst mitten im Lauf auf — als Zeitablauf oder als „0 Treffer“ (#018).
|
||
*/
|
||
globalSetup: "./tests/e2e/global-setup.ts",
|
||
// Die Ablaeufe aendern gemeinsame Daten, deshalb nacheinander.
|
||
fullyParallel: false,
|
||
workers: 1,
|
||
forbidOnly: Boolean(process.env["CI"]),
|
||
retries: process.env["CI"] ? 1 : 0,
|
||
reporter: process.env["CI"] ? [["list"], ["html", { open: "never" }]] : "list",
|
||
use: {
|
||
baseURL: APP_URL,
|
||
trace: "retain-on-failure",
|
||
screenshot: "only-on-failure",
|
||
locale: "de-DE",
|
||
timezoneId: "Europe/Berlin",
|
||
colorScheme: "dark",
|
||
},
|
||
projects: [
|
||
{ name: "desktop", use: { ...devices["Desktop Chrome"], viewport: { width: 1440, height: 900 } } },
|
||
{
|
||
/*
|
||
* **390 px, nicht 412.** `devices["Pixel 7"]` ist 412 × 839; CLAUDE.md und
|
||
* das Abnahmekriterium nennen 390. Zweiundzwanzig Pixel sind kein
|
||
* Rundungsfehler — eine Seite, die bei 390 ausbricht, sieht bei 412
|
||
* tadellos aus. Jeder „trägt am Handy ohne horizontales Scrollen“-Test lief
|
||
* damit gegen eine Breite, die niemand verlangt hatte (#018).
|
||
*/
|
||
name: "handy",
|
||
use: { ...devices["Pixel 7"], viewport: { width: 390, height: 844 } },
|
||
},
|
||
],
|
||
});
|