Files
kandev/docs/plans/quick-terminal/task-07-shared-tabs-e2e.md
T
2026-08-24 11:09:03 +00:00

114 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
id: "07-shared-tabs-e2e"
title: "Prove shared tabs across viewports"
status: done
wave: 7
depends_on:
- "04-per-tab-host-shell-sessions"
- "05-detachable-pty-lifecycle"
- "06-unified-quick-tabs"
plan: "plan.md"
spec: "../../specs/ui/requirements/quick-terminal.md"
---
# Task 07: Prove shared tabs across viewports
## Acceptance
- Desktop E2E proves first-create versus last-terminal reuse, same-session reconnect after modal
dismissal, grouped creation-menu behavior with tab-strip switching, conversation context-menu
rename, two independent PTYs, chat/terminal launcher selection, single-tab stop, fallback, focus
return, and tooltip absence.
- Host-shell integration E2E proves same-client idempotency, different-client concurrency,
independent command streams and stops, plus omitted-client compatibility.
- Pixel 5 E2E proves the same user value through touch with contained full-height geometry,
bottom-sheet menu behavior, 44 px controls/rows, internal scrolling, safe-area clearance, and no
document horizontal overflow; affected existing Quick Chat flows remain green.
## Verification
From the repository worktree:
```bash
(cd apps && pnpm install --frozen-lockfile)
(cd apps/web && pnpm e2e:run tests/terminal/quick-terminal.spec.ts tests/settings/host-shell-pty.spec.ts tests/chat/quick-chat.spec.ts tests/chat/entity-reference-composer.spec.ts)
(cd apps/web && pnpm e2e:run --project mobile-chrome tests/terminal/mobile-quick-terminal.spec.ts tests/chat/mobile-quick-chat-entry.spec.ts)
```
Confirm both managed-runner invocations discover the intended test counts, rebuild the backend and
production Vite assets, and tear down every worker-scoped backend and host-shell process.
## Files likely touched
- `apps/web/e2e/tests/terminal/quick-terminal.spec.ts`
- `apps/web/e2e/tests/terminal/mobile-quick-terminal.spec.ts`
- `apps/web/e2e/tests/settings/host-shell-pty.spec.ts`
- `apps/web/e2e/tests/chat/quick-chat.spec.ts` (only for selectors/assertions affected by the menu)
- `apps/web/e2e/tests/chat/mobile-quick-chat-entry.spec.ts` (only for affected touch entry/menu flow)
- `apps/web/e2e/tests/terminal/quick-terminal-helpers.ts` (new only if shared PTY polling/selection
would otherwise push a spec over limits)
- `docs/plans/quick-terminal/plan.md` (status/results only)
- `docs/plans/quick-terminal/task-07-shared-tabs-e2e.md` (status/results only)
## Dependencies
- Tasks 04–06 must be done so the API, PTY lifecycle, state, launchers, and shared dialog are
available through the production build.
## Parallelism
Sequential. The managed runner owns the same build artifacts and the scenarios share host-shell and
dialog lifecycle assumptions.
## Inputs
- Every `Scenarios` item in `docs/specs/ui/requirements/quick-terminal.md`.
- Plan: `E2E Tests`, `Mobile design contract`, and all lifecycle/geometry risks.
- Existing patterns:
`quick-terminal.spec.ts`, `mobile-quick-terminal.spec.ts`,
`host-shell-pty.spec.ts`, `mobile-quick-chat-entry.spec.ts`, animation-aware geometry guidance
in `.agents/skills/e2e/SKILL.md`, and mobile checks in `.agents/skills/mobile-parity/SKILL.md`.
## Implementation notes
- Follow E2E TDD: update assertions for the old standalone dialog first and observe them fail before
implementing or completing the corresponding shared behavior.
- Drive creation, switching, close, and launcher reuse through visible UI. Use the low-level API only
in `host-shell-pty.spec.ts`.
- Scope all xterm/buffer selectors to the active terminal tab; hidden or detached tabs may coexist.
- Use unique command markers per terminal and assert each marker is absent from its sibling.
- Use `.tap()` in the mobile spec, wait for finite overlay animations before geometry checks, and
assert both element containment and document `scrollWidth`.
- Do not use fixed sleeps for shell readiness; poll the scoped test buffer or observable state.
## Risks
- A test can falsely pass by reading the first globally mounted xterm. Every terminal assertion must
be scoped to the active tab/container.
- Closing the modal is no longer session teardown. Teardown evidence must explicitly close terminal
tabs or stop sessions so the managed runner does not rely only on process exit.
## Output contract
Report discovered test counts, exact commands/outcomes, rendered desktop/phone geometry, failure
artifact paths if any, explicit session/process teardown evidence, blockers, residual risks, and
synchronized task/plan status. Set this task to `in_progress` before test edits and replace
`## Results` before marking it `done`.
## Results
- Updated desktop shared Quick Chat scenarios to cover first-terminal creation, dismissal and
same-session reattach, grouped creation-menu behavior with tab-strip switching, independent
PTYs, launcher selection, single-terminal close/fallback, focus return, and the absence of the old
standalone footer; the cross-device chat scenario also covers context-menu rename.
- Added low-level host-shell coverage for legacy starts, same-client idempotency, distinct-client
concurrency and streams, independent stop, malformed UUID rejection, and omitted-client
compatibility.
- Added Pixel 5 coverage for the shared full-height dialog, safe-area classes, 44px launch/menu
targets, bottom-sheet geometry, internal terminal scrolling, close/reopen behavior, and zero
document horizontal overflow; existing mobile Quick Chat entry scenarios remain green.
- `cd apps/web && pnpm e2e:run tests/terminal/quick-terminal.spec.ts tests/settings/host-shell-pty.spec.ts tests/chat/quick-chat.spec.ts tests/chat/entity-reference-composer.spec.ts` — managed Docker runner rebuilt the backend and Vite assets; 20 tests passed.
- `cd apps/web && pnpm e2e:run --project mobile-chrome tests/terminal/mobile-quick-terminal.spec.ts tests/chat/mobile-quick-chat-entry.spec.ts` — managed Docker runner rebuilt the backend and Vite assets; 5 tests passed.
- Both managed runners completed their worker teardown, including the temporary remote fixture
repositories and worker-scoped backend/host-shell processes; no failure artifacts remained.