# Give one flow correct labels, roles, and announcements

A flow a screen reader announces as a list of unnamed controls, corrected against the accessibility tree.

Category: Accessibility and browser verification
Source: https://letsship.ai/use-cases/give-one-flow-correct-labels-and-roles
Published: 2026-08-25

## Goal

Give every control in one flow a correct accessible name, role, and state.

## Acceptance criteria

- Every control has a meaningful accessible name
- Roles and states match what the control actually does
- Dynamic changes are announced
- Tests assert against the accessibility tree rather than class names

## What lands as proof

Tests reading the accessibility tree, which is what a screen reader consumes, rather than the markup a developer sees.

## Prompt

Copy this to an agent to open the ticket:

```text
Create a Linear issue in my team and assign it to the SHIP agent.

Title: Fix the accessible names and roles in {flow}

Description: Give every control in one flow a correct accessible name, role, and state.

Acceptance criteria:
- Every control has a meaningful accessible name
- Roles and states match what the control actually does
- Dynamic changes are announced
- Tests assert against the accessibility tree rather than class names

Before you create the issue, inspect the accessibility tree for a flow in this repository and replace {flow} with the one with the most unnamed controls.
```

## Questions

### What does the agent actually change?

The ticket is scoped to one outcome: give every control in one flow a correct accessible name, role, and state. Work that serves that outcome is in scope, and anything outside it is left for a separate ticket, so the pull request stays reviewable.

### How do I know the work is done?

The pull request carries the evidence, not only the diff. Here that means assertions against the accessibility tree, not the markup, so a reviewer can confirm the result without reproducing the work locally.

### How much oversight does this need?

None is required before the run starts. Every claim this ticket makes can be checked by machine, so the agent works straight through and a person reviews the finished pull request like any other.
