Stryker Karma Runner
A plugin to use the karma test runner (or @angular/cli's ng test
) in Stryker, the JavaScript mutation testing framework
Install
Install @stryker-mutator/karma-runner locally within your project folder, like so:
npm i --save-dev @stryker-mutator/karma-runner
Bring your own test runner
The @stryker-mutator/karma-runner
is a plugin for stryker
to enable karma
as a test runner.
However, it does not come packaged with it's own version of karma
, instead it
uses your very own karma version. It can also work with @angular/cli
, see Configuring
Note: karma v2.0.3 has a known issue which makes it impossible to use it with Stryker. please upgrade to 2.0.4 or higher.
Configuring
You can configure the @stryker-mutator/karma-runner
using the stryker.conf.js
(or stryker.conf.json
) config file.
module.exports = {
testRunner: 'karma',
karma: {
projectType: 'custom',
configFile: 'path/to/karma.conf.js',
config: {
browsers: ['ChromeHeadless']
}
}
}
karma.projectType
["custom"
| "angular-cli"
]
Default: "custom"
Specify which kind of project you're using. This determines which command is used to start karma
"custom"
: configure @stryker-mutator/karma-runner to use karma start
."angular-cli"
: configure @stryker-mutator/karma-runner to use ng test
(see configuring for angular-cli).
karma.configFile
[string
]
Default: undefined
Specify a 'karma.conf.js' file to be loaded.
Options specified directly in your stryker.conf.js file using karma.config
will overrule options in your karma.conf.js file.
karma.config
[object
]
Default: undefined
Specify karma configuration options directly.
Options specified here will overrule any options in your karma.conf.js file.
karma.ngConfig.testArguments
[object
]
Default: undefined
Add ng test arguments. For example, specify an alternative project with:
karma: {
projectType: 'angular-cli',
ngConfig: {
testArguments: {
project: 'my-lib'
}
}
}
This will run ng test with --project
argument: ng test --project=my-lib
.
Non overridable options
The browser's life cycle is determined by @stryker-mutator/karma-runner
. I.e. these settings cannot be overridden:
{
browserNoActivityTimeout: 1000000,
autoWatch: false,
singleRun: false,
detached: false
}
The coverage
plugin will also be removed (not needed for mutation testing).
Configure angular cli
Note: this requires v6.1.0-rc0 or higher of the @angular/cli
This is an example for a configuration of stryker using the angular cli:
exports = function(config){
config.set({
karma: {
projectType: 'angular-cli',
karma: {
configFile: 'src/karma.conf.js'
},
ngConfig: {
testArguments: {
project: 'my-lib'
}
}
}
});
}
Debugging
As Stryker runs karma in its own process, its logging output will be consumed by Stryker.
To see all logging from karma, set the log level to trace
in stryker.conf.js
.
exports = function(config){
config.set({
logLevel: 'trace'
});
}