drive-fixture · git:20261027.de86d54 · 2026-10-27 · sha256 e7ce54f8fc933717
drive-fixture git:20261027.de86d54B
Immutable. This exact content never changes and is served at /api/v1/blob/e7ce54f8fc933717.
--- name: drive-fixture description: Run Wavefunction's disposable browser fixture (npm run dev:fixture) and use its scripted prompts to see interface changes, with no account or model. Use to check any change a user would see, such as the transcript, cards, composer, workbench or sidebar. --- # Drive the fixture `npm run dev:fixture` starts the real engine and interface on a throwaway workspace. A scripted model answers each chat; the commands, edits, Git and terminals it asks for run for real, in synthetic repositories. ## Start and stop ```sh npm run dev:fixture ``` - **Startup.** It picks free ports and prints, in order: the workspace folder, `Launcher PID: <pid>`, then `UI: http://127.0.0.1:<port>`. Open the UI address in the browser. - **Fixed ports.** Pass `-- --port <ui> --api-port <api>` for fixed ones. - **Stopping.** Stop it with Ctrl+C or `kill -INT <launcher pid>`. It stops everything it started and removes the workspace; check that it says so. A hard kill skips that cleanup. - **Seeded data.** Two projects: **Sandbox project**, with the chat **Welcome to Wavefunction**, a Git repository and a local remote; and **Second project**, with one chat. The model is `fixture-model`, so setup is already done. - **Slow history.** Set `WAVEFUNCTION_FIXTURE_THREAD_DELAY=10` to delay each chat's first history load, to check loading placeholders. ## Prompts Send these as chat messages. Anything else gets a one-line "Synthetic reply". | Message | Shows | |---|---| | `fixture: edit` | A skill read, a file read, an edit to `app.py` and a compile command. The Changes tab then shows the diff. | | `fixture: question` | The agent's question card, with choices and free text. | | `fixture: approval` | The card for a command outside the sandbox. Allowing it only runs `echo`. | | `fixture: irreversible` | The card for a command that can't be undone (a force push). Allowing it only adds a branch to the fixture's own remote. | | `fixture: terminal` | An agent terminal in the workbench. | | `fixture: fail` | A failed task and its error. | | `fixture: steering`, then `fixture: redirect` while it runs | A plan, a slow command, and a steering message applied to the running task. | | `fixture: slow` | A task that runs for about 12 s. Send another message to see queueing or steering. | | `fixture: helpers` | A helper chat started, steered and waited on, nested under its parent. | | `fixture: smooth` | A reply streamed in small pieces, to check word fades and scroll position. | | `fixture: transcript` | A long reply with headings, lists and code, to check scrolling. | | `fixture: table` | A wide Markdown table. | | `fixture: files` | Links to generated files (PDF, CSV, Markdown), to check previews. | | `/thorough-bug-review` | A slash skill captured and read. | ## Looking at it - **Text and structure.** Prefer reading the page's text or accessibility tree to screenshots; use a screenshot for layout and styling. - **Themes.** Check both themes when you change styling. - **Isolation.** Each chat is independent: use a new chat per scenario so earlier messages don't change what the scripted model does. - **Not covered.** Native-only behavior (the quit dialog, notifications, Keychain) needs the desktop app, not the fixture.