This documentation is available as Markdown. For the complete index, see llms.txt. Skip to content

Run smoke / regress

For the complete documentation index, see llms.txt

Group related scenarios into a collection and run them together.

Create one

In the viewer: Collections (⌘3) → create → add scenarios → reorder by drag. A collection is a small YAML file under unotest/e2e/_collections/. Click workers in the collection header to set how many scenarios run in parallel (stored in the YAML, so CI picks it up too).

Run it

Terminal window
# fast key flows
cd unotest && npx @unotest/web collection smoke --workers=4
# full sweep, stop on first failure
cd unotest && npx @unotest/web collection regress --bail

During a run you get per-scenario status and a progress bar in the viewer. The CLI prints one line per scenario as it starts and one as it finishes:

→ scenario: checkout/guest (1/3)
✓ scenario: checkout/guest (1234ms)
✗ scenario: checkout/coupon (4074ms) — failed
│ AssertionError: expected "Total: 10", got "Total: 12"
artifacts: unotest/.runs/2026/09/03/checkout-coupon-…/

A scenario that did not pass gets its own output quoted under its line and the path of its run directory. From 0.50.0 its sign and word are the ones e2e and the viewer use: ✗ … — failed for a check that did not hold, ‼ … — errored for a script that could not do what it was asked, ■ … — aborted for a run that was stopped. Earlier versions print an errored scenario as ✗ … — failed and a stopped one with ‼. The run ends with a one-line summary (pass=21, fail=1, plus expected, aborted and skipped counts when there are any). fail= counts every scenario that did not hold, errored ones included; from 0.50.0 the errored part is named inside it: fail=3 (2 errored). From 0.51.0 the summary ends with the wall clock of the whole run, every worker at once — pass=21, fail=1, time=252.3s — and in a file of several tests each test’s line carries its own time, ✓ test_checkout (812ms), as the file’s line does. With stdout piped (a run started in the background by an agent) those lines arrive only at the end — tail the run’s journal instead, see Watching a collection run.

A good split

  • smoke — login, checkout, the 5 flows that must never break. Run on every push.
  • regress — everything. Run nightly or before release.

Wire it into CI: Run in CI.