Test 1558: One or more elements, not intentionally hidden in the DOM and available to assistive technologies, has an aria-haspopup attribute that is not set to one of the following text values: 'true | false | menu | listbox | tree | grid | dialog'.
Elements with aria-haspopup are outlined in purple. Valid values are highlighted in green, invalid values in red.
aria-haspopup attribute whose value is not one of the enumerated valid valuestrue, false, menu, listbox, tree, grid, dialogaria-haspopup value (aria-haspopup="") is not one of the valid tokens, so it FAILS"True" or "Menu" are invalid" menu " is invalidaria-haspopup="menu")aria-haspopup="listbox")aria-haspopup="dialog")aria-haspopup="tree")aria-haspopup="grid")aria-haspopup="true" / "false")aria-haspopup indicates that an element triggers a popup and, since ARIA 1.1, what type of popup it triggers (menu, listbox, tree, grid, or dialog). Assistive technology uses this value to announce the correct interaction pattern to the user. An invalid value (a typo, an unsupported string, or incorrect casing) causes assistive technology to either ignore the attribute or announce inaccurate information, misleading users about what will happen when they activate the control.
Elements without aria-haspopup are not tested
Hidden elements are excluded from testing, even with an invalid value
Visibility hidden elements are not tested
Ancestor visibility is inherited - a display:none parent hides the descendant from testing even with an invalid value
Ancestor visibility is inherited - a visibility:hidden parent hides the descendant from testing
aria-hidden elements are not available to assistive technologies
"true" is a valid legacy ARIA 1.0 value - PASSES
"false" explicitly indicates no popup - PASSES
Menu button correctly declares it opens a menu - PASSES
Combobox correctly declares it opens a listbox - PASSES
Button correctly declares it opens a tree popup - PASSES
Button correctly declares it opens a grid (e.g. a date picker) - PASSES
Dialog content goes here.
Button correctly declares it opens a dialog - PASSES
An empty value is present but is not one of the valid tokens - FAILS
"list" is not a valid value (should be "menu" or "listbox") - FAILS
"none" is not a valid token - should simply omit the attribute or use "false" - FAILS
"yes" is not part of the enumerated value set - FAILS
Values are case-sensitive - "True" is not the same token as "true" - FAILS
Values are case-sensitive - "Menu" is not the same token as "menu" - FAILS
Leading/trailing whitespace is not trimmed - value does not exactly match "menu" - FAILS
"1" is not a valid boolean token, should be "true" - FAILS
The test applies to any element type, not just native buttons - "invalid" is not a valid token - FAILS
Nav menu links frequently get aria-haspopup applied - "list" is not a valid token - FAILS
Both buttons use invalid values - both FAIL (2 failures)
First button PASSES (valid "menu"), second button FAILS (invalid "list")
Menu button correctly uses aria-haspopup="menu" - PASSES
Developer mistakenly copied "list" instead of "menu" - FAILS
Search combobox correctly declares aria-haspopup="listbox" - PASSES
Developer used "none" instead of omitting the attribute or using "false" - FAILS
Change your password, email, and preferences here.
Settings button correctly declares aria-haspopup="dialog" - PASSES
Change your password, email, and preferences here.
Value "Dialog" does not match the required lowercase token "dialog" - FAILS