import { defineConfig } from "@playwright/test"; export default defineConfig({ testDir: "./tests", fullyParallel: false, workers: 1, retries: 0, timeout: 30_000, reporter: [ ["list"], ["html", { outputFolder: "work/playwright-report", open: "never" }], ], outputDir: "work/test-results", use: { baseURL: "http://127.0.0.1:18080", channel: process.platform === "darwin" ? "chrome" : undefined, headless: true, viewport: { width: 1440, height: 1000 }, screenshot: "only-on-failure", trace: "retain-on-failure", }, webServer: { command: `python3 -c 'import os; from pathlib import Path; jars = sorted(Path("backend/target").glob("votian-backend-*.jar")); assert len(jars) == 1, "Run ./build.sh first: expected exactly one backend JAR"; os.execvp("java", ["java", "-jar", str(jars[0]), "--server.port=18080"])'`, // Start the built JAR directly: do not load the developer's .env file. // Explicitly unreachable endpoint: no test can connect to the real database. env: { DB_URL: "jdbc:mariadb://127.0.0.1:1/unreachable?connectTimeout=500&socketTimeout=500", DB_USER: "test", DB_PASSWORD: "test", LEGACY_APP_URL: "", }, url: "http://127.0.0.1:18080/api/health", reuseExistingServer: false, timeout: 60_000, }, });