const path = require("path"); const { defineConfig, devices } = require("@playwright/test"); const serverPort = 4173; const repoRoot = path.resolve(__dirname, "../.."); module.exports = defineConfig({ testDir: "./tests", timeout: 30_000, expect: { timeout: 5_000, }, fullyParallel: false, retries: process.env.CI ? 2 : 0, workers: process.env.CI ? 1 : undefined, reporter: [["list"], ["html", { open: "never" }]], use: { baseURL: `http://127.0.0.1:${serverPort}`, trace: "retain-on-failure", screenshot: "only-on-failure", video: "retain-on-failure", }, projects: [ { name: "chromium", use: { ...devices["Desktop Chrome"] }, }, ], webServer: { command: `SQLX_OFFLINE=true ` + `DATABASE_URL=sqlite://ferrous-solitaire-e2e.db ` + `JWT_SECRET=ferrous_solitaire_e2e_secret_32_chars_long ` + `SERVER_PORT=${serverPort} ` + `cargo run -p solitaire_server --quiet`, cwd: repoRoot, url: `http://127.0.0.1:${serverPort}/health`, timeout: 120_000, reuseExistingServer: !process.env.CI, }, });