All notable changes to this project will be documented in this file.
This project adheres to Semantic Versioning.
This document is formatted according to the principles of Keep A CHANGELOG.
Please visit cucumber/CONTRIBUTING.md for more info on how to contribute to Cucumber.
This is currently not consumed anywhere, but will become the building blocks for the future of cucumber formatters which we hope to begin migrating to in the start of 2026
- Fix crash when
Cucumber::Messages::Group#childrenisnil
10.2.0 - 2025-12-10
- Permit the latest version of the
cucumber-html-formatter(v22.0.0+) - Permit
cucumber-expressionsup to v19
10.1.1 - 2025-10-08
- Internal refactors to CCK testing code to better check that the message formatter responses are as expected
- Simplify
#attachby better checking the different use cases (base64 vs file path)
- Prevent messages (And any consuming formatters), from not handling unknown (base64), media types (#1796 luke-hill)
10.1.0 - 2025-08-20
- Updated
cucumber-compatibility-kitto v20 - Optimised
compatibilitytests (That use the CCK), so that tests run slightly more optimal (Creating less empty arrays)
- Fixed an issue where the html-formatter wasn't respecting the new structure for
StackTracecucumber messages (#1790 luke-hill)
10.0.0 - 2025-06-11
- Added dependencies that will no longer be part of the ruby stdlib (jeromeag)
- NB: This change has also facilitated a tweak to some output messages to include new fields such as
testRunStartedIdfor full changes and expectations of what will be new check the messages (luke-hill) - Updated
cucumber-compatibility-kitto v18 - Changed compatibility testing to fully lean on external assets instead of duplicating them (luke-hill)
- Permit usage of latest versions of all cucumber internal gems
- The auto-generation of all placeholder
pendingsteps has been refactored (There should be no visible changes but the code is now refactored to work using newer ruby standards) - The
#text?method for checking Differences in multi-line text is now deprecated (Users should lean on an appropriate testing library for this) Cucumber.use_legacy_autoloaderthat was intended as a stop-gap for v4/v5 is now deprecated (People that need to rely on procedural loading / reloading of files should use method invocations) (luke-hill)- The backtrace filtering logic has been changed (There should be no visible changes but the code is now refactored to use newer, less procedural ruby)
- Fixed an issue where a change to one example in compatibility testing wasn't fully adhered to (luke-hill)
- Fixed Ruby 3.4+ issue where error backtraces weren't being formatted. (#1771 orien)
- Fix some problematic specs that were leaking state and showcasing an issue on JRuby (#1783 luke-hill)
StepDefinitionLightassociated methods. The class itself is present but deprecatedWebrickProc handling aliases that were long redundant- Associated legacy scripts for updating dependencies that are no longer used
- Tag Expressions using legacy syntax that were handled / sanitized are no longer done so (This applies to both regular usage and internal testing)
- Removed support for Ruby 2.7 and 3.0 (Minimum ruby is now 3.1) (luke-hill)
- Unindentation support for snippet generator / tests (Heredocs are much better now) (luke-hill)
9.2.1 - 2025-01-12
- Fixed an issue for Ruby 3.4+ where a default hash instantiation was being picked up as keyword arguments (Jon Rowe)
9.2.0 - 2024-03-19
- Updated cucumber dependencies (Specifically cucumber-core) (luke-hill)
- Uncoupled a lot of dual-responsibility complexity in HTTP classes (Specifically the builders/parsers) (#1752 luke-hill)
- Some legacy JRuby local testing profiles are now removed (luke-hill)
9.1.2 - 2024-01-23
- Moved all CCK step definition/miscellaneous file logic from CCK gem to this repo. All logic contained in compatibility (luke-hill)
- Cleared up a few Layout/Linting cop offenses (#1750 luke-hill)
- Fix a situation whereby the step definition message will omit the parameter-type name when it cannot be inferred (This fixes an issue in cucumber-wire when passing legacy steps down the wire) (#1746 luke-hill)
9.1.1 - 2024-01-04
- Updated dependencies to slightly more permissive / up to date versions (luke-hill)
- Fixed most of the
Layoutcop offenses (luke-hill)
- The sample sinatra tests are no longer used in internal testing (This removes a bunch of superfluous dev gems) (#1743 luke-hill)
- Removed all references to autotest as this is an ancient plugin that is not correctly integrated
9.1.0 - 2023-11-14
- First iteration to tidy up approximately 40% of the manual fix cops (#1739 #1740 #1741 #1742 luke-hill)
- Removed a bunch of example files / sample projects from ancient projects no longer viable (#1740 luke-hill)
- When a
testStepResultis of typeFAILEDwe now pass in a new (Exception), message property (#1738 luke-hill) ParameterTypemessage now contains a new (sourceReference), property (This contains a uri string and aLocationmessage -> for where the ParameterTypetransformeris located) (#1738 luke-hill)#attachnow can take an optional filename parameter which will rename attachments like PDF's (#1738 luke-hill)
- Clear up a couple of tiny "nuances" that hide lots of issues when running local vs remote (Primarily CCK tests should always be runnable) (#1738 luke-hill)
- Removed a variety of overrides / hacks for travis CI (No longer in use) (#1738 luke-hill)
- Removed some legacy rspec pending flags present since cucumber 1.x (#1738 luke-hill)
9.0.2 - 2023-09-11
- Began to tidy up (Cleared some AutoFix cops), and organise rubocop tech-debt in repo (This introduced new rubocop sub-gems) (#1716 luke-hill)
- Gem update. Update rubocop gems to latest and increase minimum version of some cucumber sub-gems (#1732 luke-hill)
- Rubocop update. Massively overhauled the cucumber style / rubocop expectations and began to tackle some long-standing tech-debt (#1733 luke-hill)
- First couple of passes of tidying up approximately 15% of the autofix cops (#1736 #1737 luke-hill)
- Removed a whole bunch of miscellaneous script files that are no longer used (Either in development or usage) (#1721 luke-hill)
9.0.1 - 2023-09-01
9.0.0 - 2023-08-31
- Add option
--retry-total(#1669)
- Update dependency cucumber-gherkin to v26 (#1688)
- Replace dependency mime-types with mini_mime (#1695)
- Removed support for Ruby 2.6 and JRuby 9.3 (#1699)
8.0.0 - 2022-05-19
- Add a WARNING message when using a space-separated string with cucumber_opts (#1624)
- Add support for TruffleRuby (#1612 gogainda)
- Add support for named hooks (#1636)
- Use
required_rubygems_versioninstead ofrubygems_version(#1629) - Suppress RSspec deprecation warnings(#1631)
8.0.0.RC.1 - 2022-01-19
- Replace dependency cucumber-create-meta with the new cucumber-ci-environment (#1601)
- In
DataTable#map_column, Changed thestrictargument into a keyword argument. See upgrading notes for 8.0.0.md (#1594) - Added Ruby 3.1 (#1607)
- Fix TestRunFinished success property in html formatter and all formatters based on the messages: it now returns true if the run has passed (#1606)
- Fix usage of namespaced modules across multiple scenarios (#1603)
- Do not serialize Messages::Hook#tag_expression if it is empty (#1579)
- JSON Formatter uses "pretty" output format (#1580)
- Fixed JSON Formatter "end of background" detection (#1580)
- Fixed JSON Formatter expansion of Scenario Outline templates in Doc Strings (#1580)
- Removed usage of
evalinCucumber::Term::ANSIColorandCucumber::Formatter::ANSIColor(#1589) - Fixed
DataTable#map_headerswhen headers have the same prefix (#1598)
AfterConfigurationhas been removed. Please useInstallPluginorBeforeAllinstead. See upgrading notes for 8.0.0.md to update your code accordingly. (#1591)- The built-in Wire protocol The Wire protocol is still officially supported, but as an optional plugin rather than a built-in feature. See upgrading notes for 8.0.0.md to update your code accordingly.
- Removed former unused
stdinargument fromCli::Main. That may impact your code if you use cucumber APICucumber::Cli::Main. See upgrading notes for 8.0.0.md. (#1588) - Removed
DataTable#map_column!andDataTable#map_headers!. Those methods were error-prone and planned to be removed a long time ago. You can use the immutable versions instead:DataTable#map_columnandDataTable#map_headers. (#1590) - Removed support for Ruby 2.5 and JRuby 9.2.