Load Test Execution
The top action bar of the Load Test panel is where a run actually happens. It holds the environment selector, live status indicator, and the Start / Stop / Re-run button, plus a Compare toggle for multi-run analysis once you have history to work with.
The Action Bar
Left-to-right, the bar is laid out like this:
- •Environment dropdown: pick which environment to resolve variables against. Shows No Environment by default, followed by every environment in the spec's group. A Manage Environments link at the bottom opens the group env panel
- •Live status (only visible while running or after a run): pulse dot while running, check/cross when finished, plus elapsed time and active/target VUs
- •Compare button: enters selection mode in the run history; see the Compare Runs section
- •Start / Stop / Re-run: the primary action, whose label and color change based on state
Starting a Run
The button is enabled when canStart is true, meaning the spec has at least one step and no other run must be in progress. Pressing Start does the following in order:
- Vault guard: if the spec or its environment references any Vault secret, Atrahasis prompts for the vault passphrase via
VaultStartGuardbefore anything else runs - Environment resolution: variables from the selected environment are resolved (Manual / OS Secret / Vault values pulled and merged)
- Before All script: runs once against the resolved context, and any
at.flow.setcalls seed variables every VU will see - VU runner spawns: virtual users ramp up according to the active test type's profile
- Live metrics stream: the Rust runner emits
LiveMetricsupdates via Tauri events, and the UI renders time-series charts in real time - Ramp down & aggregation: VUs wind down, final percentile metrics are computed, thresholds evaluated
- After All script: runs once with
at.export.*available against the finalized result - Result persisted: a full
LoadTestResultis saved to history and becomes the new lastResult
Start errors are inline: if the runner refuses to start (e.g. invalid config, missing credentials, network pre-check failed), the Results panel surfaces a red banner with the reason rather than silently failing.
While the Test Is Running
The Start button morphs into a red Stop button. The status badge shows a pulsing blue dot and the label Running. The elapsed timer runs in m:ss format, and the VU counter updates every tick (e.g. 42/50 VUs mid-ramp).
Under the hood, the Rust crate in src-tauri/crates/load-test emits a LiveMetrics event every second. Each event carries the full percentile snapshot plus an incremental timeSeriesPoint that the UI appends to its in-memory buffer. Charts redraw as new points arrive, with no polling and no page refresh.
Stopping is graceful: pressing Stop cancels the sustain phase and skips straight to ramp-down. VUs finish their current request and quit. The final result is marked with status stopped, which is neither passed nor failed. Threshold results are still computed and shown, they simply do not decide the status.
Test Status
Every completed run is tagged with one of three statuses:
| Status | Indicator | Meaning |
|---|---|---|
| passed | Green checkmark | Ran to completion, every enabled threshold held, no gate-breaking assertion failures |
| failed | Red cross | Ran to completion but at least one threshold was violated, or Fail on assertion errors was on and assertions fired |
| stopped | Muted dash | User pressed Stop. Metrics and threshold results are still captured, but they no longer decide pass or fail |
Re-running
After a run finishes, the button label changes to Re-run with a circular arrow icon. Pressing it kicks off another run with the same configuration, which is handy for A/B comparisons where you want to tweak the target API between runs without reconfiguring the spec.
Each Re-run creates a brand-new entry in the run history, so you can always return to any previous run via the sidebar or feed it into the Compare view.