]> source.dussan.org Git - jquery-ui.git/commitdiff
Accordion: Fix tests in IE 11 with jQuery 1.7-1.8
authorScott González <scott.gonzalez@gmail.com>
Tue, 10 Mar 2015 20:10:43 +0000 (16:10 -0400)
committerScott González <scott.gonzalez@gmail.com>
Wed, 11 Mar 2015 12:43:17 +0000 (08:43 -0400)
Closes gh-1482

tests/unit/accordion/accordion_core.js

index dc0649b3bc83b15e674401402e3a244d02662583..721d1548751e13e54224b78ac2efc48a85e2be92 100644 (file)
@@ -110,38 +110,81 @@ asyncTest( "keyboard support", function() {
                keyCode = $.ui.keyCode;
        equal( headers.filter( ".ui-state-focus" ).length, 0, "no headers focused on init" );
        headers.eq( 0 ).simulate( "focus" );
-       setTimeout(function() {
+       setTimeout( step1 );
+
+       function step1() {
                ok( headers.eq( 0 ).is( ".ui-state-focus" ), "first header has focus" );
                headers.eq( 0 ).simulate( "keydown", { keyCode: keyCode.DOWN } );
+               setTimeout( step2 );
+       }
+
+       // Support: IE 11 with jQuery 1.7 - 1.8 only
+       // All of the setTimeouts() from keydowns aren't necessary with newer jQuery.
+       // Only the explicit focus simulations require them.
+       function step2() {
                ok( headers.eq( 1 ).is( ".ui-state-focus" ), "DOWN moves focus to next header" );
                headers.eq( 1 ).simulate( "keydown", { keyCode: keyCode.RIGHT } );
+               setTimeout( step3 );
+       }
+
+       function step3() {
                ok( headers.eq( 2 ).is( ".ui-state-focus" ), "RIGHT moves focus to next header" );
                headers.eq( 2 ).simulate( "keydown", { keyCode: keyCode.DOWN } );
-               ok( headers.eq( 0 ).is( ".ui-state-focus" ), "DOWN wraps focus to first header" );
+               setTimeout( step4 );
+       }
 
+       function step4() {
+               ok( headers.eq( 0 ).is( ".ui-state-focus" ), "DOWN wraps focus to first header" );
                headers.eq( 0 ).simulate( "keydown", { keyCode: keyCode.UP } );
+               setTimeout( step5 );
+       }
+
+       function step5() {
                ok( headers.eq( 2 ).is( ".ui-state-focus" ), "UP wraps focus to last header" );
                headers.eq( 2 ).simulate( "keydown", { keyCode: keyCode.LEFT } );
-               ok( headers.eq( 1 ).is( ".ui-state-focus" ), "LEFT moves focus to previous header" );
+               setTimeout( step6 );
+       }
 
+       function step6() {
+               ok( headers.eq( 1 ).is( ".ui-state-focus" ), "LEFT moves focus to previous header" );
                headers.eq( 1 ).simulate( "keydown", { keyCode: keyCode.HOME } );
+               setTimeout( step7 );
+       }
+
+       function step7() {
                ok( headers.eq( 0 ).is( ".ui-state-focus" ), "HOME moves focus to first header" );
                headers.eq( 0 ).simulate( "keydown", { keyCode: keyCode.END } );
-               ok( headers.eq( 2 ).is( ".ui-state-focus" ), "END moves focus to last header" );
+               setTimeout( step8 );
+       }
 
+       function step8() {
+               ok( headers.eq( 2 ).is( ".ui-state-focus" ), "END moves focus to last header" );
                headers.eq( 2 ).simulate( "keydown", { keyCode: keyCode.ENTER } );
+               setTimeout( step9 );
+       }
+
+       function step9() {
                equal( element.accordion( "option", "active" ) , 2, "ENTER activates panel" );
                headers.eq( 1 ).simulate( "keydown", { keyCode: keyCode.SPACE } );
-               equal( element.accordion( "option", "active" ), 1, "SPACE activates panel" );
+               setTimeout( step10 );
+       }
 
+       function step10() {
+               equal( element.accordion( "option", "active" ), 1, "SPACE activates panel" );
                anchor.simulate( "focus" );
-               setTimeout(function() {
-                       ok( !headers.eq( 1 ).is( ".ui-state-focus" ), "header loses focus when focusing inside the panel" );
-                       anchor.simulate( "keydown", { keyCode: keyCode.UP, ctrlKey: true } );
-                       ok( headers.eq( 1 ).is( ".ui-state-focus" ), "CTRL+UP moves focus to header" );
-                       start();
-               }, 1 );
-       }, 1 );
+               setTimeout( step11 );
+       }
+
+       function step11() {
+               ok( !headers.eq( 1 ).is( ".ui-state-focus" ), "header loses focus when focusing inside the panel" );
+               anchor.simulate( "keydown", { keyCode: keyCode.UP, ctrlKey: true } );
+               setTimeout( step12 );
+       }
+
+       function step12() {
+               ok( headers.eq( 1 ).is( ".ui-state-focus" ), "CTRL+UP moves focus to header" );
+               start();
+       }
 });
 
 }( jQuery ) );