← A11y Tickets

Lighthouse Accessibility Findings to Developer Tickets

Lighthouse is useful for quick accessibility checks, but its audit text is usually too thin for remediation planning. Convert each finding into a ticket that names the affected flow, user impact, implementation evidence, and retest path.

Use Lighthouse output as a starting point. Do not treat a Lighthouse score as proof that a page is accessible or inaccessible.

What Lighthouse gives you

What the ticket still needs

Lighthouse finding to ticket examples

Buttons do not have an accessible name

Lighthouse output:
Buttons do not have an accessible name
Element: button.icon-button
Page: /account/orders

Better ticket:
[High] Account orders: icon-only reorder button has no accessible name

User impact:
Screen reader users hear only "button" in the order history table and cannot tell which control repeats a past order.

Evidence:
Lighthouse audit: "Buttons do not have an accessible name" on /account/orders.
Affected element: button.icon-button in the order actions column.
Manual check needed with a screen reader because Lighthouse cannot confirm whether the visible icon meaning is exposed.

Acceptance criteria:
- Each order action button exposes a unique accessible name, such as "Reorder order 10423".
- The button purpose is understandable when navigating by controls with VoiceOver or NVDA.
- The order can still be repeated with keyboard only.

Contrast does not meet requirements

Lighthouse output:
Background and foreground colors do not have a sufficient contrast ratio
Element: .coupon-error
Page: /checkout

Better ticket:
[High] Checkout: coupon error message has insufficient contrast

User impact:
Low-vision shoppers may miss why a coupon code failed and may abandon checkout or retry without useful feedback.

Evidence:
Lighthouse contrast finding on .coupon-error after submitting an invalid coupon code.
State: checkout summary with validation error visible.

Acceptance criteria:
- Coupon error text meets the relevant contrast requirement in default and focused checkout states.
- The error remains visible at mobile and desktop breakpoints.
- If the error appears dynamically, it is also announced or associated with the coupon field.

Form elements do not have associated labels

Lighthouse output:
Form elements do not have associated labels
Element: input[name="phone"]
Page: /checkout/address

Better ticket:
[High] Checkout address: phone field is missing a persistent label

User impact:
Screen reader users may not know what information is expected in the phone field, and users with cognitive disabilities may lose field context after placeholder text disappears.

Evidence:
Lighthouse label finding for input[name="phone"] on the checkout address step.
Placeholder text appears to be the only visible cue.

Acceptance criteria:
- The phone field has a persistent visible or programmatic label.
- Required, optional, and invalid states are exposed programmatically.
- The address step can be completed with keyboard and a screen reader.

When one Lighthouse row should become multiple tickets

Paste-ready input for the generator

Lighthouse audit:

Tested page or flow:

Affected state:

Failing element or selector:

What the user is trying to do:

Observed risk:

Manual check already done, if any:

Likely owner:

Notes for acceptance criteria:

Related resources