karma-bro
Bro is a fast browserify integration for Karma that handles large projects with ease.
Features
Bro is a preprocessor for Karma that combines test files and dependencies into a browserified bundle before tests get executed. It relies on watchify to generate the bundle and to keep it updated during autoWatch=true
.
Some important features are
- it builds one browserify bundle only
- it incrementally updates the browserify bundle once tests and/or source files
- it ensures tests are only once per test run
Installation
Get the plug-in via npm
npm install --save-dev karma-bro
Usage
Add browserify
as the first framework used in your Karma configuration file. For each file that should be processed and bundled by karma, configure the browserify
preprocessor. Optionally use the browserify
config entry to configure how the bundle gets created.
module.exports = function(karma) {
karma.set({
frameworks: [ 'browserify', 'any', 'other', 'framework' ],
preprocessors: {
'test/**/*.js': [ 'browserify' ]
},
browserify: {
debug: true,
transform: [ 'brfs' ]
}
});
}
Look at the example directory for a simple browserify + jasmine project that uses this plug-in.
Configure Browserify
The way Bro creates browserified test bundles can be tuned through the browserify
configuration property. The following configuration options are supported:
- extensions
- builtins
- basedir
- commondir
- resolve
- transform
To generate source maps for easier debugging specify debug: true
as an additional configuration option.
Detailed Configuration
The following code snippet shows a Karma configuration file with all karma-bro
related options.
module.exports = function(karma) {
karma.set({
frameworks: [ 'browserify', 'jasmine' ],
files: [
'test/**/*.js'
],
preprocessors: {
'test/**/*.js': [ 'browserify' ]
},
logLevel: 'LOG_DEBUG',
autoWatch: true,
browserify: {
debug: true,
transform: [ 'brfs' ]
}
});
};
Related
Credit goes to to karma-browserify and karma-browserifast. Bro builds on the lessons learned in these projects and offers improved configurability, speed and/or the ability to handle large projects.
License
MIT