Skip to content
SilktideHelp

Missing ARIA child role

Silktide checks container widgets built with ARIA roles, such as tab strips, menus, and listboxes, and verifies that each one contains the kind of items it is supposed to hold. A tab strip with no tabs, or a menu with no menu items, is announced as a widget but offers nothing to operate.

<!-- Problem: a tablist must contain elements with role="tab" -->
<div role="tablist">
  <button>Overview</button>
</div>

<!-- Fix: give the children their required role -->
<div role="tablist">
  <button role="tab">Overview</button>
</div>

Why this matters

Composite roles describe a widget as a whole: tablist promises tabs, listbox promises options, menu promises menu items. switch into specialised navigation for these widgets, expecting the promised children. When the children lack their roles, the widget announces itself and then behaves as an empty shell - users can reach it but find nothing inside, while sighted users see a fully working control.

How to fix it

  1. Add the required role to each item inside the container - for example, role="tab" on each control inside a role="tablist".
  2. If the items must live elsewhere in the code, connect them with aria-owns on the container.
  3. If the container is not really that kind of widget, remove or correct its role instead.

Common pairings: tablist needs tab; listbox needs option; menu and menubar need menuitem (or its checkbox and radio variants); radiogroup needs radio; tree needs treeitem; grid and table need row; row needs cells or headers.

How Silktide tests this

  1. Find every element whose ARIA role requires specific child roles.
  2. Search its descendants, including any elements adopted with aria-owns, for at least one element with a required child role.
  3. Report containers where none is found.

Troubleshooting

The items are loaded later by a script

Silktide tests the page as it loads. If a listbox or menu is populated only on demand, it announces as empty until then; where possible, render at least the initial items with the page.

This check reports nothing even though I expect findings

ARIA testing can be turned off per website. Check the advanced settings for the website.

Learn more

Last updated

Was this page helpful?

Missing ARIA child role | Silktide Help