The runner is a legacy webpack bundle that packages `@packages/reporter` and `@packages/driver` for use inside the Cypress test iframe. It is being progressively deprecated in favor of `@packages/app`, but still owns the production `cypress_runner.js` bundle and runner-level styles.

**Key Commands**

```bash
# Build the webpack bundle (development)
yarn workspace @packages/runner build

# Build for production (minified)
yarn workspace @packages/runner build-prod
```

**Architecture**

- `src/main.jsx` — Entry point; assembles reporter and driver into the runner iframe
- `src/cross-origin.js` — Handles cross-origin iframe communication
- `src/main.scss` — Runner-level styles (including legacy Cypress styles)
- `unified-runner.tsx` — Unified runner entry used in some Cypress app contexts
- `webpack.config.ts` — Webpack configuration for the runner bundle
- `dist/` — Generated bundle output (do not edit)

**Gotchas / Notes**

- This package is deprecated in favor of `@packages/app`. Do not add new features here; migrate to `@packages/app` instead.
- Tests were moved to `@packages/app`; running `cypress:open` or `cypress:run` from this package will error.
- Nx implicit dependencies on `@packages/driver`, `@packages/reporter`, and `@packages/config` mean any change in those packages invalidates the runner's Nx cache and triggers a rebuild.
- `dom.js` uses webpack-specific loaders and cannot be imported directly by Vite.

**Integration Points**

- Bundles `@packages/reporter` and `@packages/driver` as implicit webpack dependencies.
- The built `dist/cypress_runner.js` is served by `@packages/server` to the browser.

**Auto-Generated Files**

- `dist/` — Generated by webpack; do not edit by hand.
