tests: end-to-end messaging regression #71

Merged
zaelgohary merged 1 commit from development_add_messaging_e2e_test into development 2026-04-19 09:54:05 +00:00
Member

Summary

Adds an end-to-end Playwright regression for the messaging archipelago. Single combined test so the WASM bundle boots only once (~70s end-to-end).

What it covers

Check Ticket
No 1970 / 00:00 in the chat list hero_archipelagos#44, #55
DM rows resolve the contact name, not DM with <pubkey> — list + chat header hero_archipelagos#54
Opening a chat fires 3 RPCs (list_messages + conversation.get + mark_as_read) and zero chatmessage.get — confirms the N+1 fix hero_archipelagos#53, hero_osis#26
mark_as_read invoked on open; unread badge clears hero_archipelagos#49
Sent bubble appears immediately hero_archipelagos#45
Chat auto-scrolls to bottom after send hero_archipelagos#47
Chat list preview updates with the new message hero_archipelagos#50
New bubble's HH:MM is within 2 minutes of wall clock (verifies the server-side created_at stamp) hero_osis#25, hero_archipelagos#44
Rapid chat switch does not flash the previous chat's content hero_archipelagos#48
New Chat + actually moves a contact into Participants hero_archipelagos#46

Notes

  • helpers.ts now honours HERO_OS_URL so the same spec can target a remote instance via SSH tunnel or a local dev server; defaults to http://127.0.0.1:39988/hero_os/ui.
  • tests/e2e/screenshots/ added to .gitignore.
  • Depends on hero_archipelagos#56 and hero_osis#27 being deployed to the target instance; without them the assertions correctly fail.

Test plan

  • npx playwright test messaging.spec.ts — all assertions pass against the herodev deployment of both companion PRs
  • CI: re-run after both companion PRs merge to development
## Summary Adds an end-to-end Playwright regression for the messaging archipelago. Single combined test so the WASM bundle boots only once (~70s end-to-end). ## What it covers | Check | Ticket | |---|---| | No `1970` / `00:00` in the chat list | `hero_archipelagos#44`, `#55` | | DM rows resolve the contact name, not `DM with <pubkey>` — list + chat header | `hero_archipelagos#54` | | Opening a chat fires **3** RPCs (`list_messages` + `conversation.get` + `mark_as_read`) and **zero** `chatmessage.get` — confirms the N+1 fix | `hero_archipelagos#53`, `hero_osis#26` | | `mark_as_read` invoked on open; unread badge clears | `hero_archipelagos#49` | | Sent bubble appears immediately | `hero_archipelagos#45` | | Chat auto-scrolls to bottom after send | `hero_archipelagos#47` | | Chat list preview updates with the new message | `hero_archipelagos#50` | | New bubble's `HH:MM` is within 2 minutes of wall clock (verifies the server-side `created_at` stamp) | `hero_osis#25`, `hero_archipelagos#44` | | Rapid chat switch does not flash the previous chat's content | `hero_archipelagos#48` | | New Chat `+` actually moves a contact into Participants | `hero_archipelagos#46` | ## Notes - `helpers.ts` now honours `HERO_OS_URL` so the same spec can target a remote instance via SSH tunnel or a local dev server; defaults to `http://127.0.0.1:39988/hero_os/ui`. - `tests/e2e/screenshots/` added to `.gitignore`. - Depends on `hero_archipelagos#56` and `hero_osis#27` being deployed to the target instance; without them the assertions correctly fail. ## Test plan - [x] `npx playwright test messaging.spec.ts` — all assertions pass against the herodev deployment of both companion PRs - [ ] CI: re-run after both companion PRs merge to `development`
refactor: Remove deprecated island CSS classes
Some checks failed
Build and Test / test (push) Failing after 25s
dae6b6edd6
- Remove all island-specific CSS classes and comments
- Use hero_archipelagos_core::ISLAND_CSS for island component styles
- Update styles for settings and AI search panels
feat(windows): forward breadcrumb/action clicks to iframes (#35)
Some checks failed
Build and Test / test (push) Failing after 34s
ac63738c22
The WindowRoute contract doc (web_embed skill) promises that clicks on
the host chrome's breadcrumb chips and action buttons round-trip back
to iframe islands as hero:breadcrumb / hero:action postMessages — the
JS helper (hero-window-route.js) subscribes exactly to those. The host
was calling the native Rust callback but never posting to iframes, so
iframe islands couldn't receive clicks.

post_click_to_iframes walks up from the click target to the enclosing
window container (.window-shadow[-focused] / .island), finds all
child iframes, and posts { type, id } to each. Safe to call
unconditionally: native islands don't have iframes (no-op); iframe
islands' native callback isn't registered (the old path no-ops). One
click now covers both kinds.

Closes the last skill→code gap for issue #35.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
tests: end-to-end messaging regression
Some checks failed
Build and Test / test (pull_request) Failing after 25s
e62198e346
Adds a single Playwright spec that walks through the list →
open → send → switch → new-chat flow, asserting every fix landed
by hero_archipelagos #56 and hero_osis #27:

- chat list carries no epoch ("Jan 1970") or "00:00" timestamps
- DMs display the contact name (not the raw `DM with <pubkey>`), in
  both the list and the chat detail header
- opening a chat issues exactly 3 RPCs (list_messages + conversation.get
  + mark_as_read) and zero chatmessage.get — confirms the N+1 fix
- unread badge clears on open; mark_as_read is invoked
- send: bubble appears immediately, chat auto-scrolls to the bottom,
  the sender-side list preview updates without a refetch
- the new bubble's rendered time is within 2 minutes of wall clock
  (verifies the server-side created_at stamp)
- rapid chat switch no longer flashes the previous chat's content
- New Chat "+" actually moves a contact into Participants

Runs as one combined test so the WASM bundle boots only once (~70s
total). `helpers.ts` now honours `HERO_OS_URL` so the same spec can
target a remote instance via SSH tunnel or a local dev server.

Adds `screenshots/` to the tests/e2e .gitignore.

Related Issues
- lhumina_code/hero_archipelagos#44
- lhumina_code/hero_archipelagos#45
- lhumina_code/hero_archipelagos#46
- lhumina_code/hero_archipelagos#47
- lhumina_code/hero_archipelagos#48
- lhumina_code/hero_archipelagos#49
- lhumina_code/hero_archipelagos#50
- lhumina_code/hero_archipelagos#53
- lhumina_code/hero_archipelagos#54
- lhumina_code/hero_archipelagos#55
- lhumina_code/hero_osis#25
- lhumina_code/hero_osis#26
zaelgohary force-pushed development_add_messaging_e2e_test from e62198e346
Some checks failed
Build and Test / test (pull_request) Failing after 25s
to 74f601b460
Some checks failed
Build and Test / test (pull_request) Failing after 31s
2026-04-19 09:43:36 +00:00
Compare
zaelgohary merged commit cb30afd369 into development 2026-04-19 09:54:05 +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!71
No description provided.