Skip to content

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.

An audit runs the journeys defined for a project in the dashboard, so first pick a project and list its journeys:

Terminal window
b8e project
b8e audit list

b8e audit list prints each journey’s id and name. Nothing to audit means no journeys are defined yet — add them in the dashboard first.

Audit every journey the project has:

Terminal window
b8e audit --journeys all

Or name the ones you want, comma-separated:

Terminal window
b8e audit --journeys jrn_checkout,jrn_signup

To audit a saved group of journeys by id or name:

Terminal window
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.

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:

Terminal window
b8e doctor

b8e doctor reports whether the browser and screen reader an audit depends on are present and launchable, and names what to install if not.

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:

Terminal window
b8e audit --journeys all --fail-on serious
b8e 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.

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:

Terminal window
b8e audit --ci --project prj_your_project_id --journeys all --fail-on serious

As 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).

An audit you started and no longer want:

Terminal window
b8e audit stop run_123

The run id is printed when the audit starts.

For machine-readable output, ask for json or sarif and write it to a file:

Terminal window
b8e audit --journeys all --format sarif --output audit.sarif

Findings 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.