Cleans up mocha stack traces.

Usage no npm install needed!

<script type="module">
  import mochaClean from '';



Cleans up mocha test stack traces.

Loading screenshot...



Mocha stack traces are riddled with frames that you don't want to see, like code from modules and Mocha internals.

  1) Test:
     ReferenceError: someKey is not defined
      at Context.<anonymous> (/Users/rsc/Projects/mocha-clean/test/test.js:24:5)
      at callFn (/Users/rsc/Projects/mocha-clean/node_modules/mocha/lib/runnable.js:249:21)
      at (/Users/rsc/Projects/mocha-clean/node_modules/mocha/lib/runnable.js:242:7)
      at Runner.runTest (/Users/rsc/Projects/mocha-clean/node_modules/mocha/lib/runner.js:373:10)

This is better:

  1) Test:
     ReferenceError: someKey is not defined
      at myFunction (test/test:7:1)
      at test/test.js:24:5

It strips away mocha internals, node_modules, absolute paths (based on cwd), and other unneccessary cruft.

Usage (Node.js)

npm version Available via npm.

$ npm i --save-dev mocha-clean

Add this to your test/mocha.opts:

--require mocha-clean

Usage (browser)

Experimental browser support is available. Get the latest version here:

<script src="//"></script>

In the browser, use mocha.traceIgnores to define files to be excluded. Your setup will likely look like this (with chai.js in this example):

<script src="mocha.js"></script>
<script src="chai.js"></script>
<script src="mocha-clean.js"></script>
<script>mocha.traceIgnores = ['mocha.js', 'chai.js']</script>
<script src="tests.js"></script>

Brief mode

To display brief format error messages similar to C++, Ruby and so on, add this to test/mocha.opts:

--require mocha-clean/brief

This displays the filenames first (file:n:n: function), which is reformatted from the JavaScript-style at function (file:n:n).

1) error:
   ReferenceError: xyz is not defined
    test/fail.js:12:4: myfunction
    test/fail.js:9:9: Context.<anonymous>

Showing node_modules

By default, mocha-clean removes anything under node_modules. To disable this behavior, add this to test/mocha.opts:

--require mocha-clean/show_node_modules

Using with Gulp, Grunt, Karma, et al

See: Using with mocha loaders ▸

Showing absolute paths

By default, mocha-clean removes the current working directory from the beginning of paths. To disable this behavior, add this to test/mocha.opts:

--require mocha-clean/absolute_paths

Related discussions

There was talk in 2012 to bring this feature to mocha itself (see mocha#545), which eventually was merged around v2.2.5. It's been updated eversince to only affect mocha's internals. In contrast, mocha-clean cleans up all your node_modules's stack frames.

mocha-clean has been tested with mocha 1.21.x and will likely work for the entire mocha 1.x series.


mocha-clean © 2014+, Rico Sta. Cruz. Released under the MIT License.
Authored and maintained by Rico Sta. Cruz with help from contributors (list).  ·  GitHub @rstacruz  ·  Twitter @rstacruz