Skip to content
This repository has been archived by the owner on Mar 7, 2022. It is now read-only.

OwnZones/spawn-mocha-parallel

 
 

Repository files navigation

spawn-mocha-parallel

This lets you run your tests in parallel by spawning several child processes. It was designed to be used with gulp, but since it relies only on npm, it may be used within various configurations.

Credits

This is a fork of [sebv/spawn-mocha-parallel], which was originally a fork of [gulp-spawn-mocha] but has deviated a lot since then.

Usage

Using built in mochaStream:

var mochaStream = require('spawn-mocha-parallel').mochaStream;

var mocha = mochaStream({ concurrency: 10 });

gulp.task('test-mocha', function() {
  return gulp.src('**/*-specs.js', {read: false}) 
    .pipe(mocha)
    .on('error', console.error)
});

Using SpawnMocha

var SpawnMocha = require('spawn-mocha-parallel').SpawnMocha,
    _ = require('lodash');
    through = require('through');

// customize output as you need
function mochaStream(opts) {
  opts = opts || {};
  var spawnMocha = new SpawnMocha(opts);
  var stream = through(function write(file) {
    spawnMocha.add(file.path);
  }, function() {});
  var errors = [];
  spawnMocha.on('error', function(err) {
    console.error(err.toString());
    errors.push(err);
  }).on('end', function() {
    if(errors.length > 0) {
      console.error('ERROR SUMMARY: ');
      _.each(errors, function(err) {
        console.error(err);
        console.error(err.stack);
      });
      stream.emit('error', "Some tests failed.");
    }
    stream.emit('end');
  });
  return stream;
}

var mocha = mochaStream({concurrency: 3});

gulp.task('test-custom-mocha', function() {
  return gulp.src('**/*-specs.js', {read: false}) 
    .pipe(mocha)
    .on('error', console.error)
});

Options

  • concurrency: # of mocha instance running in parallel (default: 1)
  • env: mocha running env, (default: process.env, can be function)
  • flags: mocha flags (default: none)
  • liveOutput: print output direct to console
  • errorSummary: show error summary (default: true)

Todo

  • concatenate mocha status at the end

License

MIT

About

Spawn mocha child processes in parallel

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%