test(journey): E2E journey path + deferred a11y/UX polish from #753 round 7 #796

Open
opened 2026-06-10 07:37:56 +02:00 by marcel · 0 comments
Owner

Context

PR #792 (JourneyEditor, issue #753) shipped with a deliberate E2E deferral and a handful of round-6/round-7 review items that are polish, not blockers. This issue collects them so the deferral is tracked instead of forgotten.

Tasks

E2E (Playwright, frontend/e2e/)

  • The one critical journey: create journey → add a letter via the picker → add an interlude → reorder (move buttons) → publish → verify rendering in JourneyReader. Covers the pointer-drag wiring of useBlockDragDrop in JourneyEditor, which has no end-to-end coverage (the hook's unit tests cover the hook, not the wiring).
  • Raw plain-text intro on the wire: intro Temperatur < 0 & Schnee survives create → edit → read without entity encoding (backend unit tests exist; this pins the full round-trip).
  • AxeBuilder scan of /geschichten/[id]/edit (JOURNEY) in both themes and at 320px, per the #753 test plan.

Component tests deferred from the #753 test plan

  • Keyed-{#each} corruption test (reorder twice quickly; rows keep their identity/notes).
  • noteSaving two-row race test (blur note A, immediately edit note B — no cross-row save indicator bleed).

UX polish from review round 6/7 (not implemented in #792)

  • Mobile save bar stays sticky and visible while a form field is focused (soft-keyboard viewport).
  • Intro textarea auto-resize with max-h-[40vh] (currently fixed rows={3} resize-y).
  • When Publish is disabled, move focus (or an anchor link) to the Status collapsible explaining why — complements the visible journey_publish_disabled_hint added in #792.
  • Verify the load-bearing reader-XSS test (journey_body_render_path_is_sanitized per #751/#752 round 6) exists for the STORY render path; add it if it does not.

Refs

  • Issue #753 (Resolved Decisions addendum, 2026-06-10), PR #792 review round (comments 16167–16174).
## Context PR #792 (JourneyEditor, issue #753) shipped with a deliberate E2E deferral and a handful of round-6/round-7 review items that are polish, not blockers. This issue collects them so the deferral is tracked instead of forgotten. ## Tasks ### E2E (Playwright, `frontend/e2e/`) - [ ] The one critical journey: create journey → add a letter via the picker → add an interlude → reorder (move buttons) → publish → verify rendering in `JourneyReader`. Covers the pointer-drag wiring of `useBlockDragDrop` in JourneyEditor, which has no end-to-end coverage (the hook's unit tests cover the hook, not the wiring). - [ ] Raw plain-text intro on the wire: intro `Temperatur < 0 & Schnee` survives create → edit → read without entity encoding (backend unit tests exist; this pins the full round-trip). - [ ] AxeBuilder scan of `/geschichten/[id]/edit` (JOURNEY) in **both themes** and at **320px**, per the #753 test plan. ### Component tests deferred from the #753 test plan - [ ] Keyed-`{#each}` corruption test (reorder twice quickly; rows keep their identity/notes). - [ ] `noteSaving` two-row race test (blur note A, immediately edit note B — no cross-row save indicator bleed). ### UX polish from review round 6/7 (not implemented in #792) - [ ] Mobile save bar stays `sticky` and visible while a form field is focused (soft-keyboard viewport). - [ ] Intro textarea auto-resize with `max-h-[40vh]` (currently fixed `rows={3}` `resize-y`). - [ ] When Publish is disabled, move focus (or an anchor link) to the Status collapsible explaining why — complements the visible `journey_publish_disabled_hint` added in #792. - [ ] Verify the load-bearing reader-XSS test (`journey_body_render_path_is_sanitized` per #751/#752 round 6) exists for the STORY render path; add it if it does not. ## Refs - Issue #753 (Resolved Decisions addendum, 2026-06-10), PR #792 review round (comments 16167–16174).
marcel added the P2-mediumtestui labels 2026-06-10 07:38:04 +02:00
Sign in to join this conversation.
No Label P2-medium test ui
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: marcel/familienarchiv#796