Local-first / release check 01

Hear the break before your users do.

Turn one critical signup, search, or form flow into a checked-in accessibility transcript. See the first focus or live-region divergence—without an accessibility score or hosted dashboard.

npm i -D screen-reader-smoke-test

Free, open source, no telemetry.

A precise cobalt path connects focus nodes, splits at a coral divergence, and expands into dark announcement arcs.
One flow. One visible contract.
  1. 01DrivePlay the approved browser flow
  2. 02ObserveRecord focus + ARIA live changes
  3. 03CompareStop at the first divergence

A small contract beats a vague score

Review the words and order that matter.

The expected transcript is plain JSON. Your reviewer can understand it, your CI can enforce it, and your fixture values never appear in it.

announce-check.config.mjs3 steps
import { defineConfig } from "screen-reader-smoke-test";

export default defineConfig({
  name: "Signup confirmation",
  url: "http://127.0.0.1:4173/signup",
  steps: [
    { action: "fill", target: { label: "Email address" }, value: fixture.email },
    { action: "click", target: { role: "button", name: "Create account" } },
    { action: "wait", for: 250 }
  ]
});
npx playwright install chromiumnpx announce-check --updatenpx announce-check

Local HTML report

The first difference gets the whole room.

Try each first-class state. The real CLI writes this report beside your test run, with no upload and no account.

Contract matched

3 / 3 events

Expected

    Received

      Precise about its limits

      A smoke test, not a simulated person.

      What it catches

      • A label disappears from the focused field
      • Focus lands in an unexpected place
      • A status or alert is missing, changed, or reordered

      What it does not claim

      • Exact NVDA, VoiceOver, or JAWS speech
      • Complete accessibility coverage
      • WCAG conformance or certification

      Keep the human check. Use Announce Check to protect the contract on every commit, then verify the release candidate with a real screen reader.

      Before the release branch

      Give one essential flow an audible contract.

      View npm package