In one paragraph
ARIA roles used must conform to valid values means the role declaration did not contain a usable value under this rule. Replace invented or abstract role names with semantics appropriate to the real function, or use the right native HTML. A valid role token does not make the element suitable, named, keyboard-operable, or complete. Inspect the rendered accessibility role after the correction.
Why it matters
Roles communicate categories of structure and interaction. nav is an HTML element name, while navigation is its relevant ARIA landmark role. Invented values such as icon or popup do not provide the intended standard semantics merely because they sound descriptive.
Abstract taxonomy roles are not intended as author-assigned concrete roles. A component should not use widget as a shortcut for all interactive behaviour. The browser's native semantics and supported fallback processing still matter when a declaration is unusable.
Space-separated role tokens form an ordered fallback list, not several simultaneous roles. A browser selects a supported usable token according to the model. Do not combine unrelated meanings and assume every one applies. Checker vocabulary, specification status, and actual assistive support can differ.
How WebAuditOS evaluates this finding
The supplied aria-roles implementation tests applicable non-empty rendered role attributes. It accepts a recognised non-abstract fallback path but reports abstract tokens under its documented conditions. Deprecated roles can remain valid for this rule while receiving a separate finding.
Critical impact maps to high severity. The test does not decide whether a valid role is permitted on the host element, whether required states exist, or whether behaviour fits. A recognised experimental or nonstandard token in one engine is not a universal recommendation to use it.
How to fix it
- Identify what the element actually does or represents. Separate navigation, an action, a grouped region, and a rich application widget before selecting vocabulary.
- Prefer native structure where it fits. For example:
<nav aria-label="Main"><a href="/pricing">Pricing</a></nav>
This supplies navigation semantics without an invented role=nav. It is not a reason to turn every group of links into a landmark.
- Correct genuine role typos at the generating component. Inspect final DOM output so a framework's unset variable does not become role=undefined or a template expression left in markup.
- Remove author-assigned abstract roles. Choose an appropriate concrete pattern only if the component actually implements that function; otherwise simpler markup can be more truthful.
- Review fallback lists deliberately. Keep only justified tokens in a meaningful order and test the supported clients. Use canonical vocabulary spelling instead of relying on a checker's case recovery or a browser ignoring unknown tokens.
- Review host-language constraints and the complete required pattern. A valid tab role still needs the right ownership, name, state, and keyboard behaviour. A navigation landmark is not interchangeable with a menu widget.
- Test computed role, accessible name, focus, activation, and dynamic states after changing a shared component. Validating the vocabulary can make previously ignored semantics active and reveal other defects.
- Rescan role-value, deprecated-role, required-parent, and required-property checks together. Keep known compatibility exceptions documented rather than equating one quiet rule with a conformant widget.
What the fix can break
Changing a role can change how users expect to navigate and operate the component. Do not rename a static region as a control without implementing the behaviour.
Removing a typo may affect scripts or CSS that were reading it as application data. Move those dependencies to an appropriate mechanism instead of preserving invalid accessibility vocabulary.
A fallback that changes effective roles across clients needs a compatible interaction design. Do not assume one shared keyboard handler supports every unrelated token in the list.
Questions
Can I use an abstract role such as widget?
Not as a concrete author role. Choose truthful supported semantics or suitable native markup.
Do two role tokens mean two simultaneous roles?
No. They express ordered fallback processing, not combined semantics.
Does a valid role guarantee keyboard support?
No. ARIA does not install the required interaction behaviour.
Which related checks help?
Review deprecated roles, required parents, and the automation limits guide.
What severity does this get in the report?
High. An axe finding takes its severity from the impact axe reports for the element that failed, and the report maps critical and serious to high, moderate to medium, minor to low. This rule is declared critical in axe-core 4.13.0, so every failure arrives as high.