Files
zeekayandHanzo Dev 6efce1c2d2 test(e2e): branded web3-surface matrix — live · functional · branded @ 4 breakpoints
Durable regression suite proving every public surface across Lux/Zoo/Hanzo/Pars
(explorers, wallets, id, votes, work boards, bridges, safe, clouds, exchanges)
is live, functional, and correctly branded at 390/768/1280/1920 — real
Chrome/Blink (channel:'chrome'), read-only (no txns, no wallet-connect, no auth;
the login form is asserted, never submitted).

- e2e/branded/surfaces.ts   — ONE source-of-truth table (surface × posture × flags);
                              breakpoint-scoped flags carry a reason + flip condition
- e2e/branded/branded.spec.ts — table-driven 8-check battery (the owner's 6-point
                              rubric: 200 · branded head + zero cross-brand leak ·
                              no overflow · no app-console-errors · key control
                              visible · brand font); gate vs flag vs stale-flag
- e2e/branded/matrix-reporter.ts — renders the surface × breakpoint PASS/FLAG/FAIL
                              grid + defect ledger; writes branded-report/matrix.{md,txt,json}
- playwright.branded.config.ts — breakpoints as projects, chrome channel, matrix reporter
- e2e.yml `branded` job + README + LLM.md section

Baseline 104 cells: 67 pass · 37 flagged (each with a flip condition) · 0
regressions. Only a NEW un-flagged failure turns the run red. Screenshots →
~/Desktop/lux-shots-e2e/. Bumps @luxfi/universe 1.0.1 → 1.0.2.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-26 15:46:04 -07:00

3.4 KiB
Raw Permalink Blame History

Branded web3-surface regression

Proves every public web3 surface across all four orgs (Lux / Zoo / Hanzo / Pars) is LIVE · FUNCTIONAL · correctly BRANDED at four breakpoints (390 / 768 / 1280 / 1920), with zero cross-brand leakage — the white-label invariant. Real Chrome/Blink (channel: 'chrome'), read-only against LIVE production surfaces (no transactions, no wallet-connect, no auth — the login/connect form is asserted, never submitted).

Run

npm run test:branded             # full matrix (surfaces × 4 breakpoints)
npm run test:branded:1280        # just the 1280 column
npx playwright test -c playwright.branded.config.ts --project=390 --grep bridge
npm run test:branded:report      # open the HTML report

Screenshots → ~/Desktop/lux-shots-e2e/<surface>-<bp>.png (one per cell). Matrix artifacts → branded-report/{matrix.md,matrix.txt,matrix.json} (gitignored).

What each cell asserts (the owner's 6-point rubric → 8 concrete checks)

# check asserts
1 http HTTP 200 (or a documented redirect that lands 200)
2 title / favicon / leak branded <title> + a real favicon + zero foreign brand in the <head> (title, meta, favicon/logo asset URLs)
3 overflow no horizontal overflow (scrollWidth ≤ innerWidth)
4 console no app-origin console errors / uncaught exceptions (3rd-party telemetry + benign resource-4xx allow-listed, with rationale)
5 key the key interactive control (Connect / Sign-in / chain selector …) is present and visible
6 font brand font present — a broken Times/serif fallback fails. Brand accent is captured as an observational note (computed-accent extraction is too noisy to gate)

Body references to other chains (a bridge listing "Lux C-Chain" as a source, a wallet listing "Avalanche" as a network) are legitimate product content and are recorded as a note, never a leak — the leak gate is the <head> only.

Gate vs. flag (the durable-regression model)

The spec never hard-codes "known broken." It runs all 8 checks on every surface and consults surfaces.ts:

  • posture: 'live' — a surface we own; every check gates (a new failure is a real regression → the run goes red ✗) unless that check is listed in flags.
  • flags[check] — a KNOWN, documented defect: that one check is demoted GATE→FLAG ⚑ with a reason + a flip condition (when to delete the flag). A flag may be scoped to specific breakpoints via bps (e.g. a mobile-only overflow), so the un-covered breakpoints still gate.
  • posture: 'down' | 'foreign-domain' — documented-unreachable / serves a different company (owner domain-reclaim pending); nothing gates, the whole surface is a FLAG.
  • Stale flags — if a flagged check starts passing, the run reports it as STALE so the table self-cleans.

Legend: ✓ pass · ⚑ documented flag (expected, carries a flip) · ✗ regression (un-flagged failure — the only thing that fails CI) · · not run.

Adding / updating a surface

Edit surfaces.ts only — the spec + reporter are a pure function of the table. To accept a newly-discovered defect, add a flag with a concrete flip condition (and bps if breakpoint-specific); to prove a fix, delete the flag and watch the cell go green.