← A11y Tickets

WAVE Accessibility Errors to Developer Tickets

WAVE is useful for spotting page-level accessibility problems, but a WAVE icon or summary row is not yet a developer ticket. Convert the finding into a ticket that names the affected user task, element, owner, and retest path.

Keep WAVE output as evidence. Add context before it enters Jira, GitLab, Linear, or an accessibility remediation backlog.

Open this WAVE example in the generator

What to copy from WAVE

What the ticket still needs

WAVE finding to ticket examples

Missing form label

WAVE output:
Error: Missing form label
Page: /checkout/address
Element: input[name="email"]

Better ticket:
[High] Checkout address: email field has no persistent accessible label

User impact:
Screen reader users may not know which field collects the email address, and users who rely on visible field context may lose the cue once placeholder text disappears.

Evidence:
WAVE reports "Missing form label" on input[name="email"] in the checkout address step. The field appears to use placeholder text as the only label.

Acceptance criteria:
- The email field exposes a persistent accessible name that matches the visible purpose.
- Required and invalid states are available programmatically.
- The field can be found, understood, corrected, and submitted with keyboard and a screen reader.
- The WAVE missing-label error no longer appears for this field.

Generate a draft ticket from this WAVE label finding

Empty button

WAVE output:
Error: Empty button
Element: button.product-card__wishlist
Page: product listing

Better ticket:
[High] Product listing: wishlist button has no accessible name

User impact:
Screen reader users hear an unlabeled button for each product card and cannot tell whether the control saves, removes, compares, or opens product details.

Evidence:
WAVE reports "Empty button" on button.product-card__wishlist in product listing cards.

Acceptance criteria:
- Each wishlist button exposes a unique accessible name such as "Add [product name] to wishlist".
- The saved or unsaved state is available programmatically.
- The product card remains usable with keyboard only.
- Repeated product-card instances using the same component are fixed or listed as follow-up scope.

Low contrast

WAVE output:
Contrast error: Very low contrast
Element: .form-error
State: newsletter signup after invalid email

Better ticket:
[Medium] Newsletter signup: error text contrast is too low

User impact:
Low-vision users may miss why the signup failed and may keep retrying without a clear recovery path.

Evidence:
WAVE contrast error on .form-error after submitting an invalid newsletter email address.

Acceptance criteria:
- Error text meets the relevant contrast requirement in default, focused, and error states.
- The invalid state is not communicated by color alone.
- If the error appears dynamically, it is associated with the field or announced as a status update.

When to group WAVE findings

Paste-ready input for the generator

WAVE finding:

Category:

Page or flow:

Affected element or nearby text:

State or viewport:

What the user is trying to do:

Manual check already done, if any:

Likely owner:

Notes for acceptance criteria:

Related resources