# Floating preview resize evidence

Use the current main scenario runner. Install dependencies with `vp i` and Chromium with `node scripts/node_modules/playwright-core/cli.js install chromium`.

Apply `scenario-browser.patch`. Copy `floating-preview-interruption.e2e.ts` under `scripts/scenarios/`. Run the launcher from the checkout in a separate shell: `headless-desktop node launch-chromium.cjs`.

Run:

```sh
T3CODE_DEV_SEED=0 T3CODE_SERVER_BROWSER_SANDBOX=0 T3_SCENARIO_INHERIT_ENV=T3CODE_DEV_SEED,T3CODE_SERVER_BROWSER_SANDBOX vp run scenarios:prove scripts/scenarios/floating-preview-interruption.e2e.ts --base 9efd960925f0899c0a6d045d128557c5d82818e8 --head 27e5cfc72bbeb83dc8f6dfad2b2bd15df8b4651b --upload-command 'ghdrop upload'
```

The scenario creates synthetic data through the project/thread CLI and the free replay provider. Preview viewport changes call the app's existing viewport command, which reaches the real server and Chromium preview stream. It does not mock React state or preview events.

The outer browser is headed Chromium under Xvfb, 1280x800, light theme. Chromium automation focus emulation is disabled so switching windows emits a real blur. The driver checks that windows differ, blur occurs, a resize changes geometry, and hover pointer events have buttons=0.

Stop the launcher with Ctrl+C after the runner finishes. No product code is changed.
