cucumber/common logo

cucumber/common

Free

A monorepo of common components - building blocks for implementing Cucumber in various languages.

FreeFree tier
Type
Open Source

About cucumber/common

Cucumber Common Components is a monorepo containing polyglot repositories for several libraries that make up the Cucumber BDD framework. It hosts multiple language implementations of the same library together, including cucumber-expressions (pattern-matching for Gherkin steps), tag-expressions (parsing tag selection queries), gherkin (parser for Gherkin feature files), messages (JSON message protocol), query (query API for messages), and gherkin-utils (API for querying parsed Gherkin documents). This repository also serves as a central place for issues that affect multiple Cucumber repositories, streamlining cross-cutting bug reports and feature requests.

Key Features

Polyglot repositories: multiple language implementations of the same library in one repo
cucumber-expressions: pattern-matching for Gherkin steps
tag-expressions: parsing tag selection queries
gherkin: parser for Gherkin feature files
messages: JSON message protocol for Cucumber communication
query: API for querying message data
gherkin-utils: API for querying parsed Gherkin documents
Central issue tracker for cross-repository bugs and features

Pros & Cons

Pros
  • Open source with a large community (3.4k stars, 681 forks)
  • Polyglot design reduces duplication across language implementations
  • Well-organized monorepo with clear library separation
  • Active maintenance with code of conduct and contributing guidelines
  • Part of the widely adopted Cucumber BDD ecosystem
Cons
  • Limited to Cucumber-related components, not a general-purpose tool
  • Requires familiarity with Cucumber and BDD concepts to be useful
  • Polyglot repo can be complex for newcomers due to multiple languages

Best For

Implementing Cucumber in new programming languagesBuilding BDD test frameworks using Gherkin parsingPattern matching for step definitionsFiltering scenarios by tags in test executionInter-process communication via JSON messagesAnalyzing parsed Gherkin documents programmaticallyCollaborating on Cucumber infrastructure improvements

FAQ

What is the purpose of the cucumber/common repository?
It is a monorepo for common Cucumber libraries (like cucumber-expressions, gherkin, messages) that are implemented in multiple languages. It also serves as a central place to raise issues that affect multiple Cucumber repositories.
How can I contribute to this repository?
The repository includes a CONTRIBUTING.md file and a CODE_OF_CONDUCT.md. You can fork the repo, make changes, and submit pull requests following the guidelines.
Which libraries are included in this monorepo?
Included libraries are cucumber-expressions, tag-expressions, gherkin, messages, query, and gherkin-utils. Each has its own language-specific implementations within the repo.