Label every control
Give every control a visible label, groups a legend, and errors a link to their field.
Draft — not yet reviewed by a maintainer
Why it matters
Placeholders disappear as soon as people type and are not reliably announced. Visible labels, legends and linked errors tell everyone what a control is and what went wrong.
How to check it
Clicking a label focuses its control; groups have a legend; errors use aria-describedby.
The default it guards against
Placeholder-only inputs, a row of radio buttons with no group label, and one error banner at the top of the form.
Library items that apply it
Where it comes from
- WCAG 2.2 SC 1.3.1 Info and Relationships (A)
- WCAG 2.2 SC 3.3.2 Labels or Instructions (A)
- docs/quality-gates.md (Accessibility: every field has a label; errors are connected to their controls)
Repository paths refer to the Tessli repository ; WCAG references are to WCAG 2.2.