import { execSync } from "node:child_process"; /** * Playwright Global-Setup (Definition of Done #1, Plan WS11 Aufgabe 2). * * NICHT in der Sandbox ausführbar (kein Postgres) — deferred. Läuft im CI/lokal * gegen eine erreichbare DB: * 1. Migrationen anwenden (idempotent). * 2. Deterministischen Seed laden (Katalog) + Test-Fixtures (Wehren A/B mit * Koordinaten, je Fahrzeug/Gerät mit festen UUIDs, vier Benutzer mit * argon2id-Test-Passwort). * * Wird nur ausgeführt, wenn KEIN externer E2E_BASE_URL gesetzt ist (dann ist die * Ziel-Umgebung bereits provisioniert) und DATABASE_URL existiert. */ async function globalSetup(): Promise { if (process.env.E2E_BASE_URL) { // Externe Umgebung: bereits provisioniert, nichts tun. return; } if (!process.env.DATABASE_URL) { console.warn( "[global-setup] DATABASE_URL fehlt — Migration/Seed übersprungen (deferred).", ); return; } const run = (cmd: string) => execSync(cmd, { stdio: "inherit", env: process.env }); run("npm run db:migrate"); run("npm run db:seed"); // Deterministische E2E-Fixtures (vier Konten + Wehren A/B + feste Asset-UUIDs). run("npm run db:seed-auth"); } export default globalSetup;