Autonomous QA: flows, failures as issues, and a CI gate
Natural-language browser flows replay deterministically with zero steady-state model calls. A failing flow files a correlated issue, the parsemend/qa check links it, and qa:verify-fix closes the loop.
A flow is a natural-language browser journey (ordered steps and assertions) that a model resolves to a locator stack once per flow, step and environment, then caches. After that, replays are deterministic Chromium runs through a separate runner package with zero LLM calls; the cache heals on locator drift and never rescues a failing assertion.
A failed run now files a first-class issue through the same pipeline as an
exception: alerts, fixability scan and regression semantics apply. A triage
agent annotates the issue app_bug, flow_outdated, environment or
unknown, but never decides pass or fail; the raw run result does, and a
flaky failure gets a retry before it counts. Runs correlate against
server-side errors in the same time window.
The parsemend/qa GitHub check links each failed flow to its filed issue.
The CLI (parsemend qa run --wait --json, qa export) exits with the raw
pass/fail code for scripting, and deploy-triggered suite runs put QA in the
path of a release. qa:verify-fix re-runs a failing flow against a fix PR's
preview URL. A pass there never resolves the canonical issue; only a deploy
or scheduled run does.