Skip to content


Subversion checkout URL

You can clone with
Download ZIP

Using mocha programmatically

Mike MacCana edited this page · 22 revisions

There are a lot of reasons why you might want to automate running the tests using mocha. Using the command-line can run into some problems if you want to load specific files, for example.

Here is an example of using mocha programmatically:

var Mocha = require('mocha'),
    fs = require('fs'),
    path = require('path');

// Instantiate a Mocha instance.
var mocha = new Mocha();

var testDir = 'some/dir/test'

// Add each .js file to the mocha instance
    // Only keep the .js files
    return file.substr(-3) === '.js';

        path.join(testDir, file)

// Run the tests.{
  process.on('exit', function () {

Set options

There are two ways to set the options to run the tests.

Firstly, you can set these options in the constructor object:

var mocha = new Mocha({
    ui: 'tdd',
    reporter: 'list'

Here is the list of these options:

  • grep
  • ui
  • reporter
  • timeout
  • bail

Secondly, on the mocha object, there are some chainable methods allowing you to change some more options.

Here is an example:

// Change the reporter to "list" before running the tests

// Change the UI to "tdd" before running the tests

// Or do both changes before running the tests

Here is the list of all these chainable methods:

  • reporter(): set the reporter.
  • ui(): set the ui.
  • grep(): add regex to grep. Unlike the command line parameter, grep() requires a RegExp() object for regular expressions. Everything else is escaped.
  • invert(): invert the grep.
  • ignoreLeaks(): ignore global leaks.
  • growl(): enable growl support.
  • globals(): ignore globals.
Something went wrong with that request. Please try again.