Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gherking/gpc-for-loop
A precompiler of GherKing to loop scenarios and scenario outlines to repeat them.
https://github.com/gherking/gpc-for-loop
cucumber feature-file gherkin gherking gpc hacktoberfest precompiler typescript
Last synced: 2 months ago
JSON representation
A precompiler of GherKing to loop scenarios and scenario outlines to repeat them.
- Host: GitHub
- URL: https://github.com/gherking/gpc-for-loop
- Owner: gherking
- License: mit
- Created: 2019-11-03T20:28:33.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2024-10-09T06:10:31.000Z (2 months ago)
- Last Synced: 2024-10-09T06:20:54.735Z (2 months ago)
- Topics: cucumber, feature-file, gherkin, gherking, gpc, hacktoberfest, precompiler, typescript
- Language: TypeScript
- Homepage: https://gherking.github.io/gpc-for-loop/
- Size: 382 KB
- Stars: 1
- Watchers: 5
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# gpc-for-loop
![Downloads](https://img.shields.io/npm/dw/gpc-for-loop?style=flat-square) ![Version@npm](https://img.shields.io/npm/v/gpc-for-loop?label=version%40npm&style=flat-square) ![Version@git](https://img.shields.io/github/package-json/v/gherking/gpc-for-loop/master?label=version%40git&style=flat-square) ![CI](https://img.shields.io/github/actions/workflow/status/gherking/gpc-for-loop/ci.yml?branch=main&label=ci&style=flat-square) ![Docs](https://img.shields.io/github/actions/workflow/status/gherking/gpc-for-loop/docs.yml?branch=main&label=docs&style=flat-square)
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.
```javascript
"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",
});
``````typescript
"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](https://www.npmjs.com/package/debug) for logging, use `gpc:for-loop` :
```shell
DEBUG=gpc:for-loop* gherking ...
```For detailed documentation see the [TypeDocs documentation](https://gherking.github.io/gpc-for-loop/).