CI / check (push) Successful in 32s
CI / tests-imaging-browsers (push) Successful in 1m34s
CI / tests-integration (push) Successful in 1m59s
CI / tests-unit (push) Successful in 2m2s
CI / tests-quality (push) Successful in 1m1s
CI / tests-ui (push) Failing after 3m20s
CI / preflight (push) Skipped
CI / deploy (push) Skipped
The deploy gate ran e2e specs that depend on live content and data, so a missing upload (the /help article images) or a legacy malformed avatar figure could turn a safe code deploy red. Split the suites by what they actually guarantee: - Blocking gate (`pnpm test:e2e`, `playwright.config.ts`): only checks the CMS can guarantee itself — anonymous redirects, register form fields, the captcha DOM contract and the cache-control headers (deterministic origin-direct). - Advisory suite (`pnpm test:e2e:quality`, `playwright.quality.config.ts`): broken images, layout overflow and warm-page latency, which depend on live content/upload state and the host. It runs as a `continue-on-error` CI job against the public site so a real content problem stays visible without blocking the pipeline. Also add `scripts/sync-readme-versions.mjs` (+ tests, docs and a CI check) so the pinned versions in README.md can never drift from package.json / .nvmrc.
30 lines
1016 B
TypeScript
30 lines
1016 B
TypeScript
import { defineConfig, devices } from "@playwright/test";
|
|
|
|
// Advisory quality suite. Unlike the main e2e config (the blocking deploy
|
|
// gate), this checks things that depend on live content and data — broken
|
|
// uploads, legacy malformed avatar figures, warm-page latency. Those are real
|
|
// signals but they are not something a code change can guarantee, so they must
|
|
// never block a deploy. Point it at a running CMS with PLAYWRIGHT_BASE_URL
|
|
// (defaults to the local host port).
|
|
const baseURL = process.env.PLAYWRIGHT_BASE_URL || "http://127.0.0.1:3002";
|
|
|
|
export default defineConfig({
|
|
testDir: "./e2e/quality",
|
|
fullyParallel: false,
|
|
workers: 1,
|
|
retries: 1,
|
|
timeout: 60000,
|
|
expect: { timeout: 15000 },
|
|
reporter: [
|
|
["list"],
|
|
["html", { outputFolder: "playwright-report/quality", open: "never" }],
|
|
],
|
|
outputDir: "test-results/quality",
|
|
use: {
|
|
baseURL,
|
|
trace: "retain-on-failure",
|
|
screenshot: "only-on-failure",
|
|
},
|
|
projects: [{ name: "chromium", use: { ...devices["Desktop Chrome"] } }],
|
|
});
|