Merge "qunit: Update tests to not assume animations use setTimeout"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 22 Nov 2016 16:08:55 +0000 (16:08 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 22 Nov 2016 16:08:55 +0000 (16:08 +0000)
tests/qunit/data/testrunner.js
tests/qunit/suites/resources/jquery/jquery.color.test.js
tests/qunit/suites/resources/jquery/jquery.makeCollapsible.test.js

index b79c192..0b28684 100644 (file)
@@ -25,6 +25,9 @@
        // killing the test and assuming timeout failure.
        QUnit.config.testTimeout = 60 * 1000;
 
+       // Reduce default animation duration from 400ms to 0ms for unit tests
+       $.fx.speeds._default = 0;
+
        // Add a checkbox to QUnit header to toggle MediaWiki ResourceLoader debug mode.
        QUnit.config.urlConfig.push( {
                id: 'debug',
index 9afd793..ca6a512 100644 (file)
@@ -1,18 +1,15 @@
 ( function ( $ ) {
-       QUnit.module( 'jquery.color', QUnit.newMwEnvironment( {
-               setup: function () {
-                       this.clock = this.sandbox.useFakeTimers();
-               }
-       } ) );
+       QUnit.module( 'jquery.color', QUnit.newMwEnvironment() );
 
-       QUnit.test( 'animate', 1, function ( assert ) {
-               var $canvas = $( '<div>' ).css( 'background-color', '#fff' );
+       QUnit.test( 'animate', function ( assert ) {
+               var done = assert.async(),
+                       $canvas = $( '<div>' ).css( 'background-color', '#fff' ).appendTo( '#qunit-fixture' );
 
-               $canvas.animate( { backgroundColor: '#000' }, 10 ).promise().then( function () {
-                       var endColors = $.colorUtil.getRGB( $canvas.css( 'background-color' ) );
-                       assert.deepEqual( endColors, [ 0, 0, 0 ], 'end state' );
-               } );
-
-               this.clock.tick( 20 );
+               $canvas.animate( { 'background-color': '#000' }, 3 ).promise()
+                       .done( function () {
+                               var endColors = $.colorUtil.getRGB( $canvas.css( 'background-color' ) );
+                               assert.deepEqual( endColors, [ 0, 0, 0 ], 'end state' );
+                       } )
+                       .always( done );
        } );
 }( jQuery ) );
index c51e409..9c7660f 100644 (file)
@@ -1,11 +1,7 @@
 ( function ( mw, $ ) {
        var loremIpsum = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.';
 
-       QUnit.module( 'jquery.makeCollapsible', QUnit.newMwEnvironment( {
-               setup: function () {
-                       this.clock = this.sandbox.useFakeTimers();
-               }
-       } ) );
+       QUnit.module( 'jquery.makeCollapsible', QUnit.newMwEnvironment() );
 
        function prepareCollapsible( html, options ) {
                return $( $.parseHTML( html ) )
 
                        // ...expanding happens here
                        $toggle.trigger( 'click' );
-                       test.clock.tick( 500 );
                } );
 
                // ...collapsing happens here
                $toggle.trigger( 'click' );
-               test.clock.tick( 500 );
        } );
 
        QUnit.test( 'basic operation (<div>)', 5, function ( assert ) {
                        } );
 
                        $toggle.trigger( 'click' );
-                       test.clock.tick( 500 );
                } );
 
                $toggle.trigger( 'click' );
-               test.clock.tick( 500 );
        } );
 
        QUnit.test( 'basic operation (<table>)', 7, function ( assert ) {
                        } );
 
                        $toggle.trigger( 'click' );
-                       test.clock.tick( 500 );
                } );
 
                $toggle.trigger( 'click' );
-               test.clock.tick( 500 );
        } );
 
        function tableWithCaptionTest( $collapsible, test, assert ) {
                        } );
 
                        $toggle.trigger( 'click' );
-                       test.clock.tick( 500 );
                } );
 
                $toggle.trigger( 'click' );
-               test.clock.tick( 500 );
        }
 
        QUnit.test( 'basic operation (<table> with caption)', 10, function ( assert ) {
                        } );
 
                        $toggle.trigger( 'click' );
-                       test.clock.tick( 500 );
                } );
 
                $toggle.trigger( 'click' );
-               test.clock.tick( 500 );
        }
 
        QUnit.test( 'basic operation (<ul>)', 7, function ( assert ) {
                } );
 
                $collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
-               this.clock.tick( 500 );
        } );
 
        QUnit.test( 'initial collapse (options.collapsed)', 2, function ( assert ) {
                } );
 
                $collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
-               this.clock.tick( 500 );
        } );
 
        QUnit.test( 'clicks on links inside toggler pass through (options.linksPassthru)', 2, function ( assert ) {
                } );
 
                $collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
-               this.clock.tick( 500 );
        } );
 
        QUnit.test( 'collapse/expand text (options.collapseText, options.expandText)', 2, function ( assert ) {
                } );
 
                $collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
-               this.clock.tick( 500 );
        } );
 
        QUnit.test( 'cloned collapsibles can be made collapsible again', 2, function ( assert ) {
                } );
 
                $clone.find( '.mw-collapsible-toggle a' ).trigger( 'click' );
-               test.clock.tick( 500 );
        } );
 }( mediaWiki, jQuery ) );