Running

Accessibility audit

The free command that lists the controls your app never named.

A control with no accessible name is announced by VoiceOver and TalkBack as "button", with nothing to say which button. TestedOK reads the accessibility tree anyway, so it can see this for free: no model, no account, no credits.

testedok audit com.example.shop
Accessibility audit · com.example.shop · iPhone 17 Pro
 
  the screen it opens on
    ✘ button at 355, 60 (top right, beside "Cart") has no name
    ✘ button at 24, 812 (bottom left) has no name
    2 unnamed of 14 controls
 
2 of 14 controls across 1 screen have no name (14%).
A screen reader announces these as just their role, so someone using VoiceOver or TalkBack
cannot tell them apart. In SwiftUI add .accessibilityLabel("…"); in Compose set
contentDescription on the Icon, or Modifier.semantics { contentDescription = "…" }.

With an app id it launches the app and audits the first screen. Without one, it audits whatever is on screen right now, so navigate to the screen you care about and run it. --android audits the attached Android device.

Why it matters to your tests too

The same nameless controls are what make flows brittle: the model sees (unlabeled button) and has to guess from the text nearby. Naming them fixes both the screen reader and the test.

What counts as unnamed

A label the app provided counts as a name. Labels TestedOK inferred, from nearby text or a view id, do not: no screen reader would read them. The audit reports only what it can see; a screen is audited only if the run reached it.