feat(AB#1273974): repeat feature#330
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a “repeat” execution mechanism intended to mirror existing retry behavior, allowing selected scenarios to be executed multiple times for performance measurement.
Changes:
- Introduces
repeat/repeatTagExpressioninto runtime run options and threads them through application/run options wiring. - Updates the runtime
Workerto run each matching test case multiple times and aggregate pass/fail across repeats. - Adds a new compatibility kit (
compatibility/repeat/*) and wires repeat settings intoBaseCompatibility.cpp.
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
cucumber_cpp/library/support/Types.hpp |
Adds repeat fields to runtime options. |
cucumber_cpp/library/runtime/Worker.cpp |
Implements repeat loop execution per test case. |
cucumber_cpp/library/Application.hpp |
Adds repeat fields to CLI/options struct. |
cucumber_cpp/library/Application.cpp |
Forwards repeat options into RunOptions. |
compatibility/BaseCompatibility.cpp |
Sets repeat options for the repeat devkit kit. |
compatibility/repeat/repeat.feature |
New feature for repeat compatibility coverage. |
compatibility/repeat/repeat.cpp |
Step definitions for the repeat kit. |
compatibility/repeat/repeat.ndjson |
Expected message output for repeat kit. |
compatibility/repeat/repeat.arguments.txt |
Declares intended CLI args for repeat kit. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
Hello Artem Pogorelov (@art-pogorelov) and thank you for your proposal! I'll have a look at your changes as soon as work allows. Sorry I didn't pick this up any time sooner. I just returned from a four week holiday. |
|
One thing that is important is that the output is still valid in terms of 'cucumber messages'. I'll have to verify/cross reference this with the Cucumber maintainers. |
Overview
Add
--repeat Nand--repeat-tag-filter <expression>CLI options to re-run matching scenarios N times (useful for performance measurements, for example).This mirrors the existing --retry pattern but runs unconditionally.
Behavior
--repeat 10→ every scenario runs 10 times--repeat 10 --repeat-tag-filter "@Performance"→ only scenarios tagged performance run 10 times; others run onceDefault (--repeat 1 or omitted) → no behavior change
Each repeat is a full independent execution (hooks fire each time)
Exit code: fail if any repeat fails
Testing
Verify with:
runner.exe features --repeat 3 --repeat-tag-filter "@SomeTag"Confirm the tagged scenario runs 3 times and untagged scenarios run once.