3.4 KiB
3.4 KiB
id, title, status, wave, depends_on, plan, spec
| id | title | status | wave | depends_on | plan | spec | |
|---|---|---|---|---|---|---|---|
| 03-executor-availability-e2e | Prove executor-specific behavior | done | 3 |
|
plan.md | ../../specs/ui/embedded-vscode-executor-availability.md |
Task 03: Prove Executor-Specific Behavior
Acceptance
- Desktop Playwright coverage proves unsupported capability hides embedded VS Code while retaining a compatible editor, and supported capability shows it independently of browser platform.
- Capability test routing rewrites only the correlated
task.session.statusresponse and proxies every unrelated WebSocket frame unchanged. - Phone-viewport coverage retains the intentional mobile topbar, absence of desktop editor controls, and no horizontal overflow without relying on boot host metadata.
Verification
From apps/:
pnpm --filter @kandev/web e2e:run -- tests/task/executor-embedded-vscode-availability.spec.ts -- --project=chromium
pnpm --filter @kandev/web e2e:run -- tests/task/mobile-executor-embedded-vscode-availability.spec.ts -- --project=mobile-chrome
If the WebSocket helper has extractable pure frame-rewrite logic, add and run its focused Vitest test before Playwright. Do not add a test-only production API or runtime flag.
Files likely touched
apps/web/e2e/helpers/session-capabilities.ts(new)apps/web/e2e/tests/task/executor-embedded-vscode-availability.spec.ts(replace old host-platform spec)apps/web/e2e/tests/task/mobile-executor-embedded-vscode-availability.spec.ts(rename and update)apps/web/e2e/tests/task/windows-host-embedded-vscode-availability.spec.ts(remove)apps/web/e2e/tests/task/mobile-windows-host-embedded-vscode-availability.spec.ts(remove)
Dependencies
- Task 02 supplies the active-session UI behavior and removes the boot-host helper.
Parallelism
Parallel-safe with Task 04 only when the user explicitly authorizes subagents. Otherwise run sequentially in the primary conversation.
Inputs
- Spec scenarios 1–3, 8, and 9.
- Plan section: E2E tests.
- Existing WebSocket proxy pattern:
apps/web/e2e/helpers/ws-drop.ts. - Existing supported launch smoke:
apps/web/e2e/tests/settings/vscode-open-panel.spec.ts.
Risks
- Correlate request IDs; do not mutate every response containing a
capabilitieskey. - Preserve newline-delimited frames and binary frames exactly when they are not the target.
- Avoid starting code-server in menu-availability tests; the existing launch smoke owns that cost.
Output contract
Report scenarios covered, files replaced/removed, exact Playwright results, and any fixture
limitations. Update this task to done and its plan checkbox/status.
Completion record
- Replaced both host-platform specs with executor-capability desktop and mobile specs. Added a
WebSocket proxy helper that records only
task.session.statusrequest IDs, rewrites only their response capability, and forwards all other frames unchanged. ./e2e/scripts/run-e2e.sh --no-build --project chromium -- tests/task/executor-embedded-vscode-availability.spec.tspassed: 2 tests.pnpm e2e:run -- tests/task/mobile-executor-embedded-vscode-availability.spec.ts --project=mobile-chromepassed: 1 test.- The desktop suite covers unsupported-session filtering with a retained custom editor and a supported capability under a Windows browser platform. The mobile suite confirms the compact header, no desktop editor control, and no horizontal overflow.