Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/edda

crates/nornir-saga/README.md

nornir-saga

Saga — capture a user's navigation (nav / click / log) as structured events, persist them to the nornir warehouse, and let the test matrix replay the path as a generated robot test for bug-finding and regression.

It is the production sibling of nornir-testmatrix: emit real state from inside the running app → warehouse → read it back as a replayable saga.

The core is toolkit-neutral — pure std + serde, with no eframe / leptos / iceberg / arrow dependencies — so any frontend (an egui app or a web Leptos + Axum app) can pull it cheaply. The capture buffer (record() / drain()) is a process-global, gated behind the saga feature, so a default build pays zero cost and carries no dependency edge: only the serde event types, the warehouse sink, and the replay planner are in the default surface.

What it gives you

  1. Record — structured SagaEvents (navigation, clicks, log lines) emitted from inside the live app.
  2. Persist — a warehouse sink writes the events to nornir's saga_events stream.
  3. Replay — the test matrix reads the recorded path back and replays it as a generated robot test, turning a real user session into a reproducible regression case.

ui — live UI-movement viewer + replay

The ui module is the second face of the crate: capture a saga-enabled Elm app's ordered Msg stream (pointer / click / nav / focus / scroll / edit) and view it live or replay it deterministically so a web page re-animates the recorded session. It shares the same dev-only discipline:

Design + how-to: .nornir/saga-design.md, .nornir/saga-idiot-guide.md.

License

MIT OR Apache-2.0