test(islands): add Playwright e2e specs for productivity islands #84

Merged
zaelgohary merged 1 commit from test/productivity-islands-e2e into development 2026-04-22 08:34:16 +00:00
Member

Summary

Adds Playwright end-to-end specs for the five productivity islands and strips back-references to earlier rounds from the existing Projects spec. Each spec boots the WASM app once, opens its island via the shell custom event, exercises the main CRUD/interaction paths, and asserts both DOM state and the matching JSON-RPC methods.

Closes #85

Changes

  • tests/e2e/projects.spec.ts — existing spec, comments cleaned up, no behavior change
  • tests/e2e/kanban.spec.ts (new)
    • parallel fan-out of projects.project.get + projects.task.get on mount
    • drag highlight only lands on the current target column (dispatches dragover across columns, asserts at most one retains the active border style)
    • card click opens a .dialog-overlay whose .dialog-title matches the clicked card, and the overlay closes on outside-click
    • drag autoscroll moves scrollLeft on the board container when a dragover near the right edge is dispatched
  • tests/e2e/sprints.spec.ts (new)
    • parallel projects.milestone.list + milestone.get
    • Delete is guarded by a ConfirmDialog; Cancel keeps the milestone; Confirm triggers milestone.delete exactly once
    • boolean-on-delete server response does not leak to the UI
    • MilestoneCard renders a formatted date, not the literal Due date set
  • tests/e2e/tasks.spec.ts (new)
    • Create (task.new + task.set), row visible, Delete shows ConfirmDialog, Cancel preserves the row, Confirm fires task.delete
    • bool-on-delete error is swallowed
  • tests/e2e/stories.spec.ts (new)
    • Same create + ConfirmDialog + bool-on-delete flow via projects.story.*

All specs share the existing RPC-monitor + waitForApp helpers and run serially (workers: 1 in playwright.config.ts), so they share one bundle load.

Test Results

Specs verified against the shared test instance (HERO_OS_URL=http://88.99.147.220:29988/hero_os/ui):

  • projects.spec.ts: pass
  • kanban.spec.ts: 4 tests pass (fan-out, drag-highlight, card-click, autoscroll)
  • sprints.spec.ts: 2 tests pass (list+delete, card-date)
  • tasks.spec.ts: pass
  • stories.spec.ts: pass

Manual verification

  • cd tests/e2e && npm install
  • HERO_OS_URL=<deployed-build> npx playwright test projects.spec.ts kanban.spec.ts sprints.spec.ts tasks.spec.ts stories.spec.ts --reporter=list
  • All five specs pass against a fresh deployment of development
## Summary Adds Playwright end-to-end specs for the five productivity islands and strips back-references to earlier rounds from the existing Projects spec. Each spec boots the WASM app once, opens its island via the shell custom event, exercises the main CRUD/interaction paths, and asserts both DOM state and the matching JSON-RPC methods. ## Related Issue Closes #85 ## Changes - `tests/e2e/projects.spec.ts` — existing spec, comments cleaned up, no behavior change - `tests/e2e/kanban.spec.ts` (new) - parallel fan-out of `projects.project.get` + `projects.task.get` on mount - drag highlight only lands on the current target column (dispatches dragover across columns, asserts at most one retains the active border style) - card click opens a `.dialog-overlay` whose `.dialog-title` matches the clicked card, and the overlay closes on outside-click - drag autoscroll moves `scrollLeft` on the board container when a `dragover` near the right edge is dispatched - `tests/e2e/sprints.spec.ts` (new) - parallel `projects.milestone.list` + `milestone.get` - Delete is guarded by a ConfirmDialog; Cancel keeps the milestone; Confirm triggers `milestone.delete` exactly once - boolean-on-delete server response does not leak to the UI - `MilestoneCard` renders a formatted date, not the literal `Due date set` - `tests/e2e/tasks.spec.ts` (new) - Create (`task.new` + `task.set`), row visible, Delete shows ConfirmDialog, Cancel preserves the row, Confirm fires `task.delete` - bool-on-delete error is swallowed - `tests/e2e/stories.spec.ts` (new) - Same create + ConfirmDialog + bool-on-delete flow via `projects.story.*` All specs share the existing RPC-monitor + `waitForApp` helpers and run serially (`workers: 1` in `playwright.config.ts`), so they share one bundle load. ## Test Results Specs verified against the shared test instance (`HERO_OS_URL=http://88.99.147.220:29988/hero_os/ui`): - `projects.spec.ts`: pass - `kanban.spec.ts`: 4 tests pass (fan-out, drag-highlight, card-click, autoscroll) - `sprints.spec.ts`: 2 tests pass (list+delete, card-date) - `tasks.spec.ts`: pass - `stories.spec.ts`: pass ## Manual verification - [ ] `cd tests/e2e && npm install` - [ ] `HERO_OS_URL=<deployed-build> npx playwright test projects.spec.ts kanban.spec.ts sprints.spec.ts tasks.spec.ts stories.spec.ts --reporter=list` - [ ] All five specs pass against a fresh deployment of `development`
test(islands): add Playwright e2e specs for productivity islands
Some checks failed
Build and Test / build (pull_request) Failing after 3s
bd3262aa2d
- projects: create → detail → edit → delete CRUD flow with breadcrumb
  routing assertions and RPC-method verification
- kanban: parallel list_projects + list_all_tasks fan-out; drag highlight
  only on the current target column; board horizontal autoscroll during
  drag; card click opens a detail dialog
- sprints: parallel list + ConfirmDialog-guarded delete; MilestoneCard
  renders a formatted date instead of the literal "Due date set" label
- tasks: create + delete with ConfirmDialog; parallel list fan-out; no
  boolean-on-delete deserialization leak to the UI
- stories: create + detail + delete with ConfirmDialog and the same
  bool-on-delete tolerance
zaelgohary merged commit 13ef116ed1 into development 2026-04-22 08:34:16 +00:00
zaelgohary deleted branch test/productivity-islands-e2e 2026-04-22 08:34:16 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/hero_os!84
No description provided.