Recommended Free Tools
Cucumber-JVM v6.0.0 added Gherkin Rule support, introduced message-format reports, changed HTML reporting, removed cucumber.options, and made pending or undefined steps fail by default. It also changed Cucumber Spring setup and stopped JUnit and TestNG integrations from printing progress and summary output by default. The official release notes describe upgrading from v5 as relatively straightforward, but recommend moving to v5.7.0 first and eliminating deprecated features before upgrading.
Gherkin gained the Rule keyword
Version 6 added support for Gherkin’s Rule keyword. A rule groups scenarios under a business rule, making the relationship between a requirement and its examples clearer. This connects Cucumber-JVM to the example-mapping practice described in the v6.0.0 release notes.
As an Amazon Associate I earn from qualifying purchases.
Existing feature files do not need to be rewritten simply because Rule is now supported. Teams can use it when the structure helps express the rules and examples in a feature.
Message reports were introduced; JSON was not immediately removed
Cucumber-JVM v6 introduced a message-based formatter in response to limitations in the earlier JSON formatter: JSON had no schema, could use very high memory, and did not produce consistent output across Cucumber implementations. The release notes describe message output as intended eventually to replace the existing JSON formatter; they do not say that JSON was already replaced in every use in v6.0.0.
To write a message report, configure the plugin with an NDJSON output path:
@CucumberOptions(plugin = "message:target/cucumber-report.ndjson")
Check the configuration mechanism used by your runner or build integration before applying this annotation example; downstream integrations may configure plugins differently. If a reporting consumer depends on the previous JSON format, verify its support for message output before switching.
HTML reports became a single-file output
The old HTML formatter was replaced with an improved formatter that emits the report as one file. Set the output path to an .html file, for example:
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →html:target/cucumber-report.html
Review scripts and CI artifact rules that expect a directory or a differently named output. Keep the path and the artifact collection configuration aligned.
cucumber.options was removed
Instead of the combined cucumber.options property, v6 expects individual properties. The release notes explain that intermediate tools could misinterpret the combined arguments. Their examples use separate JVM system properties:
-Dcucumber.ansi-colors.disabled=true
-Dcucumber.filter.tags="not @ignored"
Confirm the exact supported property names for the runner and Cucumber components in your project. Do not assume every downstream build integration passes JVM properties in the same way; update the relevant test task or launch configuration and verify that the filters take effect.
Pending and undefined steps now fail by default
Strict behavior became the default in v6. A pending step (PENDING) or undefined step (UNDEFINED) therefore makes the test or build fail. This can expose unfinished work that was previously allowed to leave a run green.
If a suite intentionally contains work in progress, use tags and tag filters to isolate the features or scenarios that are not yet implemented. Treat that as an explicit test-selection decision rather than relying on the old default behavior to pass incomplete scenarios.
Cucumber Spring requires explicit context configuration
The preferred Spring setup is a dedicated configuration class annotated with @CucumberContextConfiguration and a Spring context annotation such as @ContextConfiguration or @SpringBootTest. The former cucumber.xml fallback is no longer supported, nor is putting @ContextConfiguration on step-definition classes.
Rank #4
Move context configuration into the dedicated class and remove reliance on either unsupported arrangement. Then run the relevant scenarios to confirm that the intended Spring context is loaded.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.JUnit and TestNG console output changed
The JUnit and TestNG integrations stopped printing the progress indicator and summary by default. If your build logs or CI workflow depend on those lines, configure the progress and summary plugins explicitly. For example, include those plugin names in the runner’s plugin configuration, using the configuration method supported by your integration.
A practical v5-to-v6 migration sequence
- Move to v5.7.0 first. The official v6.0.0 release notes recommend this intermediate step.
- Remove deprecated-feature usage. Address deprecations before changing the major version so that migration failures are easier to diagnose.
- Replace
cucumber.options. Set individual properties through the relevant runner or build configuration, then check that tag filters and other settings are actually applied. - Check suite outcomes. Identify pending and undefined steps, decide how unfinished scenarios should be selected, and update expectations for builds that now fail on them.
- Update report configuration. Point HTML output to an
.htmlfile; assess whether consumers can use the message formatter before changing from JSON. - Review Spring configuration. Use the dedicated
@CucumberContextConfigurationclass with a supported Spring context annotation. - Restore expected console plugins if needed. Add
progressandsummarywhere logs or CI parsing rely on them. - Run the project’s integration tests. Validate the actual runner and build integration versions in use; the release notes do not imply that every downstream integration shares identical configuration.
Scope of the v6.0.0 changes
These are notable changes called out for Cucumber-JVM v6.0.0, not an exhaustive inventory of every patch in the 6.x line. The release notes direct readers to the changelog for the complete list. Before a production migration, check the full changelog and the versions of the specific Cucumber integrations in your build. This article concerns v6.0.0 and does not assess later releases.
A separate tool for capturing browser output
Cucumber-JVM handles test execution and reporting; it is not a website screenshot API. If you separately need clean captures of web pages for documentation or debugging, ScreenshotNeo is a separate option: it removes supported consent banners, newsletter popups and chat widgets before capture, and only clean shots are billed. Its MCP server offers screenshot tools to AI agents.
ScreenshotNeo includes 1,000 screenshots per month on its free plan with no card required; paid plans start at $5 for 3,000. Sign up for ScreenshotNeo’s free plan.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →




