Tests: Make iframe tests wait after checking isReady

Ref gh-3040
This commit is contained in:
Dave Methvin
2016-04-08 12:00:17 -04:00
parent 755e7ccf01
commit 08d73d7f9c
15 changed files with 50 additions and 74 deletions

View File

@@ -12,6 +12,11 @@
<body>
<div>
<script src="../../jquery.js"></script>
<script>
jQuery( function() {
window.parent.iframeCallback( jQuery, window, document );
} );
</script>
</div>
</body>
</html>

View File

@@ -24,6 +24,7 @@
$(this).css({ top: pos.top, left: pos.left });
return false;
});
window.parent.iframeCallback( jQuery, window, document );
});
</script>
</head>

View File

@@ -16,6 +16,7 @@
$("marker").css( $(this).offset() );
return false;
});
window.parent.iframeCallback( jQuery, window, document );
});
</script>
</head>

View File

@@ -20,6 +20,7 @@
$("#marker").css( $(this).offset() );
return false;
});
window.parent.iframeCallback( jQuery, window, document );
});
</script>
</head>

View File

@@ -20,6 +20,7 @@
$(this).css({ position: 'absolute', top: pos.top, left: pos.left });
return false;
});
window.parent.iframeCallback( jQuery, window, document );
});
</script>
</head>

View File

@@ -24,6 +24,7 @@
$("#marker").css( $(this).offset() );
return false;
});
window.parent.iframeCallback( jQuery, window, document );
});
</script>
</head>

View File

@@ -19,6 +19,7 @@
$(this).css({ position: 'absolute', top: pos.top, left: pos.left });
return false;
});
window.parent.iframeCallback( jQuery, window, document );
});
</script>
</head>

View File

@@ -17,6 +17,7 @@
$("#marker").css( $(this).offset() );
return false;
});
window.parent.iframeCallback( jQuery, window, document );
});
</script>
</head>

View File

@@ -15,6 +15,10 @@
document.createElement('audio');
document.createElement('article');
document.createElement('details');
jQuery( function() {
window.parent.iframeCallback( jQuery, window, document );
} );
</script>
</head>
<body>

View File

@@ -17,5 +17,10 @@
<div class="test">
<a href="#" id="collision">Worlds collide</a>
</div>
<script>
jQuery( function() {
window.parent.iframeCallback( jQuery, window, document );
} );
</script>
</body>
</html>

View File

@@ -232,37 +232,6 @@ this.ajaxTest = function( title, expect, options ) {
} );
};
this.testIframe = function( fileName, name, fn ) {
QUnit.test( name, function( assert ) {
var done = assert.async();
// load fixture in iframe
var iframe = loadFixture(),
win = iframe.contentWindow,
interval = setInterval( function() {
if ( win && win.jQuery && win.jQuery.isReady ) {
clearInterval( interval );
// call actual tests passing the correct jQuery instance to use
fn.call( this, win.jQuery, win, win.document, assert );
done();
document.body.removeChild( iframe );
iframe = null;
}
}, 15 );
} );
function loadFixture() {
var src = url( "./data/" + fileName + ".html" ),
iframe = jQuery( "<iframe />" ).appendTo( "body" )[ 0 ];
iframe.style.cssText = "width: 500px; height: 500px; position: absolute; " +
"top: -600px; left: -600px; visibility: hidden;";
iframe.contentWindow.location = src;
return iframe;
}
};
this.testIframeWithCallback = function( title, fileName, func ) {
QUnit.test( title, 1, function( assert ) {
var iframe;

View File

@@ -469,9 +469,9 @@ QUnit.test( "setters with and without box-sizing:border-box", function( assert )
} );
} );
testIframe(
"dimensions/documentLarge",
testIframeWithCallback(
"window vs. large document",
"dimensions/documentLarge.html",
function( jQuery, window, document, assert ) {
assert.expect( 2 );

View File

@@ -35,13 +35,6 @@ QUnit.module( "offset", { setup: function() {
forceScroll.detach();
}, teardown: moduleTeardown } );
/*
Closure-compiler will roll static methods off of the jQuery object and so they will
not be passed with the jQuery object across the windows. To differentiate this, the
testIframe callbacks use the "$" symbol to refer to the jQuery object passed from
the iframe window and the "jQuery" symbol is used to access any static methods.
*/
QUnit.test( "empty set", function( assert ) {
assert.expect( 2 );
assert.strictEqual( jQuery().offset(), undefined, "offset() returns undefined for empty set (#11962)" );
@@ -75,7 +68,7 @@ QUnit.test( "hidden (display: none) element", function( assert ) {
assert.equal( result.left, 0, "Retrieving offset on hidden elements returns zeros (gh-2310)" );
} );
testIframe( "offset/absolute", "absolute", function( $, iframe, document, assert ) {
testIframeWithCallback( "absolute", "offset/absolute.html", function( $, iframe, document, assert ) {
assert.expect( 4 );
var doc = iframe.document,
@@ -100,7 +93,7 @@ testIframe( "offset/absolute", "absolute", function( $, iframe, document, assert
} );
} );
testIframe( "offset/absolute", "absolute", function( $, window, document, assert ) {
testIframeWithCallback( "absolute", "offset/absolute.html", function( $, window, document, assert ) {
assert.expect( 178 );
var tests, offset;
@@ -185,7 +178,7 @@ testIframe( "offset/absolute", "absolute", function( $, window, document, assert
} );
} );
testIframe( "offset/relative", "relative", function( $, window, document, assert ) {
testIframeWithCallback( "relative", "offset/relative.html", function( $, window, document, assert ) {
assert.expect( 64 );
// get offset
@@ -243,7 +236,7 @@ testIframe( "offset/relative", "relative", function( $, window, document, assert
} );
} );
testIframe( "offset/static", "static", function( $, window, document, assert ) {
testIframeWithCallback( "static", "offset/static.html", function( $, window, document, assert ) {
assert.expect( 80 );
// get offset
@@ -305,7 +298,7 @@ testIframe( "offset/static", "static", function( $, window, document, assert ) {
} );
} );
testIframe( "offset/fixed", "fixed", function( $, window, document, assert ) {
testIframeWithCallback( "fixed", "offset/fixed.html", function( $, window, document, assert ) {
assert.expect( 34 );
var tests, $noTopLeft;
@@ -395,7 +388,7 @@ testIframe( "offset/fixed", "fixed", function( $, window, document, assert ) {
}
} );
testIframe( "offset/table", "table", function( $, window, document, assert ) {
testIframeWithCallback( "table", "offset/table.html", function( $, window, document, assert ) {
assert.expect( 4 );
assert.equal( $( "#table-1" ).offset().top, 6, "jQuery('#table-1').offset().top" );
@@ -405,7 +398,7 @@ testIframe( "offset/table", "table", function( $, window, document, assert ) {
assert.equal( $( "#th-1" ).offset().left, 10, "jQuery('#th-1').offset().left" );
} );
testIframe( "offset/scroll", "scroll", function( $, win, doc, assert ) {
testIframeWithCallback( "scroll", "offset/scroll.html", function( $, win, doc, assert ) {
assert.expect( 26 );
assert.equal( $( "#scroll-1" ).offset().top, 7, "jQuery('#scroll-1').offset().top" );
@@ -464,7 +457,7 @@ testIframe( "offset/scroll", "scroll", function( $, win, doc, assert ) {
assert.strictEqual( $().scrollLeft(), undefined, "jQuery().scrollLeft() testing getter on empty jquery object" );
} );
testIframe( "offset/body", "body", function( $, window, document, assert ) {
testIframeWithCallback( "body", "offset/body.html", function( $, window, document, assert ) {
assert.expect( 4 );
assert.equal( $( "body" ).offset().top, 1, "jQuery('#body').offset().top" );

View File

@@ -289,9 +289,9 @@ QUnit[ jQuery.find.compile ? "test" : "skip" ]( "disconnected nodes", function(
assert.equal( $opt.is( ":selected" ), true, "selected option" );
} );
testIframe(
"selector/html5_selector",
testIframeWithCallback(
"attributes - jQuery.attr",
"selector/html5_selector.html",
function( jQuery, window, document, assert ) {
assert.expect( 38 );
@@ -489,9 +489,9 @@ QUnit.test( "jQuery.uniqueSort", function( assert ) {
assert.strictEqual( jQuery.unique, jQuery.uniqueSort, "jQuery.unique() is an alias for jQuery.uniqueSort()" );
} );
testIframe(
"selector/sizzle_cache",
testIframeWithCallback(
"Sizzle cache collides with multiple Sizzles on a page",
"selector/sizzle_cache.html",
function( jQuery, window, document, assert ) {
var $cached = window[ "$cached" ];