mirror of
https://github.com/getpaseo/paseo.git
synced 2026-11-01 22:23:07 +00:00
91 lines
5.0 KiB
Markdown
91 lines
5.0 KiB
Markdown
# Workspace creation focus QA
|
|
|
|
Contribution: Christoph Leiter's [PR #2986](https://github.com/getpaseo/paseo/pull/2986).
|
|
Baseline: current main `433e67b18b7964a92d593bdc78c518143accfc8b`.
|
|
Original recorded implementation: `9457bb6f4053b6ab36e7eabcae0a2902176635c8`.
|
|
Latest verified implementation: `1b96fa4fdcf147f7d412f210ff45170a9112da8d`.
|
|
|
|
These are recorded Chromium interactions with the real Expo app and isolated Linux daemons.
|
|
Workspace registry updates, git worktree creation, uploaded files, and shell terminals are real.
|
|
Playwright holds `workspace.create.response` until after the user changes workspace
|
|
(or deliberately stays). Recording runs add 1.5 seconds of viewing time.
|
|
The agent uses Paseo's built-in simulated provider, model `ten-second-stream`,
|
|
mode `load-test`, thinking `low`. This does not verify a live external AI provider.
|
|
The simulated provider echoes text only; file preservation is checked at the real
|
|
create request and by comparing the uploaded file's bytes, not by expecting its
|
|
simulated transcript to echo attachment metadata.
|
|
|
|
## Before and after
|
|
|
|
| Journey | Current main | Fix |
|
|
| --- | --- | --- |
|
|
| Worktree + chat | [Recording](before-worktree-chat.webm) | [Recording](after-worktree-chat.webm) |
|
|
| Worktree + terminal | [Recording](before-worktree-terminal.webm) | [Recording](after-worktree-terminal.webm) |
|
|
| Empty worktree | [Recording](before-worktree-empty.webm) | [Recording](after-worktree-empty.webm) |
|
|
| Local workspace + chat | [Recording](before-local-chat.webm) | [Recording](after-local-chat.webm) |
|
|
| Local workspace + terminal | [Recording](before-local-terminal.webm) | [Recording](after-local-terminal.webm) |
|
|
|
|
The worktree terminal recording shows the chosen `main` workspace remaining active,
|
|
then opening the new workspace reveals `captured: Hello from the navigation guard`.
|
|
[Preserving a newer draft](after-newer-draft.webm) and
|
|
[empty local workspace](after-local-empty.webm) are also recorded.
|
|
|
|

|
|

|
|
|
|
## Context ownership repair verification
|
|
|
|
The latest head also preserves a newer fork draft's setup and chat-history context,
|
|
including context-only edits that do not change the text version. Cleanup captures
|
|
ownership before workspace creation begins. A regression using the previous head's
|
|
background helper fails; all seven cleanup tests pass on the repair.
|
|
|
|
All ten browser journeys were rerun together and recorded on this repair:
|
|
[complete results](context-e2e.txt), [newer-draft recording](after-context-repair-newer-draft.webm).
|
|
These recordings repeat the real-daemon method and platform/provider limitations above.
|
|
The fork context race is verified through the real draft stores in the focused unit test;
|
|
the browser newer-draft journey covers text preservation.
|
|
|
|
[Context regression before](context-red.txt), [after](context-green.txt),
|
|
[typecheck](context-typecheck.txt), [lint](context-lint.txt), [format](context-format.txt).
|
|
|
|
## Results
|
|
|
|
- Current-main baseline: both original local journeys fail on the wrong final route.
|
|
- Current-main baseline: all three explicit worktree journeys fail on the wrong final route.
|
|
- Fix: seven local journeys pass: chat/terminal/empty with leave/stay, plus reopening a newer draft.
|
|
- Fix: three explicit worktree journeys pass: chat/terminal/empty with navigation away.
|
|
- Revisited workspaces retain exactly one requested agent or terminal; empty workspaces contain neither.
|
|
- Chat request retains prompt, provider, model, mode, thinking level, working directory, and uploaded file contents.
|
|
- Submitted drafts clear; a newer draft remains intact.
|
|
- Focused tests: presence 4, background handoff 5, existing workspace draft-tab tests 5 passed.
|
|
- New draft-ownership regression failed before its repair and passed afterward.
|
|
- Full typecheck, lint, and format passed.
|
|
|
|
## Reproduce
|
|
|
|
From the verified checkout:
|
|
|
|
```sh
|
|
npm install
|
|
npm run build:server
|
|
npm run build:app-deps
|
|
CI=1 E2E_WORKERS=1 E2E_RECORD_VIDEO=1 npm run test:e2e --workspace=@getpaseo/app -- e2e/browser/new-workspace-navigation-guard.spec.ts --retries=0
|
|
npm run test --workspace=@getpaseo/app -- src/screens/new-workspace/background-handoff.test.ts src/screens/new-workspace/screen-presence.test.ts src/composer/draft/workspace-tab.test.ts --bail=1
|
|
npm run typecheck
|
|
npm run lint
|
|
npm run format
|
|
```
|
|
|
|
The recorded local run and worktree run were separate focused invocations; the
|
|
worktree invocation used `--grep 'worktree '`. Baseline runs used the same
|
|
tests with the two modified production entry files restored from the pinned main
|
|
commit. Extra helper files are unreachable from that baseline.
|
|
|
|
Raw command output is in the adjacent `.txt` files. ANSI formatting and local
|
|
home/checkout paths have been removed; test results are unchanged.
|
|
|
|
Tested: Linux Chromium web. Not independently tested: iOS, Android, Electron on
|
|
Linux/macOS/Windows, or live external agent providers. No protocol fields changed.
|
|
The main developer daemon was not restarted or used for QA.
|