32 lines
1.4 KiB
TypeScript
32 lines
1.4 KiB
TypeScript
import { defineConfig, devices } from "@playwright/test";
|
|
|
|
// Visual + functional checks against the live app (the `web` compose service, BASE_URL). Run via
|
|
// e2e-tests/compose.visual.yml. Parallel per the project's E2E principle; deterministic colorScheme/viewport
|
|
// so the rendered design is stable across runs.
|
|
|
|
const ORY_FREE = /\/(visual|language)\.spec\.ts$/;
|
|
|
|
export default defineConfig({
|
|
testDir: ".",
|
|
outputDir: "artifacts/test-output",
|
|
fullyParallel: true,
|
|
forbidOnly: true,
|
|
reporter: [["list"], ["html", { open: "never", outputFolder: "artifacts/report" }]],
|
|
use: {
|
|
baseURL: process.env.BASE_URL ?? "http://localhost:3000",
|
|
colorScheme: "light",
|
|
screenshot: "only-on-failure",
|
|
viewport: { width: 1280, height: 800 },
|
|
},
|
|
// The Ory-free suites run in all three engines: the console guard (console-guard.ts) only sees an
|
|
// engine's warnings when that engine renders the page, and the newest platform features in the app
|
|
// (popover, CSS anchor positioning, `:has()`) are exactly where engines disagree. They stay
|
|
// side-effect-free, so three parallel runs of them don't collide. The Ory-backed suites write to
|
|
// one shared backend and stay on chromium.
|
|
projects: [
|
|
{ name: "chromium", use: { ...devices["Desktop Chrome"] } },
|
|
{ name: "firefox", testMatch: ORY_FREE, use: { ...devices["Desktop Firefox"] } },
|
|
{ name: "webkit", testMatch: ORY_FREE, use: { ...devices["Desktop Safari"] } },
|
|
],
|
|
});
|