From e7a10c70ae75c741992afdda60a433be205fd85e Mon Sep 17 00:00:00 2001 From: Michał Gołębiowski-Owczarek Date: Sat, 16 May 2020 09:16:24 +0200 Subject: Tests: Ensure no timers are running at the end of each test (#1920) 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 --- tests/unit/tooltip/core.js | 7 +++++-- tests/unit/tooltip/deprecated.js | 7 +++++-- tests/unit/tooltip/events.js | 7 +++++-- tests/unit/tooltip/helper.js | 31 +++++++++++++++++++++++++++++++ tests/unit/tooltip/methods.js | 7 +++++-- tests/unit/tooltip/options.js | 7 +++++-- 6 files changed, 56 insertions(+), 10 deletions(-) create mode 100644 tests/unit/tooltip/helper.js (limited to 'tests/unit/tooltip') diff --git a/tests/unit/tooltip/core.js b/tests/unit/tooltip/core.js index 2de37097a..c50164efa 100644 --- a/tests/unit/tooltip/core.js +++ b/tests/unit/tooltip/core.js @@ -1,10 +1,13 @@ define( [ "qunit", "jquery", + "./helper", "ui/widgets/tooltip" -], function( QUnit, $ ) { +], function( QUnit, $, testHelper ) { -QUnit.module( "tooltip: core" ); +var beforeAfterEach = testHelper.beforeAfterEach; + +QUnit.module( "tooltip: core", beforeAfterEach() ); QUnit.test( "markup structure", function( assert ) { assert.expect( 7 ); diff --git a/tests/unit/tooltip/deprecated.js b/tests/unit/tooltip/deprecated.js index bce1a6c6a..b44b8dcd6 100644 --- a/tests/unit/tooltip/deprecated.js +++ b/tests/unit/tooltip/deprecated.js @@ -1,10 +1,13 @@ define( [ "qunit", "jquery", + "./helper", "ui/widgets/tooltip" -], function( QUnit, $ ) { +], function( QUnit, $, testHelper ) { -QUnit.module( "tooltip: (deprecated) options" ); +var beforeAfterEach = testHelper.beforeAfterEach; + +QUnit.module( "tooltip: (deprecated) options", beforeAfterEach() ); QUnit.test( "tooltipClass", function( assert ) { assert.expect( 1 ); diff --git a/tests/unit/tooltip/events.js b/tests/unit/tooltip/events.js index 3fbb683a5..1e83c5255 100644 --- a/tests/unit/tooltip/events.js +++ b/tests/unit/tooltip/events.js @@ -1,10 +1,13 @@ define( [ "qunit", "jquery", + "./helper", "ui/widgets/tooltip" -], function( QUnit, $ ) { +], function( QUnit, $, testHelper ) { -QUnit.module( "tooltip: events" ); +var beforeAfterEach = testHelper.beforeAfterEach; + +QUnit.module( "tooltip: events", beforeAfterEach() ); QUnit.test( "programmatic triggers", function( assert ) { assert.expect( 4 ); diff --git a/tests/unit/tooltip/helper.js b/tests/unit/tooltip/helper.js new file mode 100644 index 000000000..01d4c03ac --- /dev/null +++ b/tests/unit/tooltip/helper.js @@ -0,0 +1,31 @@ +define( [ + "qunit", + "jquery", + "lib/helper", + "ui/widgets/tooltip" +], function( QUnit, $, helper ) { + + return $.extend( helper, { + beforeAfterEach: function() { + return { + afterEach: function() { + var index, timer, + timers = jQuery.timers; + + jQuery.fx.stop(); + var x = false; + + for ( index = timers.length; index--; ) { + x = true; + timer = timers[ index ]; + timer.anim.stop(); + timers.splice( index, 1 ); + } + + return helper.moduleAfterEach.apply( this, arguments ); + } + }; + } + } ); + +} ); diff --git a/tests/unit/tooltip/methods.js b/tests/unit/tooltip/methods.js index 6e0af2eb4..d71c5e0a6 100644 --- a/tests/unit/tooltip/methods.js +++ b/tests/unit/tooltip/methods.js @@ -1,10 +1,13 @@ define( [ "qunit", "jquery", + "./helper", "ui/widgets/tooltip" -], function( QUnit, $ ) { +], function( QUnit, $, testHelper ) { -QUnit.module( "tooltip: methods" ); +var beforeAfterEach = testHelper.beforeAfterEach; + +QUnit.module( "tooltip: methods", beforeAfterEach() ); QUnit.test( "destroy", function( assert ) { assert.expect( 3 ); diff --git a/tests/unit/tooltip/options.js b/tests/unit/tooltip/options.js index 4354d89b3..b9c056388 100644 --- a/tests/unit/tooltip/options.js +++ b/tests/unit/tooltip/options.js @@ -1,10 +1,13 @@ define( [ "qunit", "jquery", + "./helper", "ui/widgets/tooltip" -], function( QUnit, $ ) { +], function( QUnit, $, testHelper ) { -QUnit.module( "tooltip: options" ); +var beforeAfterEach = testHelper.beforeAfterEach; + +QUnit.module( "tooltip: options", beforeAfterEach() ); QUnit.test( "disabled: true", function( assert ) { assert.expect( 1 ); -- cgit v1.2.3