Run nodeunit test cases with much faster and actively developed tape.

Usage no npm install needed!

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



A nodeunit compatible runner based on tape for lazy people like me that don't want to review 1000 files and change two function signatures in every one...

Simply take your nodeunit files and this will run your tests with tape, removing legacy dependencies on non supported nodeunit.

If this is not fully compatible with nodeunit, please open an issue with an example test.


From command line:

# -- with global install --
npm i -g nodeunit-tape-compat
nodeunit-tape <path-to-file> <path-to-file>
# -- or simply --
npx nodeunit-tape-compat <path-to-file> <path-to-file> [-t]

The -t flag runs only methods starting with "test".

In package JSON (remember to npm i -D nodeunit-tape-compat):

    "test": "nodeunit-tape ./test/**/*.js"

From node.js:

const { DataStream } = require('scramjet');
const gs = require('glob-stream');
const tapeRunner = require('nodeunit-tape-compat');

    .then(() => {
        console.error("✔ Tests succeeded.");
    .catch(() => {
        console.error("✘ Some tests failed.");


As a module

module.exports = scramjet module

To be used on a scramjet stream of files like this:

        // do something with the stream of tests


  • async from(Readable stream) : void consumes a stream of file objects
  • flattenTests(Object.<String,Object|AsyncFunction>) : Object.<String,AsyncFunction> DataStream mapper that flattens the nested test objects to a simple hash of test cases.
  • runTests(Object.<String,AsyncFunction>) DataStream mapper that runs the tests asynchronously and returns the results.

File object

A file object is meant to be generally compatible with fs.stat and VinylFS.


  • path - path to the file containing tests