@@ -221,40 +221,76 @@ asyncTest( "simultaneous searches (#9334)", function() {
221
221
} ) ;
222
222
223
223
test ( "ARIA" , function ( ) {
224
- expect ( 7 ) ;
224
+ expect ( 13 ) ;
225
225
var element = $ ( "#autocomplete" ) . autocomplete ( {
226
226
source : [ "java" , "javascript" ]
227
227
} ) ,
228
228
liveRegion = element . autocomplete ( "instance" ) . liveRegion ;
229
229
230
- equal ( liveRegion . text ( ) , "" , "Empty live region on create" ) ;
230
+ equal ( liveRegion . children ( ) . length , 0 , "Empty live region on create" ) ;
231
+ equal ( liveRegion . attr ( "aria-live" ) , "assertive" ,
232
+ "Live region's aria-live attribute must be assertive" ) ;
233
+ equal ( liveRegion . attr ( "aria-relevant" ) , "additions" ,
234
+ "Live region's aria-relevant attribute must be additions" ) ;
235
+ equal ( liveRegion . attr ( "role" ) , "status" ,
236
+ "Live region's role attribute must be status" ) ;
231
237
232
238
element . autocomplete ( "search" , "j" ) ;
233
- equal ( liveRegion . text ( ) , "2 results are available, use up and down arrow keys to navigate." ,
239
+ equal ( liveRegion . children ( ) . first ( ) . text ( ) ,
240
+ "2 results are available, use up and down arrow keys to navigate." ,
234
241
"Live region for multiple values" ) ;
235
242
236
243
element . simulate ( "keydown" , { keyCode : $ . ui . keyCode . DOWN } ) ;
237
- equal ( liveRegion . text ( ) , "2 results are available, use up and down arrow keys to navigate. ",
238
- "Live region not changed on focus " ) ;
244
+ equal ( liveRegion . children ( ) . filter ( ":visible" ) . text ( ) , "java ",
245
+ "Live region changed on keydown to announce the highlighted value " ) ;
239
246
240
247
element . one ( "autocompletefocus" , function ( event ) {
241
248
event . preventDefault ( ) ;
242
249
} ) ;
243
250
element . simulate ( "keydown" , { keyCode : $ . ui . keyCode . DOWN } ) ;
244
- equal ( liveRegion . text ( ) , "javascript" ,
251
+ equal ( liveRegion . children ( ) . filter ( ":visible" ) . text ( ) , "javascript" ,
245
252
"Live region updated when default focus is prevented" ) ;
246
253
247
254
element . autocomplete ( "search" , "javas" ) ;
248
- equal ( liveRegion . text ( ) , "1 result is available, use up and down arrow keys to navigate." ,
255
+ equal ( liveRegion . children ( ) . filter ( ":visible" ) . text ( ) ,
256
+ "1 result is available, use up and down arrow keys to navigate." ,
249
257
"Live region for one value" ) ;
250
258
251
259
element . autocomplete ( "search" , "z" ) ;
252
- equal ( liveRegion . text ( ) , "No search results." ,
260
+ equal ( liveRegion . children ( ) . filter ( ":visible" ) . text ( ) , "No search results." ,
253
261
"Live region for no values" ) ;
254
262
255
- element . autocomplete ( "search" , "j" ) ;
256
- equal ( liveRegion . text ( ) , "2 results are available, use up and down arrow keys to navigate." ,
257
- "Live region for multiple values" ) ;
263
+ equal ( liveRegion . children ( ) . length , 5 ,
264
+ "Should be five children in the live region after the above" ) ;
265
+ equal ( liveRegion . children ( ) . filter ( ":visible" ) . length , 1 ,
266
+ "Only one should be still visible" ) ;
267
+ ok ( liveRegion . children ( ) . filter ( ":visible" ) [ 0 ] === liveRegion . children ( ) . last ( ) [ 0 ] ,
268
+ "The last one should be the visible one" ) ;
269
+
270
+ element . autocomplete ( "destroy" ) ;
271
+ equal ( liveRegion . parent ( ) . length , 0 ,
272
+ "The liveRegion should be detached after destroy" ) ;
273
+ } ) ;
274
+
275
+ test ( "ARIA, aria-label announcement" , function ( ) {
276
+ expect ( 1 ) ;
277
+ $ . widget ( "custom.catcomplete" , $ . ui . autocomplete , {
278
+ _renderMenu : function ( ul , items ) {
279
+ var that = this ;
280
+ $ . each ( items , function ( index , item ) {
281
+ that . _renderItemData ( ul , item )
282
+ . attr ( "aria-label" , item . category + " : " + item . label ) ;
283
+ } ) ;
284
+ }
285
+ } ) ;
286
+ var element = $ ( "#autocomplete" ) . catcomplete ( {
287
+ source : [ { label : "anders andersson" , category : "People" } ]
288
+ } ) ,
289
+ liveRegion = element . catcomplete ( "instance" ) . liveRegion ;
290
+ element . catcomplete ( "search" , "a" ) ;
291
+ element . simulate ( "keydown" , { keyCode : $ . ui . keyCode . DOWN } ) ;
292
+ equal ( liveRegion . children ( ) . filter ( ":visible" ) . text ( ) , "People : anders andersson" ,
293
+ "Live region changed on keydown to announce the highlighted value's aria-label attribute" ) ;
258
294
} ) ;
259
295
260
296
test ( "ARIA, init on detached input" , function ( ) {
0 commit comments