Skip to content

Latest commit

 

History

History
805 lines (447 loc) · 21.8 KB

CHANGELOG.md

File metadata and controls

805 lines (447 loc) · 21.8 KB

cucumber changelog

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)

Diff | Milestone

BC Breaks

0.21.1 · 2024-06-16

Diff | Milestone

Fixed

  • Wrong case of statuses reported in writer::Json. (#335)

0.21.0 · 2024-04-22

Diff | Milestone

BC Breaks

  • Removed #[async_trait] attribute from World, Writer and writer::Arbitrary traits. (#324)
  • Bumped up MSRV to 1.75 for using async fn in traits. (#324)

Fixed

  • Possible truncation of long output messages. (#333, #332)

0.20.2 · 2023-12-04

Diff | Milestone

Fixed

  • Ignored verbosity when printing World on hook/background step failure. (#313)

0.20.1 · 2023-10-16

Diff | Milestone

Fixed

  • 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

Diff | Milestone

BC Breaks

  • Added Log variant to event::Scenario. (#258)
  • Added embeddings field to writer::json::Step and writer::json::HookResult. (#261)
  • Added report_time field to writer::libtest::Cli. (#264, #265)
  • Bumped up MSRV to 1.70 for using the IsTerminal trait from std. (#288)

Added

  • tracing crate integration behind the tracing feature flag. (#213, #258, #261)
  • Support of --report-time CLI option for writer::Libtest. (#264, #265)

Fixed

  • Clearing lines that are wrapped because of terminal width. (#272, #273)

0.19.1 · 2022-12-29

Diff | Milestone

Fixed

  • Using autodetect for colors on color=always|never CLI options. (#253)

0.19.0 · 2022-12-16

Diff | Milestone

BC Breaks

  • Replaced writer::FailOnSkipped::writer field with writer::FailOnSkipped::inner_writer() method. (56456e66)
  • Replaced writer::Normalized::writer field with writer::Normalized::inner_writer() method. (56456e66)
  • Replaced writer::Or::left/writer::Or::right fields with writer::Or::left_writer()/writer::Or::right_writer() methods. (56456e66)
  • Replaced writer::Repeat::writer field with writer::Repeat::inner_writer() method. (56456e66)
  • Replaced writer::Summarize::writer field with writer::Summarize::inner_writer() method. (56456e66)
  • Replaced writer::Summarize::scenarios/writer::Summarize::steps fields with writer::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 of writer::Stats::parsing_errors()/writer::Stats::failed_hooks() methods. (56456e66)

Added

  • Gherkin syntax highlighting in the Book. (#251)
  • runner::Basic::fail_fast() method as Cucumber::fail_fast(). (#252)
  • Cucumber::with_default_cli() method. (56456e66)
  • Default implementation for CLI types. (56456e66)

Fixed

  • @serial Scenarios continue running after failure when --fail-fast() CLI option is specified. (#252)

0.18.0 · 2022-12-07

Diff | Milestone

BC Breaks

  • Added NotFound variant to event::StepError. (#250)

Fixed

  • Not panicking on fail_on_skipped() with retries. (#250, #249)

0.17.0 · 2022-11-23

Diff | Milestone

BC Breaks

  • Added event::ScenarioFinished as Cucumber::after hook's argument, explaining why the Scenario has finished. (#246, #245)

Fixed

  • Uncaught panics of user code, when they happen before first poll of the returned Futures. (#246)

0.16.0 · 2022-11-09

Diff | Milestone

BC Breaks

  • Bumped up MSRV to 1.65 for using let-else statements. (7f52d4a5)

Added

  • --ff CLI alias for --fail-fast CLI option. (#242)

Fixed

  • --fail-fast CLI option causing execution to hang. (#242, #241)

0.15.3 · 2022-11-01

Diff | Milestone

Added

  • Clone implementations to all public types where possible. (#238)

0.15.2 · 2022-10-25

Diff | Milestone

Changed

Fixed

0.15.1 · 2022-10-12

Diff | Milestone

Fixed

0.15.0 · 2022-10-05

Diff | Milestone

BC Breaks

  • Upgraded clap crate to 4.0 version. (#230)

0.14.2 · 2022-09-19

Diff

Fixed

  • #[derive(World)] macro being unhygienic regarding custom Result types. (186af8b1)

0.14.1 · 2022-09-12

Diff | Milestone

Changed

  • Considered stripping CARGO_WORKSPACE_DIR from output paths whenever is defined. (ad0bb22f)

Fixed

  • CARGO_MANIFEST_DIR being detected in compile time. (ad0bb22f)

Security updated

0.14.0 · 2022-09-08

Diff | Milestone

BC Breaks

  • 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 manual World trait implementation. (#219, #217)
  • Merged WorldInit trait into the World trait. (#219)
  • Added ParsingFinished variant to event::Cucumber. (#220)
  • Reworked writer::Failure/writer::discard::Failure as writer::Stats/writer::discard::Stats. (#220)
  • Renamed WriterExt::discard_failure_writes() to WriterExt::discard_stats_writes(). (#220)
  • Added Option<step::Location> field to event::Step::Passed and event::Step::Failed. (#221)
  • Wrapped event::Scenario into event::RetryableScenario for storing in other events. (#223, #212)
  • Added retried_steps() method to writer::Stats. (#223, #212)

Added

  • writer::Libtest (enables IntelliJ Rust integration) behind the libtest feature flag. (#220)
  • writer::Or to alternate between 2 Writers basing on a predicate. (#220)
  • writer::Stats::passed_steps() and writer::Stats::skipped_steps() methods. (#220)
  • FeatureExt::count_steps() method. (#220)
  • Location of the fn matching a failed Step in output. (#221)
  • Ability to retry failed Scenarios. (#223, #212)
  • --retry, --retry-after and --retry-tag-filter CLI options. (#223, #212)

Changed

  • 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

Diff | Milestone

BC Breaks

0.12.2 · 2022-03-28

Diff | Milestone

Changed

0.12.1 · 2022-03-09

Diff | Milestone

Security updated

0.12.0 · 2022-02-10

Diff | Milestone

BC Breaks

  • step::Context::matches now contains regex capturing group names in addition to captured values. (#204)

Added

  • Support for multiple capturing groups in Parameter regex (previously was forbidden). (#204)

Fixed

0.11.3 · 2022-01-31

Diff | Milestone

Fixed

  • parser::Basic skipping files named .feature. (#201)

0.11.2 · 2022-01-19

Diff | Milestone

Fixed

  • Skipped Background steps not failing in writer::FailOnSkipped. (#199, #198)

0.11.1 · 2022-01-07

Diff | Milestone

Added

  • --fail-fast CLI option to runner::Basic. (#196)

Changed

  • Optimized runner::Basic to not wait the whole batch to complete before executing next Scenarios. (#195)

0.11.0 · 2022-01-03

Diff | Milestone

BC Breaks

  • Moved World type parameter of WriterExt trait to methods. (#160)
  • Renamed Normalized and Summarized Writers to Normalize and Summarize. (#162)
  • Removed writer::Basic Default impl and change writer::Basic::new() return type to writer::Normalize<writer::Basic>. (#162)
  • Bump up MSRV to 1.57 for better error reporting in const assertions. (cef3d480)
  • Switch to gherkin crate instead of gherkin_rust. (e2a41ab0)
  • Renamed @allow_skipped built-in tag to @allow.skipped. (#181)
  • Switched CLI to clap from structopt. (#188, #155)
  • Reworked verbose CLI option of writer::Basic: (#193, #192)
    • Removed long form.
    • Made -v default behavior (no additional output).
    • Made -vv additionally output World on failed steps.
    • Made -vvv additionally output docstrings (old behavior).

Added

  • Ability for step functions to return Result. (#151)
  • Arbitrary output for writer::Basic. (#147)
  • writer::JUnit (JUnit XML report) behind the output-junit feature flag. (#147)
  • writer::Json (Cucumber JSON format) behind the output-json feature flag. (#159)
  • writer::Tee for outputting to multiple terminating Writers simultaneously. (#160)
  • writer::discard::Arbitrary and writer::discard::Failure for providing no-op implementations of the corresponding Writer traits. (#160)
  • Inability to build invalid Writers pipelines:
    • writer::Normalized trait required for Writers in Cucumber running methods. (#162)
    • writer::NonTransforming trait required for writer::Repeat. (#162)
    • writer::Summarizable trait required for writer::Summarize. (#162)
  • 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 and Rule with Scenario when filtering with --tags CLI option. (#166)
  • writer::AssertNormalized forcing Normalized implementation. (#182)
  • cli::Colored trait for propagating Coloring to arbitrary Writers. (#189, #186)

Fixed

  • Template regex in Scenario Outline expansion from <(\S+)> to <([^>\s]+)>. (#163)
  • Multiple Examples in Scenario Outline. (#165, #164)
  • Docstring and name expansion in Scenario Outline. (#178, #172)
  • writer::Summarized ignoring Coloring options. (#189, #186)

0.10.2 · 2021-11-03

Diff | Milestone

Fixed

  • Multiple WorldInit derivers conflicting implementations in a single module. (#150)

0.10.1 · 2021-10-29

Diff | Milestone

Fixed

  • Console output hanging because of executing wrong Concurrent Scenarios. (#146)

0.10.0 · 2021-10-26

Diff | Milestone

BC Breaks

  • Renamed crate to cucumber.
  • Complete redesign: (#128)
    • Introduce new abstractions: Parser, Runner, Writer;
    • Provide reference implementations for those abstractions;
    • Enable macros feature by default.
  • Replaced #[given(step)], #[when(step)] and #[then(step)] function argument attributes with a single #[step]. (#128)
  • Made test callbacks first argument &mut World instead of World. (#128)
  • Made #[step] argument of step functions Step instead of StepContext again, while test callbacks still receive StepContext 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)

Added

  • 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).
  • timestamps Cargo feature that enables collecting of timestamps for all the happened events during tests execution (useful for Writers which format requires them) (#145).

0.9.0 · 2021-07-19

Diff

BC Breaks

  • The second parameter in the test callbacks is now a StepContext object, which contains the Step as a step field.

Added

  • Add before and after lifecycle functions to the Cucumber builder. These functions take a selector for determining when to run before or after, and a callback.

Fixed

  • Literal paths to .feature files will now work in the Cucumber builder.
  • Removed unnecessary internal Rc<T> usage.

0.8.4 · 2021-02-18

Diff

Added

  • language argument to Cucumber 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

Diff

Changed

  • Update t! macro to support specifying type of World argument in closure.

0.8.2 · 2021-01-30

Diff

Added

  • Re-export async_trait::async_trait and futures crate for convenience.
  • Update examples to use tokio.

0.8.1 · 2021-01-30

Diff

Added

0.8.0 · 2021-01-18

Diff

Added

Fixed

  • Filtering of tests by tag. (#67)
  • Removed unnecessary dependent traits from World trait.

0.7.3 · 2020-09-20

Diff

Fixed

0.7.2 · 2020-09-14

Diff

Added

  • Enforce UnwindSafe on async test types.

0.7.1 · 2020-09-09

Diff

Fixed

  • Issue with t! macro for unbraced blocks.

0.7.0 · 2020-09-07

Diff

BC Breaks

  • 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.

Added

  • A new builder approach has been implemented.
  • Support for asynchronous tests has been implemented — this is runtime agnostic.