Usability Review

A usability review is a ranked, evidence-cited critique of a flow: does the user get the job done, and where does the experience get in the way. It is advisory — a finding never sets a non-zero exit or gates a run.

One name. The product surface calls this the usability strategy (--strategy usability), matching the CLI. "UX review" is the same feature — you may see it used informally elsewhere on this site — but the canonical name to search and script against is usability.

Two ways to run it

Live, as an exploration strategy against a running app:

jevitate explore --url http://localhost:3000 \
  --strategy usability --goal "check out with a saved card" \
  --app-class consumer --real

# optional: independent checks decide whether the job was done, as on a goal run
jevitate explore --url http://localhost:3000 --strategy usability \
  --goal "check out with a saved card" --app-class consumer \
  --success urlIncludes:/order/confirmed --real

Offline, over a Recording you already captured (jevitate record or a goal run's output):

jevitate ux ./checkout.recording.json --app-class consumer --real

# optional persona + the job the flow pursues, for sharper relevance
jevitate ux ./checkout.recording.json --app-class admin \
  --persona "first-time buyer" --job "check out with a saved card" --real

Jev scores each observed screen against a cited rubric — Nielsen's 10 heuristics, cognitive-science principles from information scent to choice overload, dark-pattern detection, and a lightweight accessibility tier. Every finding names a real principle and anchors to observed behavior (a control, a quoted string) on the screen it was found on.

What --app-class actually controls

--app-class is required for both paths. It is a calibration signal for the rubric — it tells Jev what kind of app this is (consumer, admin, internal, etc.) so it can judge applicability sensibly (a "choice overload" heuristic reads differently on a consumer checkout than on an internal admin table).

It is not a persona chooser. --app-class does not select or imply a user persona; it only changes which rubric items apply and how they're weighed. The live review is calibrated against a default persona, "first-time user". The offline path (jevitate ux <recording>) accepts an explicit usability --persona. Don't confuse it with explore --persona name=storageState, which runs the same mission once per signed-in session and diffs them (see Flags Reference).

Viewport and device

By default every run, the usability review included, uses Playwright's default viewport: 1280×720, desktop, no touch. --viewport <W>x<H> (e.g. --viewport 375x812) or --device "<name>" (e.g. --device "iPhone 13") change it; they are mutually exclusive. Below 1024px a horizontal-overflow check runs too: pure DOM geometry, reported as a signal finding in the usability review (--check-overflow turns it on at any width).

A 0.2.0 preview. Findings are advisory, the quality grader is not yet calibrated across apps (so every grade is shown by default; filter with --show), and finding grouping is still being redesigned.

Going deeper

  • Report Schema — confidence, coverage, suppressed, and what clean does and doesn't guarantee.
  • Flags Reference — every flag per strategy.
  • MCP & CLI — full command syntax for both the live and offline paths.
  • Testing Modes — how usability fits among the other five jevitate explore modes.