aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorRichard Gibson <richard.gibson@gmail.com>2017-04-24 21:44:51 -0400
committerGitHub <noreply@github.com>2017-04-24 21:44:51 -0400
commit9e121482a532d61aa36d7b314ee46dd1ac40f29e (patch)
tree48ec425c6e934d671fc0d64f4b4fc2deb11f8774 /test
parenta16339b8933f115da3661f3d3f64854c3fa60bdc (diff)
downloadjquery-9e121482a532d61aa36d7b314ee46dd1ac40f29e.tar.gz
jquery-9e121482a532d61aa36d7b314ee46dd1ac40f29e.zip
Tests: Improve offset test setup and labels
Hopefully this fixes iOS testing: http://swarm.jquery.org/job/5226 Ref 1d2df772b4d6e5dbf91df6e75f4a1809f7879ab0 Closes gh-3641
Diffstat (limited to 'test')
-rw-r--r--test/data/iframeTest.js1
-rw-r--r--test/data/testinit.js1
-rw-r--r--test/unit/offset.js65
3 files changed, 32 insertions, 35 deletions
diff --git a/test/data/iframeTest.js b/test/data/iframeTest.js
index 877e884f0..4db56833c 100644
--- a/test/data/iframeTest.js
+++ b/test/data/iframeTest.js
@@ -1,4 +1,3 @@
-
window.startIframeTest = function() {
var args = Array.prototype.slice.call( arguments );
diff --git a/test/data/testinit.js b/test/data/testinit.js
index c37687f68..dd06f86be 100644
--- a/test/data/testinit.js
+++ b/test/data/testinit.js
@@ -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 );
diff --git a/test/unit/offset.js b/test/unit/offset.js
index 622a7ba90..2acfd71af 100644
--- a/test/unit/offset.js
+++ b/test/unit/offset.js
@@ -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