feat(web): test-fire modal + fixture library (NF-UI-8) #367
No reviewers
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks!367
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/338-nfui8-test-fire"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
flowsApi.testFire(mock shape matching NF-7'sPOST /flows/:id/dry-run).ModeBannerflips todry-run-local(yellow), every node paints a synthesized status/duration overlay through the existing NF-UI-7 replay helpers, and a floating Exit test pill top-right clears the trace.issues.assigned,pull_request.opened,issue_comment.slash_command,cron.tick, andmanual— plusflowsApi.listFixtures/getFixtureso the list/detail surface is already shape-stable against a future/flows/fixturesendpoint.Files touched
apps/web/src/features/flows/TestFireModal.tsx— new (two tabs, JSON preview, Escape / backdrop / Cancel dismiss).apps/web/src/features/flows/TestFireModal.test.tsx— new (12 cases).apps/web/src/features/flows/FlowCanvas.test-fire.test.tsx— new (7 cases).apps/web/src/features/flows/FlowCanvas.tsx— source-node button in edit mode, modal wire-up, canvas-local dry-run state lifted toFlowCanvasso the banner flips without remounting the editor shell.apps/web/src/features/flows/flowsApi.ts—listFixtures/getFixture/testFiremocks plusTriggerFixture/TestFireResponsetypes; synthesized trace walks the recorded graph body so the overlay paints in the author's node order.apps/web/src/fixtures/trigger-samples.json— new (5 fixtures).Test plan
bun x turbo run typecheck— clean.bun x biome check .— clean.bun x vitest run src/features/flows/— 152 tests pass (19 new)./flows/default.issue-assigned— click the source-node's Fire test event button, pick theissue-assigned-dashboardfixture, confirm banner flips to the yellowdry-run-localstrip and every node paints the greenokoutline.?run=…replay is active.Out of scope
POST /flows/:id/dry-runwire-up — NF-7 ships the server, swap tracked in #366.Closes #338
🤖 Generated with Claude Code
Adds a "▶ Fire test event" button on the trigger-source node that opens a two-tab modal (Fixture / Replay past) and submits the chosen payload via flowsApi.testFire. On success the canvas drops into editor-local dry-run — ModeBanner flips to "dry-run-local" (yellow), every node paints a synthesized status/duration overlay, and a floating "Exit test" pill top-right clears the trace. Ships: - TestFireModal.tsx — fixture tree + replay-past list + JSON preview. - trigger-samples.json — seed fixtures (issues.assigned, pull_request.opened, issue_comment.slash_command, cron.tick, manual). - flowsApi.listFixtures / getFixture / testFire (mock-first; shape matches NF-7 /flows/:id/dry-run so the swap is a one-file change). - FlowCanvas — source-node button in edit mode, modal wire-up, local dry-run state propagation to the existing replay overlay helpers. Tests: 19 new cases across TestFireModal.test.tsx (12) and FlowCanvas.test-fire.test.tsx (7) — tab switching, fixture/replay selection, submit dispatch, modal dismissal, save-gate during overlay, replay-mode suppresses the test-fire entry point. Out of scope: fixture-library editor UI, server-side POST /flows/:id/dry-run (NF-7 ships that; swap tracked in #366). Closes #338 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>7e204bac2bd465215822