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.
Install
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 gulpfile.babel.js
and spec/electronMocha
to learn how to make gulp tasks and client-side Mocha tests with the plugin.
Passing additional options to electron-mocha
The electronMocha
property of the optional argument to electronMocha()
is passed to electron-mocha.
See electron-mocha's docs
to know 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 (which is not available in gulp-mocha :/).
So just specify babel-core/register
.
You want to assert with power-assert?
Use espower-babel/guess
!
gulp.src('./test', { read: false })
.pipe(electronMocha({
electronMocha: {
renderer: true,
compilers: 'js:espower-babel/guess',
'no-timeout': true,
},
}))
API
electronMocha([options])
options
-
electronPath
Type | Default |
---|
string | undefined |
A path to Electron in which test are executed.
If not specified, use Electron in node_modules
instead.
-
silent
Don't throw an error even if a test 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 --renderder -s 200 --compilers js:babel-core/register
,
specify:
electronMocha: {
'no-timeout': true,
renderder: true,
s: 200,
compilers: 'js:babel-core/register',
}
Events
This plugin emits electronMochaStdoutData
, electronMochaStdoutEnd
, electronMochaStderrData
,
electronMochaStderrEnd
, electronMochaError
, 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/)