Cucumber Runner
A plugin to use CucumberJS in StrykerJS
🥒 💖 👽
Note: this plugin only supports the @cucumber/cucumber nodejs test runner. If you're running cucumber with Jest or Karma, be sure to use those respective test runners instead.
Install​
Install @stryker-mutator/cucumber-runner locally within your project folder, like so:
npm i --save-dev @stryker-mutator/cucumber-runner
Peer dependencies​
The @stryker-mutator/cucumber-runner is a plugin for stryker to enable @cucumber/cucumber as a test runner.
As such, you should make sure you have the correct versions of its dependencies installed:
@cucumber/cucumber@stryker-mutator/core
You can find the peerDependencies in @stryker-mutator/cucumber-runner's package.json file.
Configuring​
You can configure the cucumber test runner in the stryker.config.json (or stryker.config.js) file.
{
"testRunner": "cucumber",
"cucumber": {
"profile": "stryker",
"features": ["my-features/my-feature.feature"],
"tags": ["my-tag"]
}
}
The cucumber runner supports loading cucumber profiles from your cucumber.js configuration file. The default profile will automatically be loaded if none was specified.
cucumber.profile [string]​
Default: "default"
Choose which profile to run. See cucumber profiles
cucumber.features [string[]]​
Default: ["features"]
Choose which features to load. See Running specific features.
cucumber.tags [string[]]​
Default: undefined
Choose which tags to focus. See Tags.
Coverage analysis​
The @stryker-mutator/cucumber-runner plugin supports coverage analysis, test filtering and test location reporting. This means that --coverageAnalysis perTest (which is the default) is supported and will yield the best performance.
Non-standard feature file locations​
As of @stryker-mutator/cucumber-runner version 6.1, non-standard feature file locations are supported out of the box.
TypeScript​
If you're using ts-node to just-in-time transpile your TypeScript code with native ESM using a custom --loader, you will also need to add that to Stryker. For example, if you use this setup:
{
"scripts": {
"test": "cross-env NODE_OPTIONS=\"--loader ts-node/esm\" cucumber-js",
"test:mutation": "stryker run"
}
}
You will also need to add the --loader to your 'stryker.config.json' file:
{
"testRunnerNodeArgs": ["--loader", "ts-node/esm"],
"testRunner": "cucumber"
}