]> source.dussan.org Git - jquery.git/commitdiff
CSS:Tests: Fix tests & support tests under CSS Zoom
authorMichał Gołębiowski-Owczarek <m.goleb@gmail.com>
Mon, 3 Jun 2024 16:15:23 +0000 (18:15 +0200)
committerGitHub <noreply@github.com>
Mon, 3 Jun 2024 16:15:23 +0000 (18:15 +0200)
Firefox 126+ implements CSS zoom in a way it affects width computed style
very slightly (`100.008px` instead of `100px`); accept that difference.

Add a test for support tests resolving the same under CSS zoom & without one.
That test uncovered Chrome failing the `reliableTrDimensions` support test
under zoom; the test has been fixed.

Fixes gh-5489
Closes gh-5495
Ref gh-5496

src/css/support.js
test/data/support/zoom.html [new file with mode: 0644]
test/unit/css.js
test/unit/support.js

index c7229e93a4737a503e89cb519d193aeb821b8f2b..93459c6b69203a07a7b98058eec7cdd59b8495ad 100644 (file)
@@ -54,9 +54,9 @@ support.reliableTrDimensions = function() {
                }
 
                trStyle = window.getComputedStyle( tr );
-               reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +
-                               parseInt( trStyle.borderTopWidth, 10 ) +
-                               parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;
+               reliableTrDimensionsVal = ( Math.round( parseFloat( trStyle.height ) ) +
+                       Math.round( parseFloat( trStyle.borderTopWidth ) ) +
+                       Math.round( parseFloat( trStyle.borderBottomWidth ) ) ) === tr.offsetHeight;
 
                documentElement.removeChild( table );
        }
diff --git a/test/data/support/zoom.html b/test/data/support/zoom.html
new file mode 100644 (file)
index 0000000..318b834
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<head>
+       <meta charset="utf-8" />
+       <style>
+               html {
+                       zoom: 2.1;
+               }
+       </style>
+</head>
+<body>
+       <div>
+               <script src="../../jquery.js"></script>
+               <script src="../iframeTest.js"></script>
+               <script src="getComputedSupport.js"></script>
+       </div>
+       <script>
+               startIframeTest(
+                       getComputedStyle( document.documentElement ),
+                       getComputedSupport( jQuery.support )
+               );
+       </script>
+</body>
+</html>
index ea3055f775bb650f16e885cec7524ba99c59baf4..a8b7d8e892bd541c9e57914e1d9d077c39319c3b 100644 (file)
@@ -1381,8 +1381,12 @@ testIframe(
        "css/cssWidthBrowserZoom.html",
        function( assert, jQuery, window, document, widthBeforeSet, widthAfterSet ) {
                assert.expect( 2 );
-               assert.strictEqual( widthBeforeSet, "100px", "elem.css('width') works correctly with browser zoom" );
-               assert.strictEqual( widthAfterSet, "100px", "elem.css('width', val) works correctly with browser zoom" );
+
+               // Support: Firefox 126+
+               // Newer Firefox implements CSS zoom in a way it affects
+               // those values slightly.
+               assert.ok( /^100(?:|\.0\d*)px$/.test( widthBeforeSet ), "elem.css('width') works correctly with browser zoom" );
+               assert.ok( /^100(?:|\.0\d*)px$/.test( widthAfterSet ), "elem.css('width', val) works correctly with browser zoom" );
        }
 );
 
index c71d90ca40555e9c827593ae4509a3a3d1d1e7d1..bf3f4d26d4fda3f110de2867a6a8e0cd0fa28830 100644 (file)
@@ -66,6 +66,16 @@ testIframe(
        }
 );
 
+testIframe(
+       "Verify correctness of support tests with CSS zoom on the root element",
+       "support/zoom.html",
+       function( assert, jQuery, window, document, htmlStyle, support ) {
+               assert.expect( 1 );
+               assert.deepEqual( jQuery.extend( {}, support ), computedSupport,
+                       "Same support properties" );
+       }
+);
+
 ( function() {
        var expected, browserKey,
                userAgent = window.navigator.userAgent,