Cucumber logo

Cucumber

Cucumber is an open-source Behavior Driven Development (BDD) tool for running automated tests written in plain language using the Gherkin syntax. It enables collaboration between technical and non-technical team members by expressing executable specifications as Given/When/Then scenarios. Cucumber has implementations for many languages (JVM, JavaScript, Ruby, .NET, Python, Go, Rust) and a shared message protocol that connects parsers, runners, and reporters.

5 APIs 0 Features
AutomationBDDBehavior Driven DevelopmentGherkinOpen SourceQuality AssuranceTest FrameworkTesting

APIs

Cucumber JVM

Java/JVM implementation of Cucumber supporting Java, Kotlin, Scala, and other JVM languages. Distributed via Maven Central under the io.cucumber group.

Cucumber.js

JavaScript/Node.js implementation of Cucumber for running BDD tests in Node and the browser. Distributed as @cucumber/cucumber on npm.

Cucumber Ruby

Ruby implementation of Cucumber, the original Cucumber project. Distributed as the cucumber gem on RubyGems.

Gherkin

Gherkin is the language used to write Cucumber feature files. Parsers are published per language and emit Cucumber Messages that downstream tools consume.

Cucumber Messages

Protocol-buffer / JSON Schema specification of the messages exchanged between Cucumber components (parsers, runners, formatters). Implemented across all language ports for consi...

Semantic Vocabularies

Cucumber Context

23 classes · 2 properties

JSON-LD

Resources

🔗
Website
Website
🔗
Documentation
Documentation
🔗
Reference
Reference
🔗
School
School
🔧
Tools
Tools
👥
GitHubOrganization
GitHubOrganization
🔗
X
X
🔗
Slack
Slack
👥
YouTube
YouTube
🔗
JSONSchema
JSONSchema
🔗
JSONLDContext
JSONLDContext
🔗
Vocabulary
Vocabulary

Sources

apis.yml Raw ↑
aid: cucumber
url: https://raw.githubusercontent.com/api-evangelist/cucumber/refs/heads/main/apis.yml
x-type: opensource
name: Cucumber
description: >-
  Cucumber is an open-source Behavior Driven Development (BDD) tool for running
  automated tests written in plain language using the Gherkin syntax. It
  enables collaboration between technical and non-technical team members by
  expressing executable specifications as Given/When/Then scenarios. Cucumber
  has implementations for many languages (JVM, JavaScript, Ruby, .NET, Python,
  Go, Rust) and a shared message protocol that connects parsers, runners, and
  reporters.
image: https://kinlane-productions.s3.amazonaws.com/apis-json/apis-json-logo.jpg
tags:
  - Automation
  - BDD
  - Behavior Driven Development
  - Gherkin
  - Open Source
  - Quality Assurance
  - Test Framework
  - Testing
type: Index
specificationVersion: '0.19'
created: '2024-01-01'
modified: '2026-04-28'
apis:
  - aid: cucumber:cucumber-jvm
    name: Cucumber JVM
    description: >-
      Java/JVM implementation of Cucumber supporting Java, Kotlin, Scala, and
      other JVM languages. Distributed via Maven Central under the io.cucumber
      group.
    humanURL: https://github.com/cucumber/cucumber-jvm
    baseURL: https://github.com/cucumber/cucumber-jvm
    tags:
      - BDD
      - Java
      - JVM
      - Kotlin
      - Scala
      - Testing
    properties:
      - type: GitHubRepository
        url: https://github.com/cucumber/cucumber-jvm
      - type: Documentation
        url: https://cucumber.io/docs/cucumber/
      - type: PackageIndex
        url: https://search.maven.org/search?q=g:io.cucumber
  - aid: cucumber:cucumber-js
    name: Cucumber.js
    description: >-
      JavaScript/Node.js implementation of Cucumber for running BDD tests in
      Node and the browser. Distributed as @cucumber/cucumber on npm.
    humanURL: https://github.com/cucumber/cucumber-js
    baseURL: https://github.com/cucumber/cucumber-js
    tags:
      - BDD
      - JavaScript
      - Node.js
      - Testing
    properties:
      - type: GitHubRepository
        url: https://github.com/cucumber/cucumber-js
      - type: Documentation
        url: https://github.com/cucumber/cucumber-js/blob/main/docs/
      - type: PackageIndex
        url: https://www.npmjs.com/package/@cucumber/cucumber
  - aid: cucumber:cucumber-ruby
    name: Cucumber Ruby
    description: >-
      Ruby implementation of Cucumber, the original Cucumber project. Distributed
      as the cucumber gem on RubyGems.
    humanURL: https://github.com/cucumber/cucumber-ruby
    baseURL: https://github.com/cucumber/cucumber-ruby
    tags:
      - BDD
      - Ruby
      - Testing
    properties:
      - type: GitHubRepository
        url: https://github.com/cucumber/cucumber-ruby
      - type: Documentation
        url: https://cucumber.io/docs/cucumber/
      - type: PackageIndex
        url: https://rubygems.org/gems/cucumber
  - aid: cucumber:gherkin
    name: Gherkin
    description: >-
      Gherkin is the language used to write Cucumber feature files. Parsers
      are published per language and emit Cucumber Messages that downstream
      tools consume.
    humanURL: https://github.com/cucumber/gherkin
    tags:
      - DSL
      - Gherkin
      - Parser
    properties:
      - type: GitHubRepository
        url: https://github.com/cucumber/gherkin
      - type: Reference
        url: https://cucumber.io/docs/gherkin/reference/
  - aid: cucumber:cucumber-messages
    name: Cucumber Messages
    description: >-
      Protocol-buffer / JSON Schema specification of the messages exchanged
      between Cucumber components (parsers, runners, formatters). Implemented
      across all language ports for consistent reporting.
    humanURL: https://github.com/cucumber/messages
    tags:
      - Protocol
      - JSON Schema
      - Messages
    properties:
      - type: GitHubRepository
        url: https://github.com/cucumber/messages
      - type: JSONSchema
        url: json-schema/cucumber-message-schema.json
features:
  - name: Plain-Language Specifications
    description: Tests written in Gherkin (Given/When/Then) readable by non-engineers.
  - name: Multi-Language Implementations
    description: First-class implementations for JVM, JavaScript, Ruby, .NET, Python, Go, and Rust.
  - name: Step Definitions and Cucumber Expressions
    description: Pattern-matched code bindings for Gherkin steps via regex or Cucumber Expressions.
  - name: Hooks and Tags
    description: Before/After hooks plus tag-driven scenario selection and configuration.
  - name: Cucumber Messages Protocol
    description: Shared message format for parsers, runners, and formatters across implementations.
  - name: Pluggable Formatters
    description: Built-in pretty, JSON, JUnit, and HTML reporters; third-party formatters supported.
  - name: Parallel Execution
    description: Implementations support parallel scenario execution.
  - name: CI Integration
    description: Reports plug into CI systems (GitHub Actions, Jenkins, GitLab) via JUnit/HTML output.
useCases:
  - name: Acceptance Testing
    description: Product, QA, and engineering collaborate on acceptance tests written in Gherkin.
  - name: Living Documentation
    description: Feature files double as up-to-date documentation of system behavior.
  - name: API Contract Testing
    description: BDD scenarios verify external API contracts and integrations.
  - name: Regression Suites
    description: Tagged scenarios provide selectable regression suites for CI.
  - name: Cross-Team Communication
    description: Bridges product, QA, and engineering with a shared specification language.
common:
  - type: Website
    url: https://cucumber.io
  - type: Documentation
    url: https://cucumber.io/docs
  - type: Reference
    url: https://cucumber.io/docs/gherkin/reference/
  - type: School
    url: https://school.cucumber.io
  - type: Tools
    url: https://cucumber.io/tools
  - type: GitHubOrganization
    url: https://github.com/cucumber
  - type: X
    url: https://twitter.com/cucumberbdd
  - type: Slack
    url: https://cucumber.io/community#slack
  - type: YouTube
    url: https://www.youtube.com/channel/UCVhQ7ulinkFAkUx3eNvzoEg
  - type: JSONSchema
    url: json-schema/cucumber-message-schema.json
  - type: JSONLDContext
    url: json-ld/cucumber-context.jsonld
  - type: Vocabulary
    url: vocabulary/cucumber-vocabulary.yml
maintainers:
  - FN: Kin Lane
    email: [email protected]