UI End-to-End Visual Check¶
Use this checklist to quickly verify the full backend-to-UI path.
Preconditions¶
- API server running on
http://127.0.0.1:8000 - UI dev server running on
http://localhost:4173(uselocalhost, not127.0.0.1, for the Vite dev server)
Start both with:
python scripts/ironflow_server.py start
1) Seed test runs¶
From repo root:
python scripts/ui_e2e_seed.py
Optional custom seed volume:
python scripts/ui_e2e_seed.py --mapped 4 --chained 4 --complexity 10
python scripts/ui_e2e_seed.py --mapped 2 --chained 2 --failing 2 --complexity 8
Wide and long DAG stress (via benchmark API):
curl -X POST http://127.0.0.1:8000/benchmark/run \
-H 'Content-Type: application/json' \
-d '{"flavor":"wide","complexity":100}'
curl -X POST http://127.0.0.1:8000/benchmark/run \
-H 'Content-Type: application/json' \
-d '{"flavor":"long_chain","complexity":100}'
(mapped / chained flavors are accepted as aliases for wide / long_chain.)
2) Visual checks in UI¶
Open http://localhost:4173/runs and verify:
- Top navigation shows Flow Runs, Flows, Deployments, and Work Pools
- Runs table shows recent runs with state filter chips
- State badges are visible (
COMPLETEDexpected for benchmark runs) - Clicking a run opens run detail page with Cancel/Retry actions when applicable
Deployments¶
/deploymentslists deployments with Quick Run- Deployment detail shows schedule, parameters, and recent deployment runs
Work Pools¶
/work-poolsshowsdefault-process-pool- Pool detail lists workers (local worker should appear as
ONLINEwhen server worker is enabled)
Inside run detail verify tabs:
- Task Runs: multiple task rows present; when tasks used
persist_result(or returnedNone), pretty-printed JSON /nullmay appear under the row - Logs: log entries present
- Events: state transitions and task events present
- Artifacts: result artifacts present for completed task events; persisted payloads show as pretty JSON when
summaryincludesresult - DAG:
- Aggregated fan-out mode renders the forecast/manifest graph (
source: forecastwhen static compile succeeded;map()fan-out collapsed) - Task runs mode renders one node per execution
- Definition line: dependencies left โ right, parallel tasks top โ bottom
- Toolbar: Fit, Reset, Aggregated fan-out / Task runs toggle
- Search finds a task by id/label/name, zooms to it, and highlights upstream/downstream path; Enter cycles multiple matches
- Scroll zooms; drag pans the canvas (smooth GPU transform)
- Wide runs (
wide_flow): Aggregated fan-out mode collapses fan-out; Task runs lists individual mapped runs - Long chains (
long_chain_flow): top-to-bottom dependency layout; zoom/pan to navigate - Failing runs: downstream nodes may show
NOT_REACHABLE
See DAG and forecast for details.
3) Persistence check¶
Stop and restart API server, then refresh UI:
http://localhost:4173/runsshould still show previously seeded runs
This confirms persisted data is being picked up from local storage.