# Browser characterization tests These Playwright tests lock the observable portfolio behavior at the browser boundary. Ordinary suites exercise the built `dist/` output through the local preview server. The resilience suite additionally creates an authenticated, ephemeral test client: Playwright owns the raw per-run token, while only its SHA-256 digest enters that temporary bundle. Global fault hooks are absent from and rejected in production artifacts. ## Run Build the preview artifacts, then run the whole browser suite: ```bash npm run build:preview npm run test:browser ``` Run only the Phase 2 journey gate: ```bash npm run test:browser -- tests/browser/journey-integration.spec.ts tests/browser/reduced-motion.spec.ts tests/browser/static-fallback.spec.ts tests/browser/bfcache-lifecycle.spec.ts ``` ## Add a case 1. Name the concrete regression the case catches. 2. Use literal inputs and expected browser-visible results. 3. Install `scene-instrumentation.ts` before navigation when resource counts or platform calls are the observable boundary. 4. Prefer browser-owned `page.addInitScript()` or routing. A lifecycle fault that requires an application seam must use one of the closed F1–F13 hook names and the authenticated helper. 5. Run the new case against both configured Chromium profiles, then run the full suite. Never copy credentials, private project identifiers, or private URLs into a fixture. Use clearly fake values when a credential-shaped input is required. ## Browser evidence status - Executable here: current Playwright Chromium 151, desktop and a simulated mobile viewport. The simulated viewport is responsive evidence only and is not described as a physical Pixel result. - Pending because no runnable binary/channel is installed: current Firefox, WebKit/Safari, Edge, and the actual previous-stable desktop majors. Installed Chromium 148/145 builds are older retained binaries, not the required previous-stable 150 evidence, so they are not mislabeled or substituted. - Pending physical release evidence: current iOS Safari on iPhone 13 and Android Chromium on Pixel 6, including `physical-drive.v1`. These pending cells remain release checkpoints; this repository does not turn missing hardware or browser binaries into passing emulation results.