Run smoke / regress
For the complete documentation index, see llms.txtGroup 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
# fast key flowscd unotest && npx @unotest/web collection smoke --workers=4
# full sweep, stop on first failurecd unotest && npx @unotest/web collection regress --bailDuring 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.