node package manager
Don’t reinvent the wheel. Reuse code within your team. Create a free org »



Build Status

A Grunt task for running node-qunit

Grunt is a task-based command line build tool for JavaScript projects, based on nodejs. Node-Qunit is a Qunit testing framework for nodejs QUnit is a powerful, easy-to-use JavaScript unit test suite used by the jQuery, jQuery UI and jQuery Mobile projects and is capable of testing any generic JavaScript code, including itself!

About the tool

The Grunt Node-Qunit task is a wrapper for the node-qunit task to be used in grunt. The parameters used are the exact parameters used with the node-quit package.

How is this different from grunt-nodeunit

Grunt NodeUnit task uses the nodeunit testing framework. The syntax is slightly different and uses the node-qunit. The syntax for this task is exactly like the qunit syntax.


This task is available as a node package and can be installed as npm install grunt-node-qunit. It can also be included as a devDependency in package.json in your node project. To use the task in grunt.js, load the npmTask.


__Note that this is NOT a multi task. Node-Qunit is used via the API, as described here.

The parameters are

  • setup : An object passed to qunit.setup
  • deps : define dependencies, which are required then before code, passed in
  • code : define the code that needs to be tested
  • tests: define the test files
  • done : A callback that is called everytime a qunit test for a page is complete. Runs per page, per browser configuration. A true or false return value passes or fails the test, undefined return value does not alter the result of the test. For async results, call this.async() in the function. The return of this.async() is a function that should be called once the async action is completed.


Inside the grunt.initConfig, add a section

    'node-qunit': {
        deps: './src/pouch.js',
        code: './src/adapters/pouch.leveldb.js',
            return "./tests/" + n;
        done: function(err, res){
            !err && publishResults("node", res, this.async());
    // ....
}); // end of grunt.initConfig

// Elsewhere in the grunt file grunt.loadNpmTasks('grunt-node-qunit');