Cucumber for JavaScript
5.4k
Stars
1.1k
Forks
42
Open issues
30
Contributors
AI Analysis
Cucumber.js is the JavaScript/Node.js implementation of Cucumber, a behavior-driven development (BDD) testing framework that lets teams write automated tests in plain language (Gherkin). It serves development teams seeking to bridge communication gaps between technical and non-technical stakeholders by making test specifications readable to anyone. It is specialized for teams adopting BDD practices—not a general-purpose testing framework like Jest or Mocha, but a complement to them for specif...
Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.
AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.
Cucumber-JS brings Gherkin-based BDD testing to Node.js with 15 years of production history
Cucumber-JS is the JavaScript/Node.js implementation of the Cucumber BDD framework, enabling teams to write automated tests in plain Gherkin language readable by non-technical stakeholders. It targets teams practicing Behavior-Driven Development where product owners, QA, and developers collaborate on living documentation. With over 5,300 stars, active CI pipelines, and an npm package (@cucumber/cucumber) downloaded millions of times weekly, it occupies a well-defined niche in the JavaScript testing ecosystem. It is not a general-purpose test runner but a specialized tool for teams that value human-readable test specifications.
Created in May 2011 as a JavaScript port of the Ruby Cucumber framework, the project has been continuously maintained for over 15 years. It migrated to the @cucumber npm scope and TypeScript over time, reflecting ongoing modernization of the codebase.
Growth was driven primarily by enterprise and agile-shop adoption of BDD practices throughout the 2010s. The project has largely plateaued in star growth — 2 stars in the last 7 days — consistent with mature, stable infrastructure tooling rather than a trending project. npm download numbers likely far exceed what GitHub star velocity suggests, as it serves entrenched enterprise workflows.
The @cucumber/cucumber npm package is one of the most downloaded BDD-related packages in the Node.js ecosystem, with millions of weekly downloads documented historically. It is widely referenced in enterprise JavaScript testing stacks and integrated into many CI pipelines. Adoption is well-established and broadly verified through npm download data and ecosystem references.
Appears to be a CLI-first tool with a programmatic JavaScript API layer. Likely consists of a Gherkin parser, step definition registry, runner engine, and formatter/reporter subsystem. The README documents parallel running, sharding, retry logic, plugin support, and ESM compatibility — suggesting a modular, feature-complete architecture. TypeScript implementation likely provides strong internal type safety.
A Coveralls badge is present in the README, indicating CI-tracked code coverage. The exact coverage percentage is not stated in the README excerpt, but its presence suggests active tracking.
Last push was June 24, 2026 — 3 days before the evaluation date — indicating active, ongoing maintenance. The project has operational CI/CD workflows for build and npm release. An OpenSSF Scorecard badge is present, suggesting security-conscious maintenance practices. This is a well-maintained project by any standard.
ADOPT IF: your team practices BDD with non-technical stakeholders writing or reviewing Gherkin feature files, and you want a mature, actively maintained framework with a large support community in the Node.js ecosystem. AVOID IF: your team has no interest in Gherkin or BDD workflows — the overhead of maintaining feature files does not justify the tool for pure unit or integration testing. MONITOR IF: you are evaluating BDD practices for your team for the first time; the tooling is stable, but BDD process adoption is the real risk, not the software itself.
Independent dimensions
Mainstream potential
4/10
Technical importance
7/10
Adoption evidence
8/10
- BDD adoption risk: the tool's value depends entirely on the team actually following BDD practices; if feature files diverge from real behavior or are maintained only by developers, the collaboration benefit disappears.
- Learning curve for step definition management: large test suites can accumulate complex, fragile step definition patterns that are hard to refactor.
- Slower test execution: Gherkin parsing and scenario orchestration add overhead compared to plain unit test runners; parallel/sharding support mitigates this but adds configuration complexity.
- Ecosystem fragmentation: integrations with specific browsers, HTTP clients, or assertion libraries require additional glue libraries that may lag behind their primary tools.
- Niche ceiling: the project is unlikely to expand beyond BDD-focused teams, meaning community size and third-party tooling will remain smaller than general-purpose test runners.
Cucumber-JS will remain a stable, maintained tool serving its BDD niche for the foreseeable future. Growth will be slow and tied to BDD methodology adoption rather than JavaScript ecosystem trends. No decline is expected.
Newsletter
Get analyses like this every Monday
Free weekly digest of the most interesting open-source discoveries.
Languages
Information
- Website
- https://cucumber.io
- Language
- TypeScript
- License
- MIT
- Last updated
- 8h ago
- Created
- 184mo ago
- Analyzed with
- anthropic/claude-haiku-4-5
Stars over time
Contributors over time
Top 100 contributors only — repos with more will plateau at 100.
Open issues
Switch to ESM
Dependency tree size
TypeError: Cannot destructure property 'message' of 'testStepResult' as it is undefined.
Support exclusivity with sharding
Cucumber returns the same exit code when specs are failing and when command execution is failing
Top contributors
Similar repos
cucumber/cucumber-ruby
Cucumber for Ruby enables automated testing through plain-language scenarios...
| Repository | Stars | Week Δ | Language | Score | Updated |
|---|---|---|---|---|---|
|
|
5.4k | +7 | TypeScript | 8/10 | 8h ago |
|
|
2.8k | — | Java | 8/10 | 2d ago |
|
|
5.2k | — | Ruby | 8/10 | 4w ago |
|
|
15.8k | — | JavaScript | 8/10 | 6d ago |
|
|
2.6k | — | Go | 7/10 | 2d ago |
|
|
50.5k | — | TypeScript | 9/10 | 12h ago |
Jest is a general-purpose test runner with no Gherkin/BDD support out of the box. Some teams use jest-cucumber to bridge them. Cucumber-JS serves a fundamentally different workflow — specification-first, stakeholder-readable tests — not a direct replacement in either direction.
Cypress is an end-to-end browser testing tool. There are Cucumber-Cypress integrations, but they target different layers. Cypress does not natively support Gherkin. The two are often complementary rather than competing.
Jasmine is a BDD-flavored unit test framework with describe/it syntax. It does not support Gherkin or plain-language scenarios. Cucumber-JS is better suited for cross-functional collaboration where non-engineers write or read test specs.
Playwright is a browser automation framework. It can be combined with Cucumber-JS for BDD-style e2e tests, but does not natively offer Gherkin. Cucumber-JS is frequently layered on top of Playwright in enterprise e2e setups.
The Ruby original that cucumber-js mirrors in philosophy. Feature parity is close but not identical. Teams in Node.js ecosystems use cucumber-js; the Ruby version remains dominant in Rails-based stacks. Both are maintained under the same umbrella org.
