PackageTrack
Sign in Get early access

cucumber

Cucumber testing framework for Rust, with async support. Fully native, no external test runners or dependencies.

0.23.0 16M downloads/mo #2353 most downloaded on crates.io cucumber-rs/cucumber

What this package is like to depend on

Last release 4 months ago

23 Apr 2026

Ships unpredictably

gaps range from 8 days to 1.5 years

Most releases are documented

notes for 31 of 39 stable releases

Nothing withdrawn

no release was ever pulled

10 years old

40 releases · first in 2016

3 releases in the last 12 months

see the full history below

Release timeline

40 releases · Mar 2016 to Apr 2026
2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 40
  1. 0.23.0 23 Apr 2026
    Release notes Open source →
    Release notes

    Diff | Milestone

    BC Breaks

    • Fixed precedence of operations in tag expressions to align with upstream. (gherkin#52, gherkin#51)

    Changed

    • Upgraded [gherkin] crate to 0.16 version. (0d544772)
    • Allowed And-like and But-like keywords at the beginning of Scenario, automatically considering them as Given-type steps. (gherkin#53)
    Open source →
  2. 0.22.1 23 Dec 2025
    Release notes Open source →
    Release notes

    Diff | Milestone

    Fixed

    • Incorrectly disallowed spaces inside placeholders for Examples. (#388, #387)
    Open source →
  3. 0.22.0 12 Dec 2025
    Release notes Open source →
    Release notes

    Diff | Milestone

    BC Breaks

    • Bumped up [MSRV] to 1.88 to get rid of once_cell crate, for #[expect] attribute usage, and because of migration to 2024 edition. (4010c1ad, f1307038, b46930c3, 9705253b, 0c7dfc3c, a4cbd3d2)
    • Replaced Arc with PartialEq/Hash pointer-optimized Source in events: (#352)
      • Source<gherkin::Feature> in event::Cucumber::Feature.
      • Source<gherkin::Rule> in event::Feature::Rule.
      • Source<gherkin::Scenario> in event::Feature::Scenario and event::Rule::Scenario.
      • Source<gherkin::Step> in event::Scenario::Background and event::Scenario::Step.
    • Made non-const the following constructor functions for input type polymorphism: (#352)
      • event::Cucumber::feature_started() and event::Cucumber::feature_finished().
      • event::Cucumber::rule_started() and event::Cucumber::rule_finished().
      • event::Scenario::step_started(), event::Scenario::step_passed() and event::Scenario::step_skipped().
      • event::Scenario::background_step_started(), event::Scenario::background_step_passed() and event::Scenario::background_step_skipped().
    • Kept only currently executed row of Examples table in expanded Scenario Outlines. (#371, #369)

    Added

    • CUCUMBER_FILTER_TAGS environment variable support. (#372)

    Fixed

    • Performance degradation on large .feature files. (#352, #331)
    • clippy::trivial_regex lint triggering on #[given]/#[when]/#[then] steps without regular expression. (81acba84, #384)
    Open source →
  4. 0.21.1 16 Jun 2024
    Release notes Open source →
    Release notes

    Diff | Milestone

    Fixed

    • Wrong case of statuses reported in writer::Json. (#335)
    Open source →
  5. 0.21.0 22 Apr 2024
    Release notes Open source →
    Release notes

    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)
    Open source →
  6. 0.20.2 04 Dec 2023
    Release notes Open source →
    Release notes

    Diff | Milestone

    Fixed

    • Ignored verbosity when printing World on hook/background step failure. (#313)
    Open source →
  7. 0.20.1 16 Oct 2023
    Release notes Open source →
    Release notes

    Diff | Milestone

    Fixed

    • Incorrect terminal width detection when its height is low. (#298)
    • Incorrect terminal lines clearing in interactive mode. (#300, #302, #299)
    Open source →
  8. 0.20.0 10 Jul 2023
    Release notes Open source →
    Release notes

    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)
    Open source →
  9. 0.19.1 29 Dec 2022
    Release notes Open source →
    Release notes

    Diff | Milestone

    Fixed

    • Using autodetect for colors on color=always|never CLI options. (#253)
    Open source →
  10. 0.19.0 16 Dec 2022
    Release notes Open source →
    Release notes

    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)
    Open source →
  11. 0.18.0 07 Dec 2022
    Release notes

    Diff | Milestone

    BC Breaks

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

    Fixed

    • Not panicking on fail_on_skipped() with retries. (#250, #249)
    Open source →
  12. 0.17.0 23 Nov 2022
    Release notes

    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)
    Open source →
  13. 0.16.0 09 Nov 2022
    Release notes

    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)
    Open source →
  14. 0.15.3 01 Nov 2022
    Release notes

    Diff | Milestone

    Added

    • Clone implementations to all public types where possible. (#238)
    Open source →
  15. 0.15.2 25 Oct 2022
    Release notes

    Diff | Milestone

    Changed

    • Upgraded [gherkin] crate to 0.13 version. (4cad49f8)

    Fixed

    Open source →
  16. 0.15.1 12 Oct 2022
    Release notes

    Diff | Milestone

    Fixed

    Open source →
  17. 0.15.0 05 Oct 2022
    Release notes

    Diff | Milestone

    BC Breaks

    • Upgraded [clap] crate to 4.0 version. (#230)
    Open source →
  18. 0.14.2 19 Sep 2022
    Release notes

    Diff

    Fixed

    • #[derive(World)] macro being unhygienic regarding custom Result types. (186af8b1)
    Open source →
  19. 0.14.1 12 Sep 2022
    Release notes

    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

    Open source →
  20. 0.14.0 08 Sep 2022
    Release notes

    Diff | Milestone

    BC Breaks

    • Bumped up [MSRV] to 1.62 for more clever support of [Cargo feature]s 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)
    Open source →
  21. 0.13.0 29 Mar 2022
    Release notes

    Diff | Milestone

    BC Breaks

    • Upgraded [gherkin] crate to 0.12 version. (#211)
    Open source →
  22. 0.12.2 28 Mar 2022
    Release notes

    Diff | Milestone

    Changed

    Open source →
  23. 0.12.1 09 Mar 2022
    Release notes

    Diff | Milestone

    Security updated

    Open source →
  24. 0.12.0 10 Feb 2022
    Release notes

    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

    Open source →
  25. 0.11.3 31 Jan 2022
    Release notes

    Diff | Milestone

    Fixed

    • parser::Basic skipping files named .feature. (#201)
    Open source →
  26. 0.11.2 19 Jan 2022
    Release notes

    Diff | Milestone

    Fixed

    • Skipped Background steps not failing in writer::FailOnSkipped. (#199, #198)
    Open source →
  27. 0.11.1 07 Jan 2022
    Release notes

    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)
    Open source →
  28. 0.11.0 03 Jan 2022
    Release notes

    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)
    Open source →
  29. 0.11.0-rc.1 28 Dec 2021 pre-release

    Nothing published for this version

  30. 0.10.2 03 Nov 2021
    Release notes

    Diff | Milestone

    Fixed

    • Multiple WorldInit derivers conflicting implementations in a single module. (#150)
    Open source →
  31. 0.10.1 29 Oct 2021
    Release notes

    Diff | Milestone

    Fixed

    • Console output hanging because of executing wrong Concurrent Scenarios. (#146)
    Open source →
  32. 0.10.0 26 Oct 2021
    Release notes

    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).
    Open source →
  33. 0.3.1 28 Sep 2016

    Nothing published for this version

  34. 0.3.0 05 Sep 2016

    Nothing published for this version

  35. 0.2.4 25 Aug 2016

    Nothing published for this version

  36. 0.2.3 16 Aug 2016

    Nothing published for this version

  37. 0.1.3 12 Jul 2016

    Nothing published for this version

  38. 0.1.2 13 Apr 2016

    Nothing published for this version

  39. 0.1.1 01 Apr 2016

    Nothing published for this version

  40. 0.1.0 29 Mar 2016

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive