]> source.dussan.org Git - jquery-ui.git/commitdiff
Dialog: Update focus-tabbable test with a timer workaround to get IE8 to pass.
authorJörn Zaefferer <joern.zaefferer@gmail.com>
Sat, 17 Nov 2012 17:04:10 +0000 (18:04 +0100)
committerJörn Zaefferer <joern.zaefferer@gmail.com>
Mon, 26 Nov 2012 09:28:25 +0000 (10:28 +0100)
tests/unit/dialog/dialog_core.js

index b5566255ccfc741103a16048e31a3462f172dd14..404e8177027c2978d44df7ab0ab3e9aa4d8b68bb 100644 (file)
@@ -48,34 +48,36 @@ test( "focus tabbable", function() {
                        }]
                };
 
-       // 1. first element inside the dialog matching [autofocus]
        el = $( "<div><input><input autofocus></div>" ).dialog( options );
-       equal( document.activeElement, el.find( "input" )[ 1 ] );
+       equal( document.activeElement, el.find( "input" )[ 1 ], "1. first element inside the dialog matching [autofocus]" );
        el.remove();
 
-       // 2. tabbable element inside the content element
-       el = $( "<div><input><input></div>" ).dialog( options );
-       equal( document.activeElement, el.find( "input" )[ 0 ] );
-       el.remove();
-
-       // 3. tabbable element inside the buttonpane
-       el = $( "<div>text</div>" ).dialog( options );
-       equal( document.activeElement, el.dialog( "widget" ).find( ".ui-dialog-buttonpane button" )[ 0 ] );
-       el.remove();
-
-       // 4. the close button
-       el = $( "<div>text</div>" ).dialog();
-       equal( document.activeElement, el.dialog( "widget" ).find( ".ui-dialog-titlebar .ui-dialog-titlebar-close" )[ 0 ] );
-       el.remove();
-
-       // 5. the dialog itself
-       el = $( "<div>text</div>" ).dialog({
-               autoOpen: false
-       });
-       el.dialog( "widget" ).find( ".ui-dialog-titlebar-close" ).hide();
-       el.dialog( "open" );
-       equal( document.activeElement, el.parent()[ 0 ] );
-       el.remove();
+       // IE8 fails to focus the input, <body> ends up being the activeElement
+       // so wait for that stupid browser
+       stop();
+       setTimeout(function() {
+               el = $( "<div><input><input></div>" ).dialog( options );
+               equal( document.activeElement, el.find( "input" )[ 0 ], "2. tabbable element inside the content element" );
+               el.remove();
+
+               el = $( "<div>text</div>" ).dialog( options );
+               equal( document.activeElement, el.dialog( "widget" ).find( ".ui-dialog-buttonpane button" )[ 0 ], "3. tabbable element inside the buttonpane" );
+               el.remove();
+
+               el = $( "<div>text</div>" ).dialog();
+               equal( document.activeElement, el.dialog( "widget" ).find( ".ui-dialog-titlebar .ui-dialog-titlebar-close" )[ 0 ], "4. the close button" );
+               el.remove();
+
+               el = $( "<div>text</div>" ).dialog({
+                       autoOpen: false
+               });
+               el.dialog( "widget" ).find( ".ui-dialog-titlebar-close" ).hide();
+               el.dialog( "open" );
+               equal( document.activeElement, el.parent()[ 0 ], "5. the dialog itself" );
+               el.remove();
+
+               start();
+       }, 13);
 });
 
 })(jQuery);