karma-electron
Karma launcher and preprocessor for Electron
This was written to allow for directly testing in Electron where we might want require
to work automatically
Features:
- Tested via CI on Linux and Windows
- Support for Node.js integration in the renderer process (e.g.
process
, require
, __filename
) - Support for hidden browser windows
- Support for isolated test runs to prevent cookie/localStorage pollution
Getting Started
On a project that has been set up with karma init
already, install the module via:
npm install karma-electron electron-prebuilt
Then, configure the module:
browsers: ['Electron']
preprocessors: {
'**/*.js': ['electron']
},
client: {
useIframe: false
}
Then, we can run Karma:
karma start
Documentation
Environment variables
- ELECTRON_BIN - Override path to use for
electron
- By default, we will use path given by
electron-prebuilt
Example:
ELECTRON_BIN=/usr/bin/electron karma start
Configuration
We support configuration via Karma's custom launcher inheritance:
- flags
Array
- List of Chromium flags to alter Electron's behavior
- userDataDir
String
- Directory to store cookies/localStorage information
- By default, this is a random directory generated by Karma (e.g.
/tmp/karma-5355024
)
Example:
module.exports = function (config) {
config.set({
browsers: ['CustomElectron'],
customLaunchers: {
CustomElectron: {
base: 'Electron',
userDataDir: __dirname + '/.electron',
flags: ['--show']
}
}
};
Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint via npm run lint
and test via npm test
.
Donating
Support this project and others by twolfson via gratipay.
Unlicense
As of Mar 03 2016, Todd Wolfson has released this repository and its contents to the public domain.
It has been released under the UNLICENSE.