]> source.dussan.org Git - jquery-ui.git/commitdiff
Tests: Workaround IE issues in qunit-assert-domequal
authorMichał Gołębiowski-Owczarek <m.goleb@gmail.com>
Wed, 10 May 2023 12:46:30 +0000 (14:46 +0200)
committerMichał Gołębiowski-Owczarek <m.goleb@gmail.com>
Wed, 10 May 2023 15:34:14 +0000 (17:34 +0200)
In IE, `option` elements may have different initial `option` colors.
They may initially all be transparent, but later the selected
option gets a blue background with white text; we now ignore it.

The logic of `qunit-assert-domequal` was also fixed to use the same
method of fetching styles in all browsers; IE used to get a legacy
one meant for IE <9 due to a mistake in the performed check.

tests/lib/qunit-assert-domequal.js

index 066eb203b9f8dc2f1fdc10d5b00386566d086498..bcce60702f582a2f18e52ae1db004e8217272eb1 100644 (file)
@@ -38,6 +38,7 @@ var domEqual = QUnit.assert.domEqual = function( selector, modifier, message ) {
 
 domEqual.properties = [
        "disabled",
+       "nodeName",
        "readOnly"
 ];
 
@@ -59,7 +60,6 @@ domEqual.attributes = [
        "class",
        "href",
        "id",
-       "nodeName",
        "role",
        "tabIndex",
        "title"
@@ -76,23 +76,26 @@ function getElementStyles( elem ) {
        var style = elem.ownerDocument.defaultView ?
                elem.ownerDocument.defaultView.getComputedStyle( elem, null ) :
                elem.currentStyle;
-       var key, len;
-
-       if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {
-               len = style.length;
-               while ( len-- ) {
-                       key = style[ len ];
-                       if ( typeof style[ key ] === "string" ) {
-                               styles[ camelCase( key ) ] = style[ key ];
-                       }
+       var key, camelKey;
+       var len = style.length;
+
+       while ( len-- ) {
+               key = style[ len ];
+               camelKey = camelCase( key );
+
+               // Support: IE <=11+
+               // In IE, `option` elements may have different initial `option` colors.
+               // They may initially all be transparent, but later the selected
+               // option gets a blue background with white text; ignore it.
+               if ( document.documentMode && elem.nodeName.toLowerCase() === "option" && (
+                       camelKey === "color" ||
+                               camelKey.indexOf( "Color" ) === camelKey.length - "Color".length
+               ) ) {
+                       continue;
                }
 
-       // Support: Opera, IE <9
-       } else {
-               for ( key in style ) {
-                       if ( typeof style[ key ] === "string" ) {
-                               styles[ key ] = style[ key ];
-                       }
+               if ( typeof style[ key ] === "string" ) {
+                       styles[ camelKey ] = style[ key ];
                }
        }