70 lines
3.9 KiB
Markdown
70 lines
3.9 KiB
Markdown
---
|
|
id: "04-e2e-docs"
|
|
title: "Desktop and mobile E2E plus docs"
|
|
status: completed
|
|
wave: 4
|
|
depends_on: ["03-status-bar-item"]
|
|
plan: "plan.md"
|
|
spec: "../../specs/lsp-file-intelligence/spec.md"
|
|
---
|
|
|
|
# Task 04: Desktop and Mobile E2E Plus Docs
|
|
|
|
## Acceptance
|
|
|
|
- Production-build desktop E2E proves launched/long-running initialization, Stop availability, status-bar relocation, persistence, lifecycle use, and active-file scoping.
|
|
- Coarse-pointer tablet proves effective toolbar fallback and drawer geometry; phone proves no control, socket, or process even with the status-bar preference.
|
|
- Public docs explain Kotlin initialize/Gradle behavior, the absence of a universal ETA/automatic timeout, and placement fallbacks.
|
|
|
|
## TDD sequence
|
|
|
|
1. Extend the held-initialize and placement Playwright scenarios and confirm they fail against the production build for the expected missing copy/item.
|
|
2. Make only test-support adjustments required for deterministic browser-time advancement and setting restoration.
|
|
3. Run desktop, tablet, and phone scenarios; then update and validate public docs.
|
|
|
|
## Verification
|
|
|
|
```bash
|
|
cd apps/web && pnpm e2e:run tests/lsp/lsp-file-intelligence.spec.ts
|
|
cd apps/web && pnpm e2e:run --no-build -- --project=mobile-chrome tests/lsp/mobile-lsp-file-intelligence.spec.ts
|
|
node --test scripts/validate-public-docs.test.mjs
|
|
node scripts/validate-public-docs.mjs
|
|
```
|
|
|
|
## Files likely touched
|
|
|
|
- `apps/web/e2e/tests/lsp/lsp-file-intelligence.spec.ts`
|
|
- `apps/web/e2e/tests/lsp/mobile-lsp-file-intelligence.spec.ts`
|
|
- `apps/web/e2e/tests/lsp/lsp-e2e-helpers.ts`
|
|
- `apps/web/e2e/fixtures/fake-lsp-server.mjs` only if deterministic held-init evidence needs another observable event
|
|
- `docs/public/developer-tools.md`
|
|
- `docs/public/feature-status.md`
|
|
|
|
## Dependencies
|
|
|
|
Task 03.
|
|
|
|
## Parallelism
|
|
|
|
Sequential. E2E and docs verify the completed vertical slice.
|
|
|
|
## Inputs
|
|
|
|
- Spec initialization, placement, tablet fallback, and phone boundary scenarios.
|
|
- Existing fake Kotlin initialize hold/release controls and App status bar E2E surface.
|
|
- E2E skill requirements for production builds, setting restoration, and mobile geometry.
|
|
|
|
## Output contract
|
|
|
|
Record failing/passing Playwright evidence, screenshots or exact rendered verification, docs validation, files changed, blockers/risks, and update this task plus `plan.md`.
|
|
|
|
## Result
|
|
|
|
- RED: the desktop placement scenario timed out because the shared E2E status helper only located the editor-toolbar trigger. The first pass also exposed preview-tab retention and selector assumptions in the new scenario.
|
|
- GREEN: the production build passed all 13 desktop LSP scenarios in 1.3 minutes. This includes held initialization, status-bar persistence and active-editor scoping, protocol navigation, shared connections, secondary repositories, reload, crash recovery, archive cleanup, and connection capacity.
|
|
- Browser time advances deterministically past the 60-second threshold. The held Kotlin server remains in `starting`, shows possible Gradle-import guidance without an ETA or percentage, and keeps Stop enabled until the initialize response is released.
|
|
- The mobile Chromium project passed all 3 scenarios: phone creates no control, socket, or process; coarse-pointer tablet preserves `status_bar` while using the 44 px toolbar and contained drawer; mobile Editors guidance persists without horizontal overflow.
|
|
- Every E2E-modified user setting is restored in `finally`, and the shared helper now opens either status trigger.
|
|
- Public docs describe initialization semantics, possible Kotlin Gradle work, no automatic timeout/universal ETA, and responsive placement. All 58 public-doc validator tests and all 41 published pages pass validation.
|
|
- Review follow-up: the production-build desktop placement scenario now opens a binary `.kt` fixture, proves the static viewer is rendered, and proves `builtin:lsp` is absent before continuing through unsupported, non-file, and restored Monaco states.
|