Commit graph

2 commits

Author SHA1 Message Date
9e31b6d682
test(chess/e2e): expand visual-builder Playwright suite to 11 scenarios
Replaces the original single-flow stub with a comprehensive suite
that exercises every user-facing behaviour of the visual authoring
surface against a live Vite dev server. 11 tests run in 23s.

Scenarios:

 1. Mode toggle persists across reload
    Opens editor, toggles to Visual, verifies aria-pressed state +
    localStorage key, reloads, confirms Visual is still active on
    the next mount.

 2. Palette click adds top-level primitive to block list
    Clicks palette-btn-on-turn-end, verifies block-card-on-turn-end
    appears with matching aria-label and the narrative preview
    mentions "turn end". Asserts via aria-label rather than visible
    text so the open inspector docs do not cause strict-mode matches.

 3. Clicking × removes the block without triggering a drag
    Adds three blocks, clicks the × button on the middle one,
    verifies it is gone AND that dnd-kits assertive announcer never
    reported "Picked up sortable item" — direct regression for the
    drag-handle isolation fix.

 4. Clicking expand toggles the block without triggering a drag
    Asserts aria-expanded flips from false to true on click without
    the card being removed or reordered.

 5. Selecting a trigger makes palette clicks add children
    Adds on-turn-end, selects it, verifies palette-add-target-banner
    appears with the parent label, then clicks add-to-attribute and
    asserts there is exactly one add-to-attribute block AND it is
    a descendant of block-card-on-turn-end.

 6. "Add at top level instead" resets the nested-target selection
    After entering nested-add mode, clicks the escape button and
    verifies subsequent palette adds are top-level siblings.

 7. × on a nested child removes only that child
    Verifies nested removal leaves the parent intact.

 8. Preview narrative reflects tree mutations immediately
    Adds primitive and checks narrative; removes and checks narrative
    no longer mentions the seeded attribute.

 9. Save → reload → load preserves the composed descriptor
    Fills inspector fields (attr=Hp, delta=1), saves, reloads,
    confirms Visual mode is remembered, loads from library, verifies
    inspector value survived the round-trip.

10. Depth-4 descriptor surfaces validation banner + disables save
    Pre-seeds localStorage with a depth-4 descriptor (conditional
    → on-capture → on-damaged → conditional → add-to-attribute),
    loads it, verifies the validation banner renders and the Save
    button becomes disabled.

11. Toggling Form ↔ Visual preserves the composed descriptor
    Composes a tree, captures the JSON preview, toggles to Form and
    back to Visual, verifies JSON preview is byte-identical.

The spec uses data-testid selectors exclusively where possible,
falls back to aria-label for the block card outer <article>, and
uses click({ position }) to land on the card header (avoiding the
× / expand / grip / inspector overlays).
2026-04-21 19:47:21 -06:00
159d2cff06
feat(chess/ui,e2e): add data-testid to PreviewPane + scaffold visual-builder e2e spec
Tiny preview-pane data-testid added for Playwright targeting (T25
setup), plus an initial e2e spec file covering the visual-mode
authoring flow — to be expanded in T25.

Spec covers happy path: open editor, toggle to Visual, add on-move
from palette, configure nested add-to-attribute, verify preview
narrative renders. Real runtime execution against the chess dev
server is Wave 4 work.
2026-04-21 18:50:54 -06:00