gulp-electron-mocha
Run client-side Mocha tests in Electron
This is a simple wrapper for electron-mocha.
The implementations are mostly inspired by gulp-mocha-phantomjs.
Installation
npm install --save-dev gulp-electron-mocha
Note that you don't have to install either electron-mocha
or electron-prebuilt
globally (i.e. with npm i -g
).
All dependencies are resolved automatically.
Basic Usage
import gulp from 'gulp';
import electronMocha from 'gulp-electron-mocha';
gulp.task('test', () =>
gulp.src('./test', { read: false })
.pipe(electronMocha())
);
Please be aware that you should write gulp.src('./test')
, not gulp.src('./test/*.js')
,
because electron-mocha
requires a directory to test.
You can also find working tests in test/
to learn how to make Gulp tasks and client-side Mocha tests with gulp-electron-mocha
.
Passing additional options to electron-mocha
The electronMocha
property of the optional argument to electronMocha()
is passed to electron-mocha
.
Please see electron-mocha's docs
to learn what parameters are available.
gulp-electron-mocha
uses object-to-spawn-args
to convert from JavaScript object to command-line argument string.
import gulp from 'gulp';
import electronMocha from 'gulp-electron-mocha';
gulp.task('test', () =>
gulp.src('./test', { read: false })
.pipe(electronMocha({
electronMocha: {
renderer: true,
'no-timeout': true,
},
}))
);
Running ES6 tests
gulp-electron-mocha
can pass --compilers
option to Mocha.
So just specify babel-core/register
to --compilers
.
gulp.src('./test', { read: false })
.pipe(electronMocha({
electronMocha: {
renderer: true,
compilers: 'js:babel-core/register',
'no-timeout': true,
},
}))
API
electronMocha([options])
options
-
electronPath
Type | Default |
---|
string | undefined |
A path to Electron in which tests are executed.
If not specified, gulp-electron-mocha
uses Electron in node_modules/
by default.
-
silent
Don't throw an error even if one of the tests is failed.
-
suppressStdout
Don't redirect electron-mocha's stdout to the console.
-
suppressStderr
Don't redirect electron-mocha's stderr to the console.
-
electronMocha
Options to be passed to electron-mocha.
See electron-mocha's docs
for more details.
The value will be converted to command-line argument string with
object-to-spawn-args.
For example, if you want to pass --no-timeout --renderer -s 200 --compilers js:babel-core/register
,
specify:
electronMocha: {
'no-timeout': true,
renderer: true,
s: 200,
compilers: 'js:babel-core/register',
}
Events
This plugin emits events named electronMochaStdoutData
, electronMochaStdoutEnd
, electronMochaStderrData
,
electronMochaStderrEnd
, electronMochaError
, and electronMochaExit
,
which are implemented by the following code:
electronMocha.stdout.on('data', stream.emit.bind(stream, 'electronMochaStdoutData'));
electronMocha.stdout.on('end', stream.emit.bind(stream, 'electronMochaStdoutEnd'));
electronMocha.stderr.on('data', stream.emit.bind(stream, 'electronMochaStderrData'));
electronMocha.stderr.on('end', stream.emit.bind(stream, 'electronMochaStderrEnd'));
electronMocha.on('error', stream.emit.bind(stream, 'electronMochaError'));
electronMocha.on('exit', stream.emit.bind(stream, 'electronMochaExit'));
Tests
npm test
Contribution
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
License
MIT License (http://nodaguti.mit-license.org/)