Skip to content

noNoninteractiveElementToInteractiveRole (since v1.0.0)

Diagnostic Category: lint/a11y/noNoninteractiveElementToInteractiveRole


Enforce that interactive ARIA roles are not assigned to non-interactive HTML elements.

Non-interactive HTML elements indicate content and containers in the user interface. Non-interactive elements include <main>, <area>, <h1> (,<h2>, etc), <img>, <li>, <ul> and <ol>.

Interactive HTML elements indicate controls in the user interface. Interactive elements include <a href>, <button>, <input>, <select>, <textarea>.

WAI-ARIA roles should not be used to convert a non-interactive element to an interactive element. Interactive ARIA roles include button, link, checkbox, menuitem, menuitemcheckbox, menuitemradio, option, radio, searchbox, switch and textbox.

<h1 role="button">Some text</h1>
a11y/noNoninteractiveElementToInteractiveRole.js:1:5 lint/a11y/noNoninteractiveElementToInteractiveRole  FIXABLE  ━━━━━━━━━━

   The HTML element h1 is non-interactive and should not have an interactive role.
  > 1 │ <h1 role="button">Some text</h1>
    2 │ 
   Replace h1 with a div or a span.
   Unsafe fix: Remove the role attribute.
    1 │ <h1·role="button">Some·text</h1>
<span role="button">Some text</span>