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]>
45 lines
1.7 KiB
TypeScript
45 lines
1.7 KiB
TypeScript
import { defineConfig } from '@playwright/test'
|
||
import { BREAKPOINTS } from './e2e/branded/surfaces'
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Branded web3-surface regression — dedicated config.
|
||
// ---------------------------------------------------------------------------
|
||
// One project per breakpoint (390 / 768 / 1280 / 1920) so the matrix reporter
|
||
// renders a (surface × breakpoint) grid. Real Chrome/Blink via channel:'chrome'.
|
||
// Read-only against LIVE production surfaces — no state, no auth, no txns.
|
||
//
|
||
// npx playwright test -c playwright.branded.config.ts # full matrix
|
||
// npx playwright test -c playwright.branded.config.ts --project=1280
|
||
//
|
||
// The main playwright.config.ts testIgnores e2e/branded so the two suites are
|
||
// independent (one way to run each).
|
||
export default defineConfig({
|
||
testDir: './e2e/branded',
|
||
fullyParallel: true,
|
||
forbidOnly: !!process.env.CI,
|
||
retries: 1,
|
||
workers: 4, // modest concurrency — read-only against LIVE prod surfaces
|
||
timeout: 90_000,
|
||
expect: { timeout: 15_000 },
|
||
reporter: [
|
||
['./e2e/branded/matrix-reporter.ts'],
|
||
['list'],
|
||
['html', { outputFolder: 'branded-report/html', open: 'never' }],
|
||
['json', { outputFile: 'branded-report/results.json' }],
|
||
],
|
||
use: {
|
||
channel: 'chrome', // real Blink, not bundled chromium
|
||
trace: 'on-first-retry',
|
||
screenshot: 'only-on-failure',
|
||
video: 'off',
|
||
ignoreHTTPSErrors: true,
|
||
actionTimeout: 15_000,
|
||
navigationTimeout: 45_000,
|
||
bypassCSP: false,
|
||
},
|
||
projects: BREAKPOINTS.map((b) => ({
|
||
name: b.name,
|
||
use: { viewport: { width: b.width, height: b.height }, channel: 'chrome' },
|
||
})),
|
||
})
|