cucumberjs-parallel

Run cucumber features or scenarios in parallel with limited threads count

Usage no npm install needed!

<script type="module">
  import cucumberjsParallel from 'https://cdn.skypack.dev/cucumberjs-parallel';
</script>

README

CucumberJS Parallel

Run Cucumber Features or Scenarios in Parallel with limited threads count

Build Status npm License

Install

Cucumber 6

npm install cucumberjs-parallel@1.2.5 --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