All user visible changes to cucumber crate will be documented in this file. This project uses Semantic Versioning 2.0.0.
0.23.0 · 2026-04-23
- Fixed precedence of operations in tag expressions to align with upstream. (gherkin#52, gherkin#51)
- Upgraded
gherkincrate to 0.16 version. (0d544772) - Allowed
And-like andBut-like keywords at the beginning ofScenario, automatically considering them asGiven-type steps. (gherkin#53)
0.22.1 · 2025-12-23
0.22.0 · 2025-12-12
- Bumped up MSRV to 1.88 to get rid of
once_cellcrate, for#[expect]attribute usage, and because of migration to 2024 edition. (4010c1ad, f1307038, b46930c3, 9705253b, 0c7dfc3c, a4cbd3d2) - Replaced
ArcwithPartialEq/Hashpointer-optimizedSourceinevents: (#352)Source<gherkin::Feature>inevent::Cucumber::Feature.Source<gherkin::Rule>inevent::Feature::Rule.Source<gherkin::Scenario>inevent::Feature::Scenarioandevent::Rule::Scenario.Source<gherkin::Step>inevent::Scenario::Backgroundandevent::Scenario::Step.
- Made non-
constthe following constructor functions for input type polymorphism: (#352)event::Cucumber::feature_started()andevent::Cucumber::feature_finished().event::Cucumber::rule_started()andevent::Cucumber::rule_finished().event::Scenario::step_started(),event::Scenario::step_passed()andevent::Scenario::step_skipped().event::Scenario::background_step_started(),event::Scenario::background_step_passed()andevent::Scenario::background_step_skipped().
- Kept only currently executed row of
Examplestable in expandedScenario Outlines. (#371, #369)
CUCUMBER_FILTER_TAGSenvironment variable support. (#372)
- Performance degradation on large
.featurefiles. (#352, #331) clippy::trivial_regexlint triggering on#[given]/#[when]/#[then]steps without regular expression. (81acba84, #384)
0.21.1 · 2024-06-16
- Wrong case of statuses reported in
writer::Json. (#335)
0.21.0 · 2024-04-22
- Removed
#[async_trait]attribute fromWorld,Writerandwriter::Arbitrarytraits. (#324) - Bumped up MSRV to 1.75 for using
async fnin traits. (#324)
0.20.2 · 2023-12-04
- Ignored verbosity when printing
Worldon hook/background step failure. (#313)
0.20.1 · 2023-10-16
- Incorrect terminal width detection when its height is low. (#298)
- Incorrect terminal lines clearing in interactive mode. (#300, #302, #299)
0.20.0 · 2023-07-10
- Added
Logvariant toevent::Scenario. (#258) - Added
embeddingsfield towriter::json::Stepandwriter::json::HookResult. (#261) - Added
report_timefield towriter::libtest::Cli. (#264, #265) - Bumped up MSRV to 1.70 for using the
IsTerminaltrait fromstd. (#288)
tracingcrate integration behind thetracingfeature flag. (#213, #258, #261)- Support of
--report-timeCLI option forwriter::Libtest. (#264, #265)
0.19.1 · 2022-12-29
- Using autodetect for colors on
color=always|neverCLI options. (#253)
0.19.0 · 2022-12-16
- Replaced
writer::FailOnSkipped::writerfield withwriter::FailOnSkipped::inner_writer()method. (56456e66) - Replaced
writer::Normalized::writerfield withwriter::Normalized::inner_writer()method. (56456e66) - Replaced
writer::Or::left/writer::Or::rightfields withwriter::Or::left_writer()/writer::Or::right_writer()methods. (56456e66) - Replaced
writer::Repeat::writerfield withwriter::Repeat::inner_writer()method. (56456e66) - Replaced
writer::Summarize::writerfield withwriter::Summarize::inner_writer()method. (56456e66) - Replaced
writer::Summarize::scenarios/writer::Summarize::stepsfields withwriter::Summarize::scenarios_stats()/writer::Summarize::steps_stats()methods. (56456e66) - Made
writer::Summarize::features/writer::Summarize::rulesfields private. (56456e66) - Made
writer::Summarize::parsing_errors/writer::Summarize::failed_hooksfields private in favour ofwriter::Stats::parsing_errors()/writer::Stats::failed_hooks()methods. (56456e66)
- Gherkin syntax highlighting in the Book. (#251)
runner::Basic::fail_fast()method asCucumber::fail_fast(). (#252)Cucumber::with_default_cli()method. (56456e66)Defaultimplementation for CLI types. (56456e66)
@serialScenarios continue running after failure when--fail-fast()CLI option is specified. (#252)
0.18.0 · 2022-12-07
- Added
NotFoundvariant toevent::StepError. (#250)
0.17.0 · 2022-11-23
- Added
event::ScenarioFinishedasCucumber::afterhook's argument, explaining why theScenariohas finished. (#246, #245)
- Uncaught panics of user code, when they happen before first poll of the returned
Futures. (#246)
0.16.0 · 2022-11-09
--ffCLI alias for--fail-fastCLI option. (#242)
0.15.3 · 2022-11-01
Cloneimplementations to all public types where possible. (#238)
0.15.2 · 2022-10-25
- Parsing error on a
Featurehaving comment and tag simultaneously. (4cad49f8, cucumber-rs/gherkin#37, cucumber-rs/gherkin#35) @retry,@serialand@allow.skippedtags semantics inheritance. (#237)
0.15.1 · 2022-10-12
0.15.0 · 2022-10-05
0.14.2 · 2022-09-19
#[derive(World)]macro being unhygienic regarding customResulttypes. (186af8b1)
0.14.1 · 2022-09-12
- Considered stripping
CARGO_WORKSPACE_DIRfrom output paths whenever is defined. (ad0bb22f)
CARGO_MANIFEST_DIRbeing detected in compile time. (ad0bb22f)
junit-reportcrate to 0.8 version to fix RUSTSEC-2022-0048. (#229, #226)
0.14.0 · 2022-09-08
- Bumped up MSRV to 1.62 for more clever support of Cargo features and simplified codegen. (fbd08ec2, cf055ac0, 8ad5cc86)
- Replaced
#[derive(WorldInit)]with#[derive(World)]to remove the need of manualWorldtrait implementation. (#219, #217) - Merged
WorldInittrait into theWorldtrait. (#219) - Added
ParsingFinishedvariant toevent::Cucumber. (#220) - Reworked
writer::Failure/writer::discard::Failureaswriter::Stats/writer::discard::Stats. (#220) - Renamed
WriterExt::discard_failure_writes()toWriterExt::discard_stats_writes(). (#220) - Added
Option<step::Location>field toevent::Step::Passedandevent::Step::Failed. (#221) - Wrapped
event::Scenariointoevent::RetryableScenariofor storing in otherevents. (#223, #212) - Added
retried_steps()method towriter::Stats. (#223, #212)
writer::Libtest(enables IntelliJ Rust integration) behind thelibtestfeature flag. (#220)writer::Orto alternate between 2Writers basing on a predicate. (#220)writer::Stats::passed_steps()andwriter::Stats::skipped_steps()methods. (#220)FeatureExt::count_steps()method. (#220)- Location of the
fnmatching a failedStepin output. (#221) - Ability to retry failed
Scenarios. (#223, #212) --retry,--retry-afterand--retry-tag-filterCLI options. (#223, #212)
- Provided default CLI options are now global (allowed to be specified after custom subcommands). (#216, #215)
- Stripped
CARGO_MANIFEST_DIRfrom output paths whenever is possible. (#221)
0.13.0 · 2022-03-29
0.12.2 · 2022-03-28
Cucumber::afternow gets theWorldinstance even if someStepor aHookbefore it has failed. (#209, #207)
0.12.1 · 2022-03-09
regexcrate to 1.5.5 version to fix CVE-2022-24713.
0.12.0 · 2022-02-10
step::Context::matchesnow contains regex capturing group names in addition to captured values. (#204)
- Support for multiple capturing groups in
Parameterregex (previously was forbidden). (#204)
- Book examples failing on Windows. (#202, #200)
{string}parameter in Cucumber Expressions returning its enclosing quotes. (cucumber-rs/cucumber-expressions#7)
0.11.3 · 2022-01-31
parser::Basicskipping files named.feature. (#201)
0.11.2 · 2022-01-19
0.11.1 · 2022-01-07
--fail-fastCLI option torunner::Basic. (#196)
- Optimized
runner::Basicto not wait the whole batch to complete before executing nextScenarios. (#195)
0.11.0 · 2022-01-03
- Moved
Worldtype parameter ofWriterExttrait to methods. (#160) - Renamed
NormalizedandSummarizedWriters toNormalizeandSummarize. (#162) - Removed
writer::BasicDefaultimpl and changewriter::Basic::new()return type towriter::Normalize<writer::Basic>. (#162) - Bump up MSRV to 1.57 for better error reporting in
constassertions. (cef3d480) - Switch to
gherkincrate instead ofgherkin_rust. (e2a41ab0) - Renamed
@allow_skippedbuilt-in tag to@allow.skipped. (#181) - Switched CLI to
clapfromstructopt. (#188, #155) - Reworked
verboseCLI option ofwriter::Basic: (#193, #192)- Removed long form.
- Made
-vdefault behavior (no additional output). - Made
-vvadditionally outputWorldon failed steps. - Made
-vvvadditionally output docstrings (old behavior).
- Ability for step functions to return
Result. (#151) - Arbitrary output for
writer::Basic. (#147) writer::JUnit(JUnit XML report) behind theoutput-junitfeature flag. (#147)writer::Json(Cucumber JSON format) behind theoutput-jsonfeature flag. (#159)writer::Teefor outputting to multiple terminatingWriters simultaneously. (#160)writer::discard::Arbitraryandwriter::discard::Failurefor providing no-op implementations of the correspondingWritertraits. (#160)- Inability to build invalid
Writers pipelines: - Support for Cucumber Expressions via
#[given(expr = ...)],#[when(expr = ...)]and#[then(expr = ...)]syntax. (#157) - Support for custom parameters in Cucumber Expressions via
#[derive(cucumber::Parameter)]macro. (#168) - Merging tags from
FeatureandRulewithScenariowhen filtering with--tagsCLI option. (#166) writer::AssertNormalizedforcingNormalizedimplementation. (#182)cli::Coloredtrait for propagatingColoringto arbitraryWriters. (#189, #186)
- Template regex in
Scenario Outlineexpansion from<(\S+)>to<([^>\s]+)>. (#163) - Multiple
ExamplesinScenario Outline. (#165, #164) - Docstring and name expansion in
Scenario Outline. (#178, #172) writer::SummarizedignoringColoringoptions. (#189, #186)
0.10.2 · 2021-11-03
- Multiple
WorldInitderivers conflicting implementations in a single module. (#150)
0.10.1 · 2021-10-29
- Console output hanging because of executing wrong
ConcurrentScenarios. (#146)
0.10.0 · 2021-10-26
- Renamed crate to
cucumber. - Complete redesign: (#128)
- Introduce new abstractions:
Parser,Runner,Writer; - Provide reference implementations for those abstractions;
- Enable
macrosfeature by default.
- Introduce new abstractions:
- Replaced
#[given(step)],#[when(step)]and#[then(step)]function argument attributes with a single#[step]. (#128) - Made test callbacks first argument
&mut Worldinstead ofWorld. (#128) - Made
#[step]argument of step functionsStepinstead ofStepContextagain, while test callbacks still receiveStepContextas a second parameter. (#128) - Completely redesign and reworked CLI, making it composable and extendable. (#144)
- Hooks now accept optional
&mut Worldas their last parameter. (#142)
- Ability to run
Scenarios concurrently. (#128) - Highlighting of regex capture groups in terminal output with bold style. (#136)
- Error on a step matching multiple step functions (#143).
timestampsCargo feature that enables collecting of timestamps for all the happened events during tests execution (useful forWriters which format requires them) (#145).
0.9.0 · 2021-07-19
- The second parameter in the test callbacks is now a
StepContextobject, which contains theStepas astepfield.
- Add
beforeandafterlifecycle functions to theCucumberbuilder. These functions take a selector for determining when to runbeforeorafter, and a callback.
- Literal paths to
.featurefiles will now work in theCucumberbuilder. - Removed unnecessary internal
Rc<T>usage.
0.8.4 · 2021-02-18
languageargument toCucumberbuilder to set default language for all.featurefiles.--debugflag to always print STDOUT and STDERR per step.
0.8.3 · 2021-02-09
- Update
t!macro to support specifying type ofWorldargument in closure.
0.8.2 · 2021-01-30
- Re-export
async_trait::async_traitandfuturescrate for convenience. - Update examples to use
tokio.
0.8.1 · 2021-01-30
- Proper i18n support via
gherkin_rust0.9.
0.8.0 · 2021-01-18
- Filtering of tests by tag. (#67)
- Removed unnecessary dependent traits from
Worldtrait.
0.7.3 · 2020-09-20
- Fix missing
mutint!macro for regexes — thanks @stefanpieck! (#68)
0.7.2 · 2020-09-14
- Enforce
UnwindSafeon async test types.
0.7.1 · 2020-09-09
- Issue with
t!macro for unbraced blocks.
0.7.0 · 2020-09-07
- The macro approach provided in
0.6.xand lower has been entirely removed. It was hard to maintain and limited maintenance of the tests themselves.
- A new builder approach has been implemented.
- Support for asynchronous tests has been implemented — this is runtime agnostic.