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

4.5 KiB

id, title, status, wave, depends_on, plan, spec
id title status wave depends_on plan spec
02-quick-terminal-e2e Prove Quick Terminal across viewports done 2
01-quick-terminal-ui
plan.md ../../specs/ui/requirements/quick-terminal.md

Task 02: Prove Quick Terminal across viewports

Acceptance

  • Desktop and tablet UI tests prove launcher order, usable hit targets, larger floating-dialog geometry, viewport containment, PTY mount, dismissal, and focus return.
  • Pixel 5 coverage proves touch access to a full-height terminal with safe contained geometry, no document horizontal overflow, dismissal, and focus return.
  • The existing host-shell integration scenarios still prove command I/O, idempotent start, and clean stop after the shared dialog change.

Verification

From the repository worktree:

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
cd apps/web && pnpm e2e:run --project mobile-chrome tests/terminal/mobile-quick-terminal.spec.ts

Confirm each managed-runner invocation discovers the intended tests, rebuilds the production Vite assets, and tears down its worker-scoped backend/session state.

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 (only if selector/lifecycle coverage needs a focused update)
  • docs/plans/quick-terminal/plan.md (status/results only)
  • docs/plans/quick-terminal/task-02-quick-terminal-e2e.md (status/results only)

Dependencies

  • Task 01 must be done so the provider, launchers, responsive presentation, and stable test IDs exist.

Parallelism

Sequential. These scenarios share the Quick Terminal surface and host-shell lifecycle, and the managed E2E runner owns the same build/test artifact pipeline.

Inputs

  • Spec: every Scenarios item in docs/specs/ui/requirements/quick-terminal.md.
  • Plan: E2E Tests, Mobile design contract, and Risks in plan.md.
  • Existing patterns: apps/web/e2e/tests/settings/host-shell-pty.spec.ts, apps/web/e2e/tests/chat/mobile-quick-chat-entry.spec.ts, and the animation-aware geometry guidance in .agents/skills/e2e/SKILL.md.

Implementation notes

  • Follow E2E TDD: add each focused Playwright scenario and observe its launcher/geometry assertion fail before completing the corresponding production behavior.
  • Exercise the feature through visible UI controls. API calls may seed workspace preconditions but must not replace launcher, dialog, dismissal, or focus assertions.
  • Wait for finite dialog animations before measuring. Use bounding boxes and elementFromPoint() for containment/hit-target proof rather than fixed sleeps.
  • Use .tap() in the mobile spec and let the mobile-chrome project supply its Pixel 5 device.
  • Scope terminal locators to the Quick Terminal dialog because other terminal/xterm instances may be mounted elsewhere in the app.

Output contract

Report discovered test counts, exact commands and outcomes, rendered desktop/tablet/phone geometry, artifact paths on failure, teardown evidence, blockers, residual risks, and the task/plan status update in this conversation. Set this task to in_progress before test edits, then replace ## Results and mark it done only after every acceptance condition and targeted command passes.

Results

  • cd apps/web && pnpm exec playwright test --config e2e/playwright.config.ts --project=chromium tests/terminal/quick-terminal.spec.ts — passed; 2 desktop/tablet tests.
  • cd apps/web && pnpm exec playwright test --config e2e/playwright.config.ts --project=mobile-chrome tests/terminal/mobile-quick-terminal.spec.ts — passed; 1 Pixel 5 test.
  • cd apps/web && pnpm e2e:run tests/terminal/quick-terminal.spec.ts tests/settings/host-shell-pty.spec.ts — passed; managed Docker runner rebuilt backend/Vite/plugin assets, ran 4 tests (2 host-shell lifecycle + 2 desktop/tablet UI), and tore down the worker backend.
  • cd apps/web && pnpm e2e:run --project mobile-chrome tests/terminal/mobile-quick-terminal.spec.ts — passed; managed Docker runner rebuilt assets, ran 1 Pixel 5 test, and tore down the worker backend.
  • Rendered checks covered the 1280px desktop floating surface, 700px tablet floating surface, and Pixel 5 full-height surface; all dialog/terminal bounds remained within the viewport, with zero mobile document horizontal overflow.
  • No failure artifacts or residual host-shell sessions remained after the managed runs.