Presentation role on interactive element
Silktide checks for interactive elements, such as buttons, links, and form fields, that have been marked as purely decorative. Marking an interactive element this way strips its meaning for assistive technology while leaving it clickable on screen.
<!-- Problem: the button still works, but announces as nothing -->
<button role="presentation">Delete</button>
<!-- Fix: remove the role -->
<button>Delete</button>
Why this matters
The roles presentation and none tell
an element
has no meaning - they exist for stripping semantics from things like layout
tables. Applied to an interactive element, they create the worst kind of
barrier: a control that sighted mouse users click every day, but that a
presents as inert content
or skips entirely. The user has no way to know a button is even there.
How to fix it
- Remove the
role="presentation"orrole="none"from the interactive element. Native elements already expose the correct meaning without any role. - If the element truly should not be interactive, make it so: replace it
with a non-interactive element such as
<div>, and remove anytabindex. - If you were trying to suppress a wrapper's meaning (for example, a layout table around controls), put the role on the wrapper, not on the controls inside it.
How Silktide tests this
- Find every element on the page with
role="presentation"orrole="none". - Determine whether the element is interactive: a button, a link or image
map area with an
href, a form field, or any element placed in the keyboard tab order withtabindexof 0 or higher. - Report each interactive element carrying a presentational role.
Elements taken out of the tab order with a negative tabindex are not
reported, and neither are decorative elements such as images or SVG
graphics.
Troubleshooting
A framework or library added the role
Some UI libraries apply role="presentation" to internal wrappers, and
occasionally to the wrong element. Inspect the reported element: if it is
genuinely operable by mouse but silenced for assistive technology, the fix
belongs in your usage of the library or upstream.
This check reports nothing even though I expect findings
ARIA testing can be turned off per website. Check the advanced settings for the website.