← 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.

Open this Lighthouse example in the generator

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.

Generate a draft ticket from this Lighthouse finding

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:

For Lighthouse exports with many rows, generate one ticket at a time. Include the tested state and the user task, because the same audit name can mean different priorities in checkout, account, and footer contexts.

Open a Lighthouse form-label example in the generator

Related resources