Frontend Labs
⋯

playwright.config.js

// The lab's own E2E suite (§84): every station, over HTTP/1.1 and HTTP/2.
import { defineConfig, devices } from "@playwright/test";

const HTTP = 18080;
const HTTPS = 18443;

export default defineConfig({
  testDir: "tests",
  fullyParallel: true,
  forbidOnly: !!process.env.CI,
  retries: process.env.CI ? 2 : 0,
  reporter: process.env.CI ? [["github"], ["html", { open: "never" }]] : [["list"]],
  use: { trace: "on-first-retry", ...devices["Desktop Chrome"], viewport: { width: 1360, height: 900 } },
  webServer: {
    command: "node scripts/cert.mjs && node server.mjs",
    url: `http://localhost:${HTTP}/`,
    env: { HTTP_PORT: String(HTTP), HTTPS_PORT: String(HTTPS) },
    reuseExistingServer: false,
  },
  projects: [
    { name: "http1", use: { baseURL: `http://localhost:${HTTP}` } },
    // Self-signed cert: tell the browser to accept it (tests only!).
    { name: "h2", use: { baseURL: `https://localhost:${HTTPS}`, ignoreHTTPSErrors: true } },
  ],
});

Generated from SOURCE.md · 8 Oct 2026 16:36