You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
The visual-regression suite never executes in CI — gate-26 asks for baselines that would never run #198
CI selects the e2e config via playwright-test-path: tests/e2e, which resolves to tests/e2e/playwright.config.ts. Listing what each config actually executes:
tests/e2e/playwright.config.ts (the one CI uses)
Total: 56 tests in 14 files
projects: [chromium]
playwright.config.ts (repo root, local use)
Total: 57 tests in 15 files
projects: [chromium, visual]
The difference is exactly one file: tests/e2e/visual/doriath.visual.spec.ts.
Two things combine:
The CI config's chromium project carries testIgnore: [..., '**/visual/**'].
The CI config declares no visual project at all — the root config does, the CI one does not.
So the visual spec is ignored by the only project that exists, and the project that would run it is not in the config CI loads. tests/e2e/visual/doriath.visual.spec.ts has never executed in CI.
Why this matters beyond one file
gate-26 visual-coverage currently reports 10 findings, each of the form:
src/views/<X>.vue — new page component missing visual-regression baseline
(tests/e2e/visual/**) / e2e test / @visual exclude
The first of those three remedies is a directory CI never runs. Adding ten baselines under tests/e2e/visual/** would turn gate-26 green without a single one of them ever executing — a check that cannot fail, which is the exact failure mode this programme exists to remove.
The second remedy — an ordinary e2e test under tests/e2e/workflows/ — is executed, and is the honest route.
Not the other two failure modes
For the record, the other two ways an e2e suite silently never runs were checked and are clean here:
enable-playwright: true is set explicitly in .github/workflows/code-quality.yml (not left to default false).
playwright-test-path: tests/e2e scopes nothing out — all 15 spec files live under tests/e2e.
And the @e2e anchors are honest: of 170 raw @e2e mentions in openspec/specs/, 157 are @e2e exclude tags and 13 are real @e2e <path> anchors — and all three distinct target files exist on disk. No anchor points at a missing file.
Suggested fix
Either:
give the CI config a visual project (with CI-runner-generated baselines and a sane maxDiffPixels/threshold, since the current comment's objection is that committed PNGs "cannot byte-match a CI runner"), or
delete tests/e2e/visual/ and the root config's visual project, and let gate-26 be satisfied only by real e2e tests.
What must not happen is baselines being added to the ignored directory to clear gate-26.
Measured with hydra-gates package 365fa31d09a26f980e6dc76cb0800575ef005a4e against development at 7579916.
Checked on 2 Oct: no keepiq page depends on the visual suite for its gate-26 credit. Of the 12 page components, the 10 with a baseline under tests/e2e/visual/** are also driven by e2e tests that CI does run (tests/e2e/workflows/page-surfaces.spec.ts, vault-unlock.spec.ts, spec-coverage/lock-screen.spec.ts), and the other 2 carry a reasoned @visual exclude. The remaining hole is in the shared gate: it credits tests/e2e/visual/** even when the app's CI Playwright config ignores that folder. That fix belongs in ConductionNL/.github and is waiting on a decision, so this issue stays open until then.
Fixed in the shared gate by ConductionNL/.github#810 (merged): gate-26 now credits a baseline under tests/e2e/visual only when the app's CI Playwright config has a project that runs it; otherwise only executed e2e tests and a reasoned @visual exclude count. keepiq's 12 pages still pass, because each is also driven by an executed e2e test or carries a reasoned exclude.
Activity
fix(gates): cover every routed page in the suite CI runs, and repoint…
rubenvdlinde commentedon Oct 2, 2026
Checked on 2 Oct: no keepiq page depends on the visual suite for its gate-26 credit. Of the 12 page components, the 10 with a baseline under
tests/e2e/visual/**are also driven by e2e tests that CI does run (tests/e2e/workflows/page-surfaces.spec.ts,vault-unlock.spec.ts,spec-coverage/lock-screen.spec.ts), and the other 2 carry a reasoned@visual exclude. The remaining hole is in the shared gate: it creditstests/e2e/visual/**even when the app's CI Playwright config ignores that folder. That fix belongs in ConductionNL/.github and is waiting on a decision, so this issue stays open until then.fix(gate-26): credit tests/e2e/visual only when CI runs it (#810)
rubenvdlinde commentedon Oct 2, 2026
Fixed in the shared gate by ConductionNL/.github#810 (merged): gate-26 now credits a baseline under tests/e2e/visual only when the app's CI Playwright config has a project that runs it; otherwise only executed e2e tests and a reasoned @visual exclude count. keepiq's 12 pages still pass, because each is also driven by an executed e2e test or carries a reasoned exclude.