This let you run your test 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 configuration.
This was originaly a fork of gulp-spawn-mocha but has deviated a lot since then.
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: ');
_(errors).each(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)
});
concurrency
: # of mocha instance running in parallel (default:1
)env
: mocha running env, (default:process.env
)flags
: mocha flags (default: none)liveOutput
: print output direct to consoleerrorSummary
: show error summary (default:true
)
- concatenate mocha status at the end
MIT