+- **`role="presentation"` on focusable elements** — per [WAI-ARIA 1.2 §4.6 Conflict Resolution](https://www.w3.org/TR/wai-aria-1.2/#conflict_resolution_presentation_none), browsers ignore `role="presentation"` on focusable elements. [axe-core's `presentation-role-conflict`](https://dequeuniversity.com/rules/axe/4.10/presentation-role-conflict) flags this pattern as an authoring error. This rule does not detect the conflict: the escape hatch only affects elements that would otherwise be considered non-interactive, so a non-interactive element decorated with `role="presentation"` is silently exempted even if it is focusable via `tabindex`. Natively-interactive elements such as `<button>` / `<a href>` are already recognized by `isInteractive(node)` independent of the escape hatch; the rule doesn't report them in the first place, and it doesn't enforce presentation-role conflict checks. If you want to catch that authoring error itself (role=presentation on a focusable element, which has no effect at runtime), layer axe-core or a dedicated rule on top.
0 commit comments