Skip to content

feat(ci): add Firefox/WebKit smoke coverage with named projects - #166

Merged
jenil merged 5 commits into
v1from
work/129-ci-smoke-fix
Jul 27, 2026
Merged

feat(ci): add Firefox/WebKit smoke coverage with named projects#166
jenil merged 5 commits into
v1from
work/129-ci-smoke-fix

Conversation

@jenil

@jenil jenil commented Jul 27, 2026

Copy link
Copy Markdown
Owner

Summary

Adds Firefox and WebKit smoke coverage to the CI quality gate for card #129, with named Playwright projects and fail-closed smoke testing.

Changes

playwright.config.js

  • Add named chromium, firefox, webkit projects
  • bypassCSP: true only in chromium project (Chromium-specific workaround)
  • Firefox and WebKit projects do not get bypassCSP

package.json

  • test:vrt, test:a11y, test:api all pinned to --project=chromium
  • Preserves existing Chromium-only behavior for VRT, a11y, and API tests

.github/workflows/ci.yml

  • Install Chromium before test:api (fixes cold runner: API test needs browser)
  • Smoke step runs browser-smoke.spec.js under --project=firefox --project=webkit --workers 1
  • No continue-on-error — smoke step is fail-closed
  • Smoke step uploads artifacts on failure (30-day retention)

test/vrt/browser-smoke.spec.js (new)

  • Non-screenshot smoke tests: asserts HTTP 200, fixture-specific content (.container, h1, .tag), mobile viewport
  • Uses port 3500 (avoids conflicts with VRT ports 3100/3200, a11y port 3400)
  • Sets viewport before navigation (correct ordering)

test/vrt/README.md

  • Full CI gate documentation (all 12 gates)
  • Smoke test docs with manual run instructions
  • Snapshot-update docs pinned to --project=chromium (prevents Firefox/WebKit baseline generation)
  • Updated test structure and coverage table

test/vrt/snapshots/

  • 12 Chromium snapshots renamed to include -chromium suffix (baseline migration for named projects)

test/vrt/reports/html/index.html

  • Deleted from tracking (generated report, recreated by Playwright reporter on each run)

Evidence

  • VRT (Chromium): 4/4 tests pass with -chromium snapshot naming
  • Smoke (Firefox + WebKit): 4/8 tests passed under both browsers (sandbox port restriction limited local run; all 8 will run in CI)
  • Full Chromium suite (VRT + a11y + API): 15/15 pass
  • Fail-closed: No continue-on-error on any gate

Standards Compliance

  • P1: Report file deleted from tracking; README correctly describes test/vrt/reports/html
  • P1: Snapshot-update docs now Chromium-only (--project=chromium --update-snapshots)
  • P2: Desktop viewport set before navigation
  • P2: Smoke spec asserts HTTP 200, fixture-specific content (.container, h1, .tag)

jenil added 5 commits July 27, 2026 00:09
- Add named chromium, firefox, webkit projects to playwright.config.js
- Keep bypassCSP: true in chromium project only
- Update test:vrt, test:a11y, test:api scripts to --project=chromium
- Add test/vrt/browser-smoke.spec.js (non-screenshot smoke tests)
- Update CI smoke step to run browser-smoke.spec.js under firefox/webkit
- Remove continue-on-error from smoke step (fail-closed)
- Remove generated report file from tracking
…x CI order

- Rename all Chromium VRT snapshots to include -chromium (baseline migration)
- Rewrite smoke spec: assert HTTP 200, fixture-specific content, viewport
- Move Chromium install before test:api (cold runner fix)
- Delete tracked report file (will be recreated by reporter)
- Update test/vrt/README.md with full CI gate documentation
The smoke spec navigates directly via page.goto() and does not use
vrt-helpers.loadFixture(). Remove the unused import to clean up.
- Move setViewportSize before page.goto in smoke spec (P2)
- Make snapshot-update docs Chromium-only (P1: prevents Firefox/WebKit
  baseline generation)
Playwright was writing HTML reports to test/vrt/reports/html, but CI
uploads only test/vrt/results/. Update the HTML reporter outputFolder
to test/vrt/results/html so generated output lands inside the git-
ignored results/ directory that CI uploads on failure. Update README
test structure to reflect the unified results/ path.
@jenil
jenil merged commit 695c6a6 into v1 Jul 27, 2026
2 checks passed
@jenil
jenil deleted the work/129-ci-smoke-fix branch July 27, 2026 04:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant