CucumberJS Parallel
Run Cucumber Features or Scenarios in Parallel with limited threads count
Install
Cucumber 6
npm install cucumberjs-parallel@1.2.6 --save-dev
Cucumber 7
npm install cucumberjs-parallel --save-dev
Notes:
- The versions 1.x.x were tested with cucumberjs v6.0.5 and Node v12.
- The versions 2.x.x were tested with cucumberjs v7.3.1 and Node v14.16.0.
- The module requires node v.^10, if you are using v10, please use
--experimental-worker
flag. Details
How to use
Commands
--parallel-type
- either features
or scenarios
-w, --workers
- number of threads. if the value set to 0, the count of threads will equal the number of tasks (features or scenarios)
To run Scenarios
in Parallel, pass process.argv --parallel-type scenarios
$ node_modules/cucumberjs-parallel/bin/cucumberjs-parallel /path/to/features -r /path/to/step-defs --parallel-type scenarios -w 4 --format json:path/to/file.json
It runs Features
in parallel by default, or by passing --parallel-type features
process argument
$ node_modules/cucumberjs-parallel/bin/cucumberjs-parallel /path/to/features -r /path/to/step-defs -w 0 --format json:path/to/file.json
Run
Supports all the arguments as cucumber-js, however please be careful with --format
option, the module supports aggregation of json
. the rest of formats might not be working.
$ node_modules/cucumberjs-parallel/bin/cucumberjs-parallel /path/to/features -r /path/to/step-defs -w 2 -f json:path/to/file.json --tags=@myTag
Format
Module supports JSON format. You can save the JSON output to file by passing the cucumber-format as,
-f json:path/to/file.json
Allure Report
CucumberJS 7 and higher doesn't work with AllureJS last version (2.0.0-beta.14)
Run Features or Scenarios in Parallel and generate Allure Reports with allure-cucumberjs
Create Reporter file:
const { CucumberJSAllureFormatter } = require("allure-cucumberjs");
const { AllureRuntime } = require("allure-cucumberjs");
function Reporter(options) {
return new CucumberJSAllureFormatter(
options,
new AllureRuntime({ resultsDir: "./allure-results" }),
{}
);
}
Reporter.prototype = Object.create(CucumberJSAllureFormatter.prototype);
Reporter.prototype.constructor = Reporter;
exports.default = Reporter;
Then pass with reporter as a Cucumber formatter:
--format ./path/to/Reporter.js
e.g.
node_modules/cucumberjs-parallel/bin/cucumberjs-parallel test/features --parallel-type features -w 2 -f allure/Reporter.js
Changelog
changelog
Inspired by