4 files changed +21
-1
lines changed Original file line number Diff line number Diff line change @@ -54,6 +54,11 @@ export default function ariaRequiredAttrEvaluate(
54
54
) {
55
55
return true ;
56
56
}
57
+ // Non-normative exception for things like media player seek slider.
58
+ // Tested to work in various screen readers.
59
+ if ( role === 'slider' && virtualNode . attr ( 'aria-valuetext' ) ?. trim ( ) ) {
60
+ return true ;
61
+ }
57
62
58
63
const elmSpec = getElementSpec ( virtualNode ) ;
59
64
const missingAttrs = requiredAttrs . filter (
Original file line number Diff line number Diff line change @@ -49,6 +49,13 @@ describe('aria-required-attr', () => {
49
49
assert . isTrue ( requiredAttrCheck . apply ( checkContext , params ) ) ;
50
50
} ) ;
51
51
52
+ it ( 'passes aria-valuenow if element has aria-valuetext' , ( ) => {
53
+ const params = checkSetup (
54
+ '<div id="target" role="slider" aria-valuetext="foo"></div>'
55
+ ) ;
56
+ assert . isTrue ( requiredAttrCheck . apply ( checkContext , params ) ) ;
57
+ } ) ;
58
+
52
59
it ( 'passes aria-checkbox if element has checked property' , ( ) => {
53
60
const params = checkSetup (
54
61
'<input id="target" type="checkbox" role="switch">'
Original file line number Diff line number Diff line change 52
52
< div role ="spinbutton " id ="pass11 "> fail</ div >
53
53
< div role ="separator " id ="pass12 "> </ div >
54
54
< div role ="separator " id ="pass13 " tabindex ="0 " aria-valuenow ="foo "> </ div >
55
+ < div
56
+ role ="slider "
57
+ id ="pass14-aria-valuetext-slider "
58
+ aria-valuetext ="3 minutes 20 second "
59
+ >
60
+ ok
61
+ </ div >
55
62
56
63
< div role ="scrollbar " id ="violation1 "> fail</ div >
57
64
< div role ="slider " id ="violation2 "> fail</ div >
Original file line number Diff line number Diff line change 23
23
[" #pass10" ],
24
24
[" #pass11" ],
25
25
[" #pass12" ],
26
- [" #pass13" ]
26
+ [" #pass13" ],
27
+ [" #pass14-aria-valuetext-slider" ]
27
28
]
28
29
}
0 commit comments