All user visible changes to cucumber
crate will be documented in this file. This project uses Semantic Versioning 2.0.0.
0.22.0 · 2024-??-?? (unreleased)
- Bumped up MSRV to 1.83 to get rid of
once_cell
crate and for#[expect]
attribute usage. (4010c1ad, f1307038, todo)
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
,Writer
andwriter::Arbitrary
traits. (#324) - Bumped up MSRV to 1.75 for using
async fn
in traits. (#324)
0.20.2 · 2023-12-04
- Ignored verbosity when printing
World
on 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
Log
variant toevent::Scenario
. (#258) - Added
embeddings
field towriter::json::Step
andwriter::json::HookResult
. (#261) - Added
report_time
field towriter::libtest::Cli
. (#264, #265) - Bumped up MSRV to 1.70 for using the
IsTerminal
trait fromstd
. (#288)
tracing
crate integration behind thetracing
feature flag. (#213, #258, #261)- Support of
--report-time
CLI option forwriter::Libtest
. (#264, #265)
0.19.1 · 2022-12-29
- Using autodetect for colors on
color=always|never
CLI options. (#253)
0.19.0 · 2022-12-16
- Replaced
writer::FailOnSkipped::writer
field withwriter::FailOnSkipped::inner_writer()
method. (56456e66) - Replaced
writer::Normalized::writer
field withwriter::Normalized::inner_writer()
method. (56456e66) - Replaced
writer::Or::left
/writer::Or::right
fields withwriter::Or::left_writer()
/writer::Or::right_writer()
methods. (56456e66) - Replaced
writer::Repeat::writer
field withwriter::Repeat::inner_writer()
method. (56456e66) - Replaced
writer::Summarize::writer
field withwriter::Summarize::inner_writer()
method. (56456e66) - Replaced
writer::Summarize::scenarios
/writer::Summarize::steps
fields withwriter::Summarize::scenarios_stats()
/writer::Summarize::steps_stats()
methods. (56456e66) - Made
writer::Summarize::features
/writer::Summarize::rules
fields private. (56456e66) - Made
writer::Summarize::parsing_errors
/writer::Summarize::failed_hooks
fields 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)Default
implementation for CLI types. (56456e66)
@serial
Scenario
s continue running after failure when--fail-fast()
CLI option is specified. (#252)
0.18.0 · 2022-12-07
- Added
NotFound
variant toevent::StepError
. (#250)
0.17.0 · 2022-11-23
- Added
event::ScenarioFinished
asCucumber::after
hook's argument, explaining why theScenario
has finished. (#246, #245)
- Uncaught panics of user code, when they happen before first poll of the returned
Future
s. (#246)
0.16.0 · 2022-11-09
--ff
CLI alias for--fail-fast
CLI option. (#242)
0.15.3 · 2022-11-01
Clone
implementations to all public types where possible. (#238)
0.15.2 · 2022-10-25
- Parsing error on a
Feature
having comment and tag simultaneously. (4cad49f8, cucumber-rs/gherkin#37, cucumber-rs/gherkin#35) @retry
,@serial
and@allow.skipped
tags 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 customResult
types. (186af8b1)
0.14.1 · 2022-09-12
- Considered stripping
CARGO_WORKSPACE_DIR
from output paths whenever is defined. (ad0bb22f)
CARGO_MANIFEST_DIR
being detected in compile time. (ad0bb22f)
junit-report
crate 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 manualWorld
trait implementation. (#219, #217) - Merged
WorldInit
trait into theWorld
trait. (#219) - Added
ParsingFinished
variant toevent::Cucumber
. (#220) - Reworked
writer::Failure
/writer::discard::Failure
aswriter::Stats
/writer::discard::Stats
. (#220) - Renamed
WriterExt::discard_failure_writes()
toWriterExt::discard_stats_writes()
. (#220) - Added
Option<step::Location>
field toevent::Step::Passed
andevent::Step::Failed
. (#221) - Wrapped
event::Scenario
intoevent::RetryableScenario
for storing in otherevent
s. (#223, #212) - Added
retried_steps()
method towriter::Stats
. (#223, #212)
writer::Libtest
(enables IntelliJ Rust integration) behind thelibtest
feature flag. (#220)writer::Or
to alternate between 2Writer
s basing on a predicate. (#220)writer::Stats::passed_steps()
andwriter::Stats::skipped_steps()
methods. (#220)FeatureExt::count_steps()
method. (#220)- Location of the
fn
matching a failedStep
in output. (#221) - Ability to retry failed
Scenario
s. (#223, #212) --retry
,--retry-after
and--retry-tag-filter
CLI options. (#223, #212)
- Provided default CLI options are now global (allowed to be specified after custom subcommands). (#216, #215)
- Stripped
CARGO_MANIFEST_DIR
from output paths whenever is possible. (#221)
0.13.0 · 2022-03-29
0.12.2 · 2022-03-28
Cucumber::after
now gets theWorld
instance even if someStep
or aHook
before it has failed. (#209, #207)
0.12.1 · 2022-03-09
regex
crate to 1.5.5 version to fix CVE-2022-24713.
0.12.0 · 2022-02-10
step::Context::matches
now contains regex capturing group names in addition to captured values. (#204)
- Support for multiple capturing groups in
Parameter
regex (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::Basic
skipping files named.feature
. (#201)
0.11.2 · 2022-01-19
0.11.1 · 2022-01-07
--fail-fast
CLI option torunner::Basic
. (#196)
- Optimized
runner::Basic
to not wait the whole batch to complete before executing nextScenario
s. (#195)
0.11.0 · 2022-01-03
- Moved
World
type parameter ofWriterExt
trait to methods. (#160) - Renamed
Normalized
andSummarized
Writer
s toNormalize
andSummarize
. (#162) - Removed
writer::Basic
Default
impl and changewriter::Basic::new()
return type towriter::Normalize<writer::Basic>
. (#162) - Bump up MSRV to 1.57 for better error reporting in
const
assertions. (cef3d480) - Switch to
gherkin
crate instead ofgherkin_rust
. (e2a41ab0) - Renamed
@allow_skipped
built-in tag to@allow.skipped
. (#181) - Switched CLI to
clap
fromstructopt
. (#188, #155) - Reworked
verbose
CLI option ofwriter::Basic
: (#193, #192)- Removed long form.
- Made
-v
default behavior (no additional output). - Made
-vv
additionally outputWorld
on failed steps. - Made
-vvv
additionally 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-junit
feature flag. (#147)writer::Json
(Cucumber JSON format) behind theoutput-json
feature flag. (#159)writer::Tee
for outputting to multiple terminatingWriter
s simultaneously. (#160)writer::discard::Arbitrary
andwriter::discard::Failure
for providing no-op implementations of the correspondingWriter
traits. (#160)- Inability to build invalid
Writer
s 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
Feature
andRule
withScenario
when filtering with--tags
CLI option. (#166) writer::AssertNormalized
forcingNormalized
implementation. (#182)cli::Colored
trait for propagatingColoring
to arbitraryWriter
s. (#189, #186)
- Template regex in
Scenario Outline
expansion from<(\S+)>
to<([^>\s]+)>
. (#163) - Multiple
Examples
inScenario Outline
. (#165, #164) - Docstring and name expansion in
Scenario Outline
. (#178, #172) writer::Summarized
ignoringColoring
options. (#189, #186)
0.10.2 · 2021-11-03
- Multiple
WorldInit
derivers conflicting implementations in a single module. (#150)
0.10.1 · 2021-10-29
- Console output hanging because of executing wrong
Concurrent
Scenario
s. (#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
macros
feature 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 World
instead ofWorld
. (#128) - Made
#[step]
argument of step functionsStep
instead ofStepContext
again, while test callbacks still receiveStepContext
as a second parameter. (#128) - Completely redesign and reworked CLI, making it composable and extendable. (#144)
- Hooks now accept optional
&mut World
as their last parameter. (#142)
- Ability to run
Scenario
s concurrently. (#128) - Highlighting of regex capture groups in terminal output with bold style. (#136)
- Error on a step matching multiple step functions (#143).
timestamps
Cargo feature that enables collecting of timestamps for all the happened events during tests execution (useful forWriter
s which format requires them) (#145).
0.9.0 · 2021-07-19
- The second parameter in the test callbacks is now a
StepContext
object, which contains theStep
as astep
field.
- Add
before
andafter
lifecycle functions to theCucumber
builder. These functions take a selector for determining when to runbefore
orafter
, and a callback.
- Literal paths to
.feature
files will now work in theCucumber
builder. - Removed unnecessary internal
Rc<T>
usage.
0.8.4 · 2021-02-18
language
argument toCucumber
builder to set default language for all.feature
files.--debug
flag to always print STDOUT and STDERR per step.
0.8.3 · 2021-02-09
- Update
t!
macro to support specifying type ofWorld
argument in closure.
0.8.2 · 2021-01-30
- Re-export
async_trait::async_trait
andfutures
crate for convenience. - Update examples to use
tokio
.
0.8.1 · 2021-01-30
- Proper i18n support via
gherkin_rust
0.9
.
0.8.0 · 2021-01-18
- Filtering of tests by tag. (#67)
- Removed unnecessary dependent traits from
World
trait.
0.7.3 · 2020-09-20
- Fix missing
mut
int!
macro for regexes — thanks @stefanpieck! (#68)
0.7.2 · 2020-09-14
- Enforce
UnwindSafe
on 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.x
and 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.