# cucumber/cucumber-js

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/cucumber-cucumber-js).**

5,350 stars · 1,109 forks · TypeScript · MIT

## Links

- GitHub: https://github.com/cucumber/cucumber-js
- Homepage: https://cucumber.io
- awesome-repositories: https://awesome-repositories.com/repository/cucumber-cucumber-js.md

## Topics

`cucumber` `javascript` `typescript`

## Description

Cucumber-js is a behavior-driven development tool and acceptance test automation framework for JavaScript. It serves as a test automation engine that allows users to define system behavior using human-readable scenarios, mapping plain-text steps to executable code to verify that software conforms to business rules and acceptance criteria.

The project utilizes a Gherkin-based framework to create executable system documentation in natural language. It supports multi-language localization for writing scenarios in various spoken languages and provides tools for scenario parameterization and business rule grouping to organize acceptance criteria.

The engine covers a broad range of testing capabilities, including end-to-end browser automation and API test automation for verifying web service endpoints. It manages test execution through parallel processing, infrastructure dependency mocking, and state-sharing dependency injection to maintain data continuity across steps.

Integration is supported for continuous delivery pipelines, allowing automated test suites to be executed via build servers to verify code changes before deployment.

## Tags

### Testing & Quality Assurance

- [Natural Language Test Generators](https://awesome-repositories.com/f/testing-quality-assurance/natural-language-test-generators.md) — Transforms human-readable Gherkin specifications into executable automated test scripts. ([source](https://cucumber.io/docs/))
- [Behavior Driven Development Frameworks](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/testing-frameworks/test-frameworks/test-levels-and-types/behavior-driven-development-frameworks.md) — Facilitates software development by mapping plain-language behavior specifications to executable JavaScript code.
- [Acceptance Testing](https://awesome-repositories.com/f/testing-quality-assurance/acceptance-testing.md) — Allows the definition of software behavior using natural language scenarios to verify business requirements.
- [Automation Frameworks](https://awesome-repositories.com/f/testing-quality-assurance/acceptance-testing/automation-frameworks.md) — Provides a framework for validating that software conforms to documented business rules via structured specifications.
- [Behavior-Driven Scenario Definitions](https://awesome-repositories.com/f/testing-quality-assurance/behavior-driven-scenario-definitions.md) — Supports writing automated tests using structured natural language describing initial contexts and expected outcomes. ([source](https://cucumber.io/docs/gherkin/reference))
- [Test Isolation](https://awesome-repositories.com/f/testing-quality-assurance/general-testing-utilities/test-isolation.md) — Ensures test execution environments remain independent to prevent side effects and cross-test interference. ([source](https://cucumber.io/docs/cucumber/))
- [JavaScript Test Frameworks](https://awesome-repositories.com/f/testing-quality-assurance/javascript-test-frameworks.md) — Serves as an engine for executing test scenarios against web services and browsers within JavaScript runtimes.
- [Natural Language Step Mapping](https://awesome-repositories.com/f/testing-quality-assurance/natural-language-step-mapping.md) — Matches plain-text scenario steps to executable JavaScript functions using regular expressions or custom patterns.
- [Gherkin-based Testing](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/testing-frameworks/end-to-end-testing-suites/end-to-end-testing-frameworks/gherkin-based-testing.md) — Implements a framework for writing executable specifications in Gherkin syntax and running them in JavaScript.
- [DSL Parsing](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/testing-frameworks/end-to-end-testing-suites/end-to-end-testing-frameworks/gherkin-based-testing/dsl-parsing.md) — Translates Gherkin natural language files into a structured format that the test runner can execute.
- [Outcome Assertions](https://awesome-repositories.com/f/testing-quality-assurance/validation-verification/input-validation/agent-input-and-output-validators/automated-assertion-validators/action-result-validators/outcome-assertions.md) — Verifies that the final result of a scenario execution matches the expected outcome. ([source](https://cucumber.io/docs/cucumber/))
- [API Testing](https://awesome-repositories.com/f/testing-quality-assurance/api-network-testing/api-testing.md) — Provides a framework to validate the functionality and integration of API endpoints using automated test scenarios. ([source](https://cucumber.io/docs/guides/))
- [Browser Automation](https://awesome-repositories.com/f/testing-quality-assurance/automation-interaction-tools/browser-automation.md) — Enables programmatic control of web browsers to simulate user behavior and verify interface functionality. ([source](https://cucumber.io/docs/guides/))
- [Plugin-Based Output Formats](https://awesome-repositories.com/f/testing-quality-assurance/general-testing-utilities/test-reporters/external-result-reporters/tap-result-exporters/test-report-exporters/plugin-based-output-formats.md) — Ships a plugin-based system for streaming test events to external formatters for various output reports.
- [Test Result Reporters](https://awesome-repositories.com/f/testing-quality-assurance/general-testing-utilities/test-reporters/test-result-reporters.md) — Generates formatted reports of test execution outcomes through various plugins and formatters. ([source](https://cucumber.io/docs/cucumber/))
- [Scenario Localization](https://awesome-repositories.com/f/testing-quality-assurance/multi-language-test-frameworks/scenario-localization.md) — Enables writing test scenarios in various spoken languages via file header configurations. ([source](https://cucumber.io/docs/gherkin/reference))
- [Parallel Test Execution](https://awesome-repositories.com/f/testing-quality-assurance/parallel-test-execution.md) — Distributes test scenarios across multiple parallel processes to reduce total runtime and isolate test state.
- [Scenario Parameterization](https://awesome-repositories.com/f/testing-quality-assurance/scenario-parameterization.md) — Supports running the same scenario multiple times using templates and input tables. ([source](https://cucumber.io/docs/gherkin/reference))
- [Scenario Prerequisite Steps](https://awesome-repositories.com/f/testing-quality-assurance/scenario-prerequisite-steps.md) — Defines prerequisite steps that run before every scenario within a feature to eliminate repetition. ([source](https://cucumber.io/docs/gherkin/reference))
- [Dependency Mocking](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/dependency-mocking.md) — Replaces real infrastructure dependencies with simulated versions to decouple tests from external systems. ([source](https://cucumber.io/docs/cucumber/))
- [End-to-End Testing](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/e2e-integration-testing/end-to-end-testing.md) — Automates complete user workflows across a browser to verify system-wide functional correctness.
- [Test Case Grouping](https://awesome-repositories.com/f/testing-quality-assurance/test-case-grouping.md) — Organizes related test cases under high-level feature descriptions to document acceptance criteria. ([source](https://cucumber.io/docs/gherkin/reference))

### Artificial Intelligence & ML

- [Pattern-Based Step Matching](https://awesome-repositories.com/f/artificial-intelligence-ml/step-based-schedulers/step-execution-engines/pattern-based-step-matching.md) — Identifies which code to execute for a plain-language step using custom expressions or regular expressions. ([source](https://cucumber.io/docs/faq))

### Development Tools & Productivity

- [Test Step Variable Propagation](https://awesome-repositories.com/f/development-tools-productivity/cross-command-variable-sharing/test-step-variable-propagation.md) — Manages state sharing and variable propagation between consecutive steps within a test scenario. ([source](https://cucumber.io/docs/faq))
- [Step Variable Extraction](https://awesome-repositories.com/f/development-tools-productivity/cross-command-variable-sharing/test-step-variable-propagation/step-variable-extraction.md) — Captures dynamic data from plain-language steps using expressions to pass them as arguments to code. ([source](https://cucumber.io/docs/cucumber/))

### Software Engineering & Architecture

- [Documentation-as-Code Systems](https://awesome-repositories.com/f/software-engineering-architecture/documentation-as-code-systems.md) — Implements a documentation-as-code system where natural language specifications serve as executable tests. ([source](https://cucumber.io/docs))
- [Lifecycle Hooks](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/extensibility/plugin-architectures/hook-event-orchestration/hook-resolution-lifecycles/lifecycle-hooks.md) — Implements configurable hooks to trigger specific setup and teardown logic before and after test scenarios.

### Programming Languages & Runtimes

- [Complex Data Arguments](https://awesome-repositories.com/f/programming-languages-runtimes/function-argument-passing/complex-data-arguments.md) — Provides support for passing tabular data and large text blocks as arguments to step definitions for detailed validation. ([source](https://cucumber.io/docs/gherkin/reference))

### User Interface & Experience

- [State Dependency Injection](https://awesome-repositories.com/f/user-interface-experience/state-injection-patterns/scoped-dependency-injection/state-dependency-injection.md) — Provides a shared context object to step definitions to maintain data continuity across a single scenario.
