MCPcopy Index your code
hub / github.com/cucumber/cucumber-jvm

github.com/cucumber/cucumber-jvm @v7.34.4

Chat with this repo
repository ↗ · DeepWiki ↗ · release v7.34.4 ↗ · + Follow
6,677 symbols 24,107 edges 818 files 341 documented · 5% updated 2d agov7.34.4 · 2026-06-26★ 2,82447 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Cucumber logo Cucumber JVM

Automated tests in plain language, for the JVM

Maven Central Build Status OpenCollective OpenCollective #StandWithUkraine

Cucumber is a tool for running automated tests written in plain language. Because they're written in plain language, they can be read by anyone on your team. Because they can be read by anyone, you can use them to help improve communication, collaboration and trust on your team.

This is the Java implementation of Cucumber. You can run it with the tool of your choice - including with popular dependency injection containers.

Getting started

Upgrading?

Migration instructions from previous major versions and a long form explanation of noteworthy changes can be found in the release-notes archive

The changes for the current major version can be found in the CHANGELOG.md.

Questions, Problems, Help needed?

Please ask on

Bugs and Feature requests

You can register bugs and feature requests in the GitHub Issue Tracker.

Please bear in mind that this project is almost entirely developed by volunteers. If you do not provide the implementation yourself (or pay someone to do it for you), the bug might never get fixed. If it is a serious bug, other people than you might care enough to provide a fix.

Contributing

If you'd like to contribute to the documentation, checkout cucumber/docs.cucumber.io otherwise see our CONTRIBUTING.md.

Extension points exported contracts — how you extend this code

InjectorSource (Interface)
An implementation of this interface is used to obtain an com.google.inject.Injector that is used to provide [12 implementers]
cucumber-guice/src/main/java/io/cucumber/guice/InjectorSource.java
EventListener (Interface)
Listens to pickle execution events. Can be used to implement reporters. When cucumber executes test in parallel or i [29 …
cucumber-plugin/src/main/java/io/cucumber/plugin/EventListener.java
TableTransformer (Interface)
Transforms a table row to an instance of T. @param the target type [10 implementers]
datatable/src/main/java/io/cucumber/datatable/TableTransformer.java
PickleWrapper (Interface)
The only purpose of this interface is to be able to provide a custom string representation, making TestNG reports look m [6 …
cucumber-testng/src/main/java/io/cucumber/testng/PickleWrapper.java
ScenarioScoped (Interface)
Marks a glue class as being scenario scoped. Instances of scenario scoped glue can not be used between scenarios and [23 …
cucumber-core/src/main/java/io/cucumber/core/backend/ScenarioScoped.java
LambdaGlueRegistry (Interface)
(no doc) [7 implementers]
cucumber-java8/src/main/java/io/cucumber/java8/LambdaGlueRegistry.java
DocStringConverter (Interface)
(no doc) [10 implementers]
docstring/src/main/java/io/cucumber/docstring/DocString.java
GenericReturnType (Interface)
(no doc) [15 implementers]
cucumber-java/src/test/java/io/cucumber/java/MethodScannerTest.java

Core symbols most depended-on inside this repo

is
called by 747
cucumber-plugin/src/main/java/io/cucumber/plugin/event/Status.java
get
called by 682
cucumber-core/src/main/java/io/cucumber/core/plugin/Formats.java
asList
called by 319
datatable/src/main/java/io/cucumber/datatable/DataTable.java
map
called by 270
cucumber-plugin/src/main/java/io/cucumber/plugin/event/Node.java
parse
called by 261
cucumber-gherkin/src/main/java/io/cucumber/core/gherkin/FeatureParser.java
create
called by 192
cucumber-core/src/main/java/io/cucumber/core/backend/BackendProviderService.java
send
called by 185
cucumber-core/src/main/java/io/cucumber/core/eventbus/EventBus.java
of
called by 149
cucumber-junit-platform-engine/src/main/java/io/cucumber/junit/platform/engine/FeatureSource.java

Shape

Method 4,926
Class 917
Function 674
Interface 143
Enum 17

Languages

Java90%
TypeScript10%
Kotlin1%

Modules by API surface

cucumber-core/src/main/resources/io/cucumber/core/plugin/timeline/vis-timeline-graph2d.min.js586 symbols
datatable/src/test/java/io/cucumber/datatable/DataTableTypeRegistryTableConverterTest.java115 symbols
cucumber-core/src/test/java/io/cucumber/core/runner/CachingGlueTest.java92 symbols
cucumber-core/src/main/resources/io/cucumber/core/plugin/timeline/jquery-3.5.1.min.js83 symbols
cucumber-core/src/test/java/io/cucumber/core/options/CucumberOptionsAnnotationParserTest.java69 symbols
cucumber-junit-platform-engine/src/test/java/io/cucumber/junit/platform/engine/CucumberTestEngineTest.java67 symbols
datatable/src/test/java/io/cucumber/datatable/DataTableTest.java65 symbols
cucumber-core/src/test/java/io/cucumber/core/options/CommandlineOptionsParserTest.java63 symbols
datatable/src/main/java/io/cucumber/datatable/DataTable.java62 symbols
datatable/src/main/java/io/cucumber/datatable/TypeFactory.java52 symbols
datatable/src/main/java/io/cucumber/datatable/DataTableType.java45 symbols
cucumber-core/src/test/java/io/cucumber/core/runtime/RuntimeTest.java45 symbols

Datastores touched

(mysql)Database · 1 repos
mydbDatabase · 1 repos

For agents

$ claude mcp add cucumber-jvm \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact