Recommended Free Tools
Cucumber-JVM 6.0.0 added Gherkin Rule support, introduced a message-based report formatter, replaced the HTML formatter, removed the combined cucumber.options setting, and changed test-run defaults. Most notably for upgrades, pending and undefined steps now fail by default. The official release notes describe the move from v5 as relatively straightforward, but recommend upgrading to v5.7.0 first and removing deprecated features before moving to v6.0.0.
What changed in Cucumber-JVM 6.0.0?
| Area | Change in v6.0.0 | What to check |
|---|---|---|
| Gherkin | Support for the Rule keyword |
Whether your feature files use rules to group scenarios around a business rule |
| Reports | A message-based formatter was introduced; the HTML formatter was replaced with an improved single-file report | Formatter configuration and output paths |
| Configuration | The combined cucumber.options setting was removed |
Replace it with individual Cucumber properties |
| Spring | Spring test context setup now uses a dedicated configuration class | Remove reliance on cucumber.xml or context annotations on step-definition classes |
| Test outcomes | Strict behavior is the default | Pending and undefined steps fail the test or build |
| Console output | JUnit and TestNG no longer print progress and summary output by default | Add the progress and summary plugins if you want them |
The official Cucumber-JVM v6.0.0 release notes describe these changes. They are the notable changes highlighted for this release, not a complete list of every 6.x patch change; consult the project changelog and the release notes for the exact integration versions you use.
Gherkin features can use Rule
Version 6 added support for Gherkin’s Rule keyword. A rule lets a feature describe a business rule and group the examples that illustrate it. This connects Cucumber-JVM feature files with the example-mapping practice referenced in the release notes.
For example, a feature can group scenarios under a rule such as “A customer cannot withdraw more than the available balance.” Review feature files where a rule gives useful context to several related scenarios; this is a syntax capability, not a requirement to restructure every feature.
#1 Best Overall
Message and HTML report output changed
Message formatter
Cucumber-JVM introduced a message-based formatter to address limitations in the previous JSON formatter: it lacked a schema, used very high memory, and did not provide consistent output across Cucumber implementations. The release notes give this configuration example:
@CucumberOptions(plugin = "message:target/cucumber-report.ndjson")
The notes describe message output as intended eventually to replace the existing JSON formatter. That does not mean JSON was already removed or replaced in every use in v6.0.0; keep your current JSON consumers in mind when deciding whether to switch.
HTML formatter
The old HTML formatter was replaced with an improved formatter that emits the report as one file. Use an .html output path, for example:
html:target/cucumber-report.html
Check scripts and CI jobs that collect or publish reports, since they need to point to the actual HTML file produced by your configured formatter.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorsReplace cucumber.options with individual properties
The single cucumber.options property was removed. The release notes explain that intermediate tools could interpret its combined arguments, making the setting complicated to use reliably. Configure individual properties instead. Their example is:
-Dcucumber.ansi-colors.disabled=true -Dcucumber.filter.tags="not @ignored"
These options disable ANSI colors and filter out scenarios tagged @ignored. Confirm property names and supported options against the Cucumber integration and build setup in your project; do not assume every downstream build integration accepts identical configuration in the same place.
Configure Cucumber Spring with a dedicated class
The preferred Spring setup in v6 uses a dedicated class annotated with @CucumberContextConfiguration and a Spring context annotation, such as @ContextConfiguration or @SpringBootTest. The release notes state that cucumber.xml and context configuration placed on step-definition classes are no longer supported.
As you migrate, locate the Spring test configuration and move the context annotations to a dedicated configuration class. Verify that the class is discovered by your project’s Cucumber Spring setup; the exact context annotation depends on whether the suite uses a conventional Spring test context or Spring Boot.
Pending and undefined steps fail by default
Strict behavior became the default in v6.0.0: steps with PENDING or UNDEFINED status cause test or build failure. A suite that previously completed despite unfinished steps may therefore start failing after the upgrade.
Before changing the version, identify intentionally incomplete features and scenarios. The release notes suggest using tags and tag filters to separate work in progress from the scenarios included in a given run. Decide explicitly whether those scenarios belong in the run rather than relying on the prior default behavior.
Restore JUnit and TestNG console output if needed
JUnit and TestNG stopped printing the progress indicator and summary by default. If your developers or build logs rely on those outputs, add the corresponding plugins:
progress
summary
Configure them alongside your other plugins using the mechanism supported by your integration. Build integrations can differ, so validate the result in the runner and CI environment you actually use.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Upgrade checklist for a v5 project
The official Cucumber upgrading guide supplies general semantic-versioning context and directs readers to project changelogs and release notes. For the v6.0.0 changes described here, a practical sequence is:
- Prepare the v5 suite. Move to v5.7.0 first, as the v6.0.0 release notes advise, and stop using deprecated features.
- Review unfinished steps. Identify pending and undefined steps, then decide which should be implemented and which should be excluded from particular runs using tags and filters.
- Replace combined options. Remove
cucumber.optionsand set each option separately, checking the supported property names for your runner. - Update reports. Give the HTML formatter an
.htmloutput path. Assess whether consumers of the prior JSON output can move to message output. - Check plugin expectations. Add
progressand/orsummaryif the default JUnit or TestNG console output no longer meets your needs. - Repair Spring context setup. Use a dedicated
@CucumberContextConfigurationclass with the relevant Spring context annotation; remove reliance on unsupported legacy locations. - Run the actual build integrations. Test the suite through the same runner and CI configuration used by the project, and consult the full changelog for the precise versions being upgraded.
ScreenshotNeo: an unrelated tool for website captures
ScreenshotNeo is a website screenshot API and MCP server for developers; it is not part of Cucumber-JVM and is not needed to upgrade a Cucumber suite. If your test workflow separately needs website screenshots, see ScreenshotNeo for an API that removes consent banners, popups, and chat widgets before capture, and bills only clean shots. Its MCP server offers screenshot tools for AI agents.
For Cucumber-JVM 6.0.0 changes and migration behavior, use the official release note and upgrading guide linked above.
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.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.

