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; its label and color change based on state

Starting a Run

The button is enabled when canStart is true — the spec must have at least one step and no other run must be in progress. Pressing Start does the following in order:

  1. Vault guard — if the spec or its environment references any Vault secret, Tigrister prompts for the vault passphrase via VaultStartGuard before anything else runs
  2. Environment resolution — variables from the selected environment are resolved (Manual / OS Secret / Vault values pulled and merged)
  3. Before All script — runs once against the resolved context; any tg.flow.set calls seed variables every VU will see
  4. VU runner spawns — virtual users ramp up according to the active test type's profile
  5. Live metrics stream — the Rust runner emits LiveMetrics updates via Tauri events; the UI renders time-series charts in real time
  6. Ramp down & aggregation — VUs wind down, final percentile metrics are computed, thresholds evaluated
  7. After All script — runs once with tg.export.* available against the finalized result
  8. Result persisted — a full LoadTestResult is 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 — no polling, 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 and thresholds are not evaluated — a stopped run is neither passed nor failed.

Test Status

Every completed run is tagged with one of three statuses:

StatusIndicatorMeaning
passedGreen checkmarkRan to completion, every enabled threshold held, no gate-breaking assertion failures
failedRed crossRan to completion but at least one threshold was violated, or Fail on assertion errors was on and assertions fired
stoppedMuted dashUser pressed Stop; metrics are still captured but thresholds are not evaluated

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 — 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.