gpc-for-loop

A precompiler of GherKing to loop scenarios and scenario outlines to repeat them.

MIT License

Downloads
52.6K
Stars
1

gpc-for-loop

A precompiler of GherKing to loop scenarios and scenario outlines to repeat them.

In the case of scenario outlines, it copies all rows of examples, resulting in iterator × rows number of scenarios when tests are run.

Usage

Identify scenario or scenario outline to be repeated and mark it with ${loopTag}(${i}) e.g. @loop(4).

The precompiler will then repeat this scenario or scenario outline for ${i} times, modifying its name according to the format.

Configurable variables and their default options:

Option Default Description
maxValue 10 Maximum value of repeat (for explicit loops, not applicable for iterations)
tagName 'loop' Tag used to mark scenarios or outlines to be repeated
format '${name} (${i})' Format of the scenario or outline name after repeating
startIndex 1 The first index to use when repeating a scenario
limitToMaxValue true Whether higher repeat values than the max should be limited to the max or error should be thrown ( false )
keepTag false Whether the loop tags should be kept or removed (default)
iterations - An object of iteration name and values (named repeat values)

If iterations is set, the keys of the iterations object can be used as values of the loop tag, to use predefined repeat values. For example, if iterations is { "stress": 5 } then @loop(stress) means repeating 5 times.

See examples for the input files and output in the test/data folder.

"use strict";
const compiler = require("gherking");
const ForLoop = require("gpc-for-loop");

let ast = await compiler.load("./features/src/login.feature");
ast = compiler.process(
  ast,
  new ForLoop({
    // config
  }),
);
await compiler.save("./features/dist/login.feature", ast, {
  lineBreak: "\r\n",
});
"use strict";
import { load, process, save } from "gherking";
import ForLoop = require("gpc-for-loop");

let ast = await load("./features/src/login.feature");
ast = process(
  ast,
  new ForLoop({
    // config
  }),
);
await save("./features/dist/login.feature", ast, {
  lineBreak: "\r\n",
});

Other

This package uses debug for logging, use gpc:for-loop :

DEBUG=gpc:for-loop* gherking ...

For detailed documentation see the TypeDocs documentation.