stryker-karma-runner v0.24.1
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-karma-runner locally within your project folder, like so:
npm i --save-dev stryker-karma-runnerBring your own test runner
The stryker-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-karma-runner using the stryker.conf.js config file.
// Stryker.conf.js
module.exports = function (config) {
    config.set({
        // ...
        testRunner: 'karma',
        // ...
        karma: {
            projectType: 'custom', // or 'angular-cli'
            configFile: 'path/to/karma.conf.js' // default `undefined`
            config: { // default `undefined`
                browsers: ['ChromeHeadless'] // override config settings
            }
        }
    });
}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-karma-runner to use- karma start.
- "angular-cli": configure stryker-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 any
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-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:
// stryker.conf.js
exports = function(config){
    config.set({
        // ...
        karma: {
            projectType: 'angular-cli',
            karma: {
                configFile: 'src/karma.conf.js'
            },
            ngConfig: {
                // Override ng arguments here
                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.
// stryker.conf.js
exports = function(config){
    config.set({
        // ...
        logLevel: 'trace'
        // ...
    });
}7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago