# Browser characterization tests These Playwright tests lock the observable portfolio behavior at the browser boundary. They exercise the built `dist/` output through the local preview server rather than replacing Vue, Three.js, WebGL, or Web Audio with production test hooks. ## 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. Keep failure injection in `page.addInitScript()` or Playwright routing; do not add a test API to the application bundle. 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.