karma-mocha-webworker
Karma plugin which runs your mocha tests in a WebWorker.
Using this plugin you can test your javascript code for WebWorker compatibility.
Usage
Install the module and save it as a devDependency
:
npm install karma-mocha-webworker --save-dev
Instructions on how to install karma
can be found here.
You will then have to configure your karma config:
module.exports = config => {
config.set({
frameworks : ['mocha-webworker'],
files : [
{pattern: 'test/my-test-case.js', included: false},
{pattern: 'test/more-test-cases/*.js', included: false}
],
client : {
mochaWebWorker: {
pattern : [
'test/my-test-case.js',
'test/more-test-cases/*.js'
],
worker: 'SharedWorker',
mocha : {
ui: 'tdd'
},
evaluate: {
beforeMochaImport: 'self.console.log("Before the mocha script is imported")',
beforeMochaSetup : 'self.console.log("Before mocha is setup (mocha.setup())")',
beforeScripts : 'self.console.log("Before your scripts are imported")',
beforeRun : 'self.console.log("Before your tests are run (mocha.run())")',
afterRun : 'self.console.log("After your tests have been run")'
}
}
}
});
};
Grep
To run only some test cases matching a given pattern, you can use:
karma start &
karma run -- --grep foo
Google Chrome Caveat
Google Chrome currently (tested up to v55) does not pass on stack information when an error occurs within a script loaded into a Web Worker (e.g. importScripts(['foo.js'])
). So if your script contains a syntax error or a runtime error, the stack will point at a line within karma-mocha-webworker. You can workaround this issue by using Firefox.