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.
- Variant selectors: open snippets/product-variant-picker.liquid (Dawn and its derivatives) or sections/main-product.liquid.
- Each <select> needs a <label for="…"> naming the option — "Size", "Colour" — or an aria-label with the same text.
- The sort-by dropdown on collection pages needs the same treatment; it usually sits in snippets/facets.liquid or sections/main-collection-product-grid.liquid.
- Do not rely on the first <option> ("Choose a size") as the label — it is a value, not a name, and it vanishes once a selection is made.
- Country and province selects in the address/checkout area also need labels.
Where this usually lives
snippets/product-variant-picker.liquid, snippets/facets.liquid, sections/main-collection-product-grid.liquid
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
<label class="form__label" for="Option-{{ option.name | handle }}">{{ option.name }}</label>
<select id="Option-{{ option.name | handle }}" name="options[{{ option.name | escape }}]">
{% for value in option.values %}
<option value="{{ value | escape }}">{{ value }}</option>
{% endfor %}
</select>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: select-name (axe-core).