Which WCAG criterion this fails
- Does not meet 4.1.2 Name, Role, Value (Level A)
How to fix it on Shopify
Everything below is done from Online Store > Themes > Edit code. Take a copy of the theme before editing.
- Remove aria-label and aria-labelledby from generic elements: <div>, <span>, <p>, <li> without a role.
- If the element needs a name, give it a role that supports one — role="region" with aria-label, role="group", or a real landmark element — but only if it genuinely is one of those.
- If the intent was extra context for a control, put the text in the control itself, or use aria-describedby on the control instead.
- This most often appears where an aria-label was added to a wrapper <div> hoping it would be announced. It will not be; wrap the meaningful content in a real element instead.
Where this usually lives
snippets/card-product.liquid, sections/header.liquid, and app blocks that add aria-label to wrappers
Paths given for Dawn and its derivatives (Sense, Craft, Refresh, Studio). A heavily customised theme may differ; the CSS selector in your scan report points at the exact element.
Code
<!-- Forbidden: a plain div cannot take a name -->
<div aria-label="Product card">…</div>
<!-- Either drop it -->
<div class="card">…</div>
<!-- or give it a role that supports a name -->
<div role="group" aria-label="Wool Runner, £95">…</div>How to confirm it is fixed
Re-run the scan. This rule should drop out of the findings entirely. If the instance count falls but does not reach zero, the same defect exists in another template — product cards and quick-view modals are the usual second home for it.
Effort: low. Rule id: aria-prohibited-attr (axe-core).