8ed0a9b1c5
* test: add visual regression suite for the admin UI
Adds a Playwright visual-regression suite covering key admin screens in
LTR (English) and RTL (Arabic), gated behind EMDASH_VISUAL=1. Adds the CI
trio: an untrusted measure job, a trusted report job that comments diffs,
and a reaction-gated apply job that commits accepted Linux baselines on a
maintainer 👍. Adds inert data-testid hooks to mask drift-prone timestamps
and version strings.
* fix: address review on visual regression suite
- Widen visual.yml path filter to the whole e2e tree + playwright.config
so fixture/seed/setup changes that alter screenshots trigger a measure run
- Await document.fonts.ready without returning the non-serializable
FontFaceSet, which would throw in Playwright
- Import the canonical ServerInfo type from the fixtures instead of
redeclaring a narrowed copy
- Report workflow: on a bootstrap run with no prior baselines, show the
proposed candidate baselines instead of an empty "0 screens changed" table
- Add an empty changeset (only published-package change is inert testids)
* ci: run visual regression on lockfile/manifest changes
A Playwright or Chromium version bump alters pixel output, so a
pnpm-lock.yaml or package.json change can drift committed baselines
without touching any source path in the existing filter.