]> source.dussan.org Git - jquery.git/commitdiff
Tests: Improve offset test setup and labels
authorRichard Gibson <richard.gibson@gmail.com>
Tue, 25 Apr 2017 01:44:51 +0000 (21:44 -0400)
committerGitHub <noreply@github.com>
Tue, 25 Apr 2017 01:44:51 +0000 (21:44 -0400)
Hopefully this fixes iOS testing: http://swarm.jquery.org/job/5226

Ref 1d2df772b4d6e5dbf91df6e75f4a1809f7879ab0
Closes gh-3641

test/data/iframeTest.js
test/data/testinit.js
test/unit/offset.js

index 877e884f0edf658bb6c6b6c5c658654e9667d2cc..4db56833c5faee5079b8336cb4dc3f915afda97a 100644 (file)
@@ -1,4 +1,3 @@
-
 window.startIframeTest = function() {
        var args = Array.prototype.slice.call( arguments );
 
index c37687f6873eaee2d52fc729bffd7f8db2fd2c70..dd06f86bea6609080ee61a526ff46472d82c2e46 100644 (file)
@@ -236,6 +236,7 @@ this.testIframe = function( title, fileName, func ) {
                var iframe;
                var done = assert.async();
 
+               // Test iframes are expected to invoke this via startIframeTest (cf. iframeTest.js)
                window.iframeCallback = function() {
                        var args = Array.prototype.slice.call( arguments );
 
index 622a7ba9027cceda5aad99d996fc125639b6c74a..2acfd71afbb2490812e19815e87d260c1533078c 100644 (file)
@@ -4,28 +4,45 @@ if ( !jQuery.fn.offset ) {
        return;
 }
 
-var supportsScroll, supportsFixedPosition,
-       forceScroll = jQuery( "<div/>" ).css( { width: 2000, height: 2000 } ),
-       checkSupport = function() {
+var supportsFixedPosition, supportsScroll, alwaysScrollable,
+       forceScroll = supportjQuery( "<div/>" ).css( { width: 2000, height: 2000 } ),
+       checkSupport = function( assert ) {
 
                // Only run once
                checkSupport = false;
 
-               var checkFixed = jQuery( "<div/>" ).css( { position: "fixed", top: "20px" } ).appendTo( "#qunit-fixture" );
+               var checkFixed = supportjQuery( "<div/>" )
+                       .css( { position: "fixed", top: "20px" } )
+                       .appendTo( "#qunit-fixture" );
+               supportsFixedPosition = checkFixed[ 0 ].offsetTop === 20;
+               checkFixed.remove();
 
-               // Must append to body because #qunit-fixture is hidden and elements inside it don't have a scrollTop
+               // Append forceScroll to the body instead of #qunit-fixture because the latter is hidden
                forceScroll.appendTo( "body" );
                window.scrollTo( 200, 200 );
                supportsScroll = document.documentElement.scrollTop || document.body.scrollTop;
                forceScroll.detach();
 
-               supportsFixedPosition = checkFixed[ 0 ].offsetTop === 20;
-               checkFixed.remove();
+               // Support: iOS <=7
+               // Hijack the iframe test infrastructure to detect viewport scrollability
+               // for pages with position:fixed document element
+               var done = assert.async(),
+                       $iframe = supportjQuery( "<iframe/>" )
+                               .css( { position: "absolute", width: "50px", left: "-60px" } )
+                               .attr( "src", url( "./data/offset/boxes.html" ) );
+               window.iframeCallback = function( $, win, doc ) {
+                       doc.documentElement.style.position = "fixed";
+                       alwaysScrollable = win.pageXOffset !== 0;
+                       window.iframeCallback = undefined;
+                       $iframe.remove();
+                       done();
+               };
+               $iframe.appendTo( document.body );
        };
 
-QUnit.module( "offset", { setup: function() {
+QUnit.module( "offset", { setup: function( assert ) {
        if ( typeof checkSupport === "function" ) {
-               checkSupport();
+               checkSupport( assert );
        }
 
        // Force a scroll value on the main window to ensure incorrect results
@@ -532,29 +549,7 @@ QUnit.test( "chaining", function( assert ) {
                                512, 256,  1024, 512,  2048, 1024,  position,
                                position !== "fixed" && "documentElement" );
                },
-               viewportScroll = { top: 2, left: 1 },
-
-               alwaysScrollable = false;
-
-       // Support: iOS <=7
-       // Detect viewport scrollability for pages with position:fixed document element
-       ( function() {
-               var $iframe = jQuery( "<iframe/>" )
-                       .css( { position: "absolute", width: "50px", left: "-60px" } )
-                       .attr( "src", url( "./data/offset/boxes.html" ) );
-
-               // Hijack the iframe test infrastructure
-               window.iframeCallback = function( $, win, doc ) {
-                       doc.documentElement.style.position = "fixed";
-                       alwaysScrollable = win.pageXOffset !== 0;
-                       window.iframeCallback = undefined;
-                       $iframe.remove();
-                       return;
-               };
-
-               $iframe.appendTo( document.body );
-               return;
-       } )();
+               viewportScroll = { top: 2, left: 1 };
 
        function getExpectations( htmlPos, bodyPos ) {
 
@@ -676,7 +671,8 @@ QUnit.test( "chaining", function( assert ) {
                                        assert.deepEqual(
                                                supportjQuery.extend( {}, $( "#" + id ).offset() ),
                                                descriptor.offset,
-                                               "jQuery('#" + id + "').offset()" );
+                                               "jQuery('#" + id + "').offset(): top " + descriptor.offset.top +
+                                                       ", left " + descriptor.offset.left );
                                } );
 
                                // Verify expected relative position
@@ -684,7 +680,8 @@ QUnit.test( "chaining", function( assert ) {
                                        assert.deepEqual(
                                                supportjQuery.extend( {}, $( "#" + id ).position() ),
                                                descriptor.pos,
-                                               "jQuery('#" + id + "').position()" );
+                                               "jQuery('#" + id + "').position(): top " + descriptor.pos.top +
+                                                       ", left " + descriptor.pos.left );
                                } );
 
                                // Verify that values round-trip