mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-12-23 01:24:22 +00:00
e7a10c70ae
This helps fix issues that make tooltip tests sometimes fail when run against jQuery 3.2 or newer due to timing differences. Details: * Add the `moduleAfterEach` function ensuring no timers are running. * Attach this function via `common.testWidget`. * Attach this function to most test suites. * Add a tooltip test helper cleaning up leftover timers. * Rename legacy `setup`/`teardown` hooks to `beforeEach`/`afterEach`. Closes gh-1920
57 lines
1.4 KiB
JavaScript
57 lines
1.4 KiB
JavaScript
define( [
|
|
"jquery"
|
|
], function( $ ) {
|
|
|
|
var exports = {},
|
|
|
|
// Store the old count so that we only assert on tests that have actually leaked,
|
|
// instead of asserting every time a test has leaked sometime in the past
|
|
oldActive = 0,
|
|
splice = [].splice;
|
|
|
|
exports.forceScrollableWindow = function( appendTo ) {
|
|
|
|
// The main testable area is 10000x10000 so to enforce scrolling,
|
|
// this DIV must be greater than 10000 to work
|
|
return $( "<div>" )
|
|
.css( {
|
|
height: "11000px",
|
|
width: "11000px"
|
|
} )
|
|
.appendTo( appendTo || "#qunit-fixture" );
|
|
};
|
|
|
|
exports.onFocus = function( element, onFocus ) {
|
|
var fn = function( event ) {
|
|
if ( !event.originalEvent ) {
|
|
return;
|
|
}
|
|
element.off( "focus", fn );
|
|
onFocus();
|
|
};
|
|
|
|
element.on( "focus", fn )[ 0 ].focus();
|
|
};
|
|
|
|
/**
|
|
* Ensures that tests have cleaned up properly after themselves. Should be passed as the
|
|
* afterEach function on all modules' lifecycle object.
|
|
*/
|
|
exports.moduleAfterEach = function( assert ) {
|
|
|
|
// Check for (and clean up, if possible) incomplete animations/requests/etc.
|
|
if ( jQuery.timers && jQuery.timers.length !== 0 ) {
|
|
assert.equal( jQuery.timers.length, 0, "No timers are still running" );
|
|
splice.call( jQuery.timers, 0, jQuery.timers.length );
|
|
jQuery.fx.stop();
|
|
}
|
|
if ( jQuery.active !== undefined && jQuery.active !== oldActive ) {
|
|
assert.equal( jQuery.active, oldActive, "No AJAX requests are still active" );
|
|
oldActive = jQuery.active;
|
|
}
|
|
};
|
|
|
|
return exports;
|
|
|
|
} );
|