Milano theme: automated accessibility test

On September 29, 2026 the AccessifyAI scanner tested the official demo store of Milano 1.2.5 by BrainEcom on 4 pages. It found 9 issue types (161 occurrences in total). For 8 of the 12 WCAG 2.2 criteria this index evaluates it found nothing.

Is Milano accessible?

An automated test cannot answer that on its own. What this one shows is 9 types of issues on the Milano demo store within the 12 criteria this index evaluates, listed below. The content, apps and settings of your store decide much of the result. Of the 55 WCAG 2.2 Level A and AA criteria, the scanner tests 15, this index reports 12, and the other 40 need a person to check them.

This is not a certification and not a legal assessment.

Test details

Developer
BrainEcom
Price
$300 USD
Version tested
1.2.5, released September 21, 2026
Style
Milano
Scan date
September 29, 2026
Theme Store
Theme Store page
Pages
  • Home page: tested, 33 findings
  • Collection page: tested, 22 findings
  • Product page: tested, 60 findings
  • Cart page: tested, 46 findings

What the test found

Form field without a label

WCAG 2.2 1.3.1 Info and relationships, Level A

44 occurrences, found on: Home page, Cart page

Why it matters for shoppers
Without a label a screen reader only says “edit text”, so the shopper cannot tell whether the field is for an e-mail address, a quantity or a discount code.
Where it usually lives in a Shopify theme
Newsletter sign-up in the footer, the search field in the header, quantity fields in the cart, price range filters on collections.
Direction for a fix
Connect every field to a label element with for and id (it may be visually hidden) or give it an aria-label. A placeholder is not a label.
Examples from the demo store
  • input.xo-variant-image__input (type="radio")

Button without a name

WCAG 2.2 4.1.2 Name, role, value, Level A

4 occurrences, found on: Home page, Collection page, Product page, Cart page

Why it matters for shoppers
The shopper hears “button” with no hint whether it closes a drawer, adds to cart or opens the menu.
Where it usually lives in a Shopify theme
Icon-only buttons: drawer close, slider arrows, quantity plus and minus, menu and search toggles.
Direction for a fix
Put an aria-label or visually hidden text on the button and hide the icon inside it with aria-hidden="true".
Examples from the demo store
  • button.xo-predictive-search-base__button

Alt text is a file name or a placeholder word

WCAG 2.2 1.1.1 Non-text content, Level A

12 occurrences, found on: Home page, Product page

Why it matters for shoppers
Hearing “IMG_2841.jpg” or “image” tells a screen reader user nothing about the product.
Where it usually lives in a Shopify theme
Mostly content: alt text entered in the Shopify admin for product media and section images. Some themes fall back to the file name when the alt text is empty.
Direction for a fix
Describe the image in the admin, and in the theme fall back to the product or section title instead of the file name.
Examples from the demo store
  • img

Page without an h1 heading

WCAG 2.2 1.3.1 Info and relationships, Level A

4 occurrences, found on: Home page, Collection page, Product page, Cart page

Why it matters for shoppers
Screen reader users often jump to the first-level heading to learn what a page is about.
Where it usually lives in a Shopify theme
The main title of a template: collection banner, product title in the main product section, cart title. Some templates style the title as a heading without using an h1.
Direction for a fix
Render the main title of every template as one h1.

No skip link

WCAG 2.2 2.4.1 Bypass blocks, Level A

4 occurrences, found on: Home page, Collection page, Product page, Cart page

Why it matters for shoppers
A keyboard user has to tab through the whole header and menu on every page before reaching the content.
Where it usually lives in a Shopify theme
Right after the opening body tag in layout/theme.liquid.
Direction for a fix
Make “Skip to content” the first focusable link, pointing at the main element, and show it when it receives focus.

aria-labelledby or aria-describedby points to a missing element

WCAG 2.2 4.1.2 Name, role, value, Level A

1 occurrence, found on: Collection page

Why it matters for shoppers
The element was meant to take its name or description from another element that is not on the page, so the screen reader has nothing to read.
Where it usually lives in a Shopify theme
Product cards that point at sale or sold-out badges which are only rendered in some cases, form error messages, dialogs.
Direction for a fix
Output the reference only when the target element is rendered, or always render the target.
Examples from the demo store
  • aria-labelledby → "verticalTitle"

Heading levels skip a step

WCAG 2.2 1.3.1 Info and relationships, Level A

1 occurrence, found on: Cart page

Why it matters for shoppers
People who move through a page by headings expect the levels to nest. A jump from h2 to h4 suggests a missing part.
Where it usually lives in a Shopify theme
Section headings, product card titles and footer column headings, where the level is chosen for its font size.
Direction for a fix
Choose heading levels from the structure of the page and set the size with a class.
Examples from the demo store
  • h3 → h5

Icon without a text alternative or a decorative mark

WCAG 2.2 1.1.1 Non-text content, Level A

88 occurrences, found on: Home page, Collection page, Product page, Cart page

Why it matters for shoppers
If the icon carries meaning, such as a payment method or “free shipping”, a screen reader user misses it. If it is decoration, it should be hidden from screen readers.
Where it usually lives in a Shopify theme
Icon snippets, payment icons in the footer, trust and feature icons.
Direction for a fix
Hide decorative icons with aria-hidden="true". Give meaningful icons role="img" and an aria-label or a title element.
What the test can see
The test cannot tell a decorative icon from a meaningful one, so each of these needs a quick look.
Examples from the demo store
  • svg.bg:foreground
  • svg
  • svg.xo-variant-image__diagonal

Menu not marked as navigation

WCAG 2.2 1.3.1 Info and relationships, Level A

3 occurrences, found on: Home page, Product page, Cart page

Why it matters for shoppers
Screen reader users cannot jump straight to the menu.
Where it usually lives in a Shopify theme
Header menu and footer menus.
Direction for a fix
Wrap each menu in a nav element and name it with aria-label when there is more than one.

Evaluated criteria without findings: 8 of 12

Without findings means the automated test found nothing for the criterion on these pages. Several of these criteria can only be tested in part by a machine.

  • 1.4.2 Audio control (Level A)
  • 1.4.4 Resize text (Level AA)
  • 2.4.2 Page titled (Level A)
  • 2.4.3 Focus order (Level A)
  • 2.4.4 Link purpose (in context) (Level A)
  • 3.1.1 Language of page (Level A)
  • 3.2.1 On focus (Level A)
  • 3.3.8 Accessible authentication (minimum) (Level AA)

Not evaluated in this index

  • 1.4.3 Contrast (minimum) (Level AA): needs the rendered page with its stylesheets
  • 2.4.11 Focus not obscured (minimum) (Level AA): needs the rendered page with its stylesheets
  • 2.5.8 Target size (minimum) (Level AA): needs the rendered page with its stylesheets

Also noted, Level AAA

Level AAA goes beyond what EN 301 549, the standard behind the EAA and the BFSG, asks for. These points are listed for completeness and are not counted above.

  • Link opens a new tab without saying so (3.2.5 Change on request): 4

What this result does not tell you

  • The scanner checks 15 of the 55 WCAG 2.2 Level A and AA success criteria, some of them only in part, and this index reports 12 of them. Keyboard use, focus visibility, captions, error messages and most of what makes a checkout usable need a person to check.
  • Contrast (minimum), focus not obscured and target size are not evaluated here: they need the rendered page with its stylesheets, and this test does not load stylesheets. Their findings are left out of every count on this page.
  • It tests the demo store as it was on the scan date: demo content, settings and apps included. A store built on the same theme can have more or fewer findings.
  • The scanner reads the HTML the server sends, without running scripts or loading external stylesheets. Content that scripts add after the page loads is not part of this test.
  • It is not a certification and not a legal assessment of the theme or of any store that uses it.

How we test

Data licence: CC BY 4.0. Attribution: AccessifyAI Shopify theme accessibility index, accessifyai.de

Scan your own store

Your store has its own content, apps and settings on top of the theme. The free scanner runs the same rules on your storefront and shows every finding with its WCAG criterion.

For the developer of Milano

If you have released a fix for any of these findings, or you think a result is wrong, write to support@accessifyai.de with “Milano” and the version number. We scan the demo store again and update this page with the new date.

More themes by BrainEcom in the index

All themes in the index

Is the Milano theme accessible? Shopify WCAG 2.2 test | AccessifyAI