gpc-for-loop
v1.1.1
Published
A precompiler of GherKing to loop scenarios and scenario outlines to repeat them.
Downloads
35,853
Readme
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.