From 071f6dba6bd1d8db3f36ce4694aab5ff437b9e36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?= Date: Mon, 3 Jun 2024 18:15:23 +0200 Subject: [PATCH] CSS:Tests: Fix tests & support tests under CSS Zoom 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 | 6 +++--- test/data/support/zoom.html | 24 ++++++++++++++++++++++++ test/unit/css.js | 8 ++++++-- test/unit/support.js | 10 ++++++++++ 4 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 test/data/support/zoom.html diff --git a/src/css/support.js b/src/css/support.js index c7229e93a..93459c6b6 100644 --- a/src/css/support.js +++ b/src/css/support.js @@ -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 index 000000000..318b834ec --- /dev/null +++ b/test/data/support/zoom.html @@ -0,0 +1,24 @@ + + + + + + + +
+ + + +
+ + + diff --git a/test/unit/css.js b/test/unit/css.js index ea3055f77..a8b7d8e89 100644 --- a/test/unit/css.js +++ b/test/unit/css.js @@ -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" ); } ); diff --git a/test/unit/support.js b/test/unit/support.js index c71d90ca4..bf3f4d26d 100644 --- a/test/unit/support.js +++ b/test/unit/support.js @@ -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,