Run an audit of your journeys
If you want to test what a real screen reader experiences on your app — not what a static scan can
infer from source — run b8e audit. It drives your project’s journeys through a real browser paired
with a real screen reader and reports what a user of assistive technology actually hits.
b8e audit is a different tool from b8e scan and
b8e ci. scan reads your source; ci gates a diff on that scan; an
audit runs your product and observes it. Reach for audit when a finding only shows up in the
running app: focus order, a live region that never announces, a modal that traps nobody.
See what you can audit
Section titled “See what you can audit”An audit runs the journeys defined for a project in the dashboard, so first pick a project and list its journeys:
b8e projectb8e audit listb8e audit list prints each journey’s id and name. Nothing to audit means no journeys are defined
yet — add them in the dashboard first.
Run it
Section titled “Run it”Audit every journey the project has:
b8e audit --journeys allOr name the ones you want, comma-separated:
b8e audit --journeys jrn_checkout,jrn_signupTo audit a saved group of journeys by id or name:
b8e audit --group "Checkout flow"By default the audit browser runs headless. To watch it drive the page — useful when a journey
fails and you want to see where — add --no-headless.
Check the machine can host a run
Section titled “Check the machine can host a run”An audit needs a real browser and a real screen reader on the machine that hosts it. Before a first run, confirm yours is ready:
b8e doctorb8e doctor reports whether the browser and screen reader an audit depends on are present and
launchable, and names what to install if not.
Fail on findings
Section titled “Fail on findings”By default an audit reports and exits 0. To make it gate — in a scheduled job, or a release
check — set the bar with --fail-on or --max-violations:
b8e audit --journeys all --fail-on seriousb8e audit --journeys all --max-violations 0--fail-on takes critical, serious, moderate, or minor and fails on any finding at or above
that impact. --max-violations fails when the count exceeds n.
Run it non-interactively
Section titled “Run it non-interactively”On a runner there is nobody to answer a prompt. Pass --ci to refuse every prompt and fail instead
of asking. In that mode --journeys and a selected project are required — an audit that cannot
resolve what to run should stop, not guess:
b8e audit --ci --project prj_your_project_id --journeys all --fail-on seriousAs with every non-interactive b8e command, the credential is BINCLUSIVE_API_KEY, minted under
Settings → CI access. A long journey set can outlast a default timeout — bound it explicitly
with --timeout (e.g. --timeout 10m).
Stop a run in flight
Section titled “Stop a run in flight”An audit you started and no longer want:
b8e audit stop run_123The run id is printed when the audit starts.
Read the results elsewhere
Section titled “Read the results elsewhere”For machine-readable output, ask for json or sarif and write it to a file:
b8e audit --journeys all --format sarif --output audit.sarifFindings from a run also land in the project’s dashboard, where each becomes a violation ticket you
can inspect with b8e ticket.
For every flag b8e audit accepts, see the audit reference.