Freedom251 › BDD Testing Tools
Yadda

What Yadda is
Yadda is a free JavaScript BDD library that maps ordinary-language steps in feature specifications to executable functions. Teams can write specifications as GitHub-flavoured Markdown and run the mapped steps through node:test, Mocha, or Jasmine. Yadda supplies integrations for those runners but is not a test runner or test framework itself. Step functions may be synchronous, callback-based asynchronous, or promise-based. Dictionaries support reusable terms, parameter conversion, and values sourced from a remote system. Built-in localisation covers multiple languages, and steps do not need to use Given, When, and Then wording. Step libraries can be selected dynamically for each scenario, allowing the same phrase to have different meanings in different contexts. The project describes Yadda as having zero dependencies and uses the ISC License. Version 3.0 runs only in Node.js and requires Node.js 20 or later; browser bundles were removed. Yadda runs locally, with examples involving Puppeteer and Playwright, while API access is listed.
Who it suits
It suits JavaScript teams that want BDD-style step mapping while retaining node:test, Mocha, or Jasmine. It is also relevant to teams needing multilingual steps or scenario-specific step libraries.
What it does well
- Maps plain-language steps to executable code
- Works with node:test, Mocha, and Jasmine
- Supports synchronous, callback, and promise steps
- Includes dictionaries and multilingual localisation
- Described as having zero dependencies
What to know first
- Requires Node.js 20 or later in version 3.0
- Does not include its own test runner
- Browser bundles were removed
Verdict
Yadda adds flexible language-to-code mapping around existing JavaScript test runners. Its dictionaries, localisation, and dynamic step libraries support varied BDD workflows, but current version 3.0 is Node-only.
Facts from Yadda's own pages
- Additional browser tooling
- Examples include Puppeteer and Playwright setups, while Yadda itself runs in Node.js. · github.com, 8 Oct 2026
- Dependencies
- The project describes Yadda as having zero dependencies. · github.com, 8 Oct 2026
- Dictionaries
- Dictionaries provide reusable terms and can convert or source step parameters, including values from remote systems. · github.com, 8 Oct 2026
- Feature files
- Specifications can be written as GitHub-flavoured Markdown feature files. · github.com, 8 Oct 2026
- Integrations
- Yadda provides plugins for Node.js node:test, Mocha and Jasmine. · github.com, 8 Oct 2026
- Intended users
- Yadda is aimed at JavaScript teams who want BDD step mapping while keeping their existing test runner. · github.com, 8 Oct 2026
- Languages
- Yadda supports localisation for many languages, and its steps do not have to follow Given/When/Then wording. · github.com, 8 Oct 2026
- Language support
- Localisation is built in for multiple languages. · github.com, 8 Oct 2026
- License
- The repository is licensed under the ISC License. · github.com, 8 Oct 2026
- Purpose
- Yadda is a JavaScript BDD library that maps ordinary-language steps to executable code. · github.com, 8 Oct 2026
- Removed integrations
- Yadda 3.0 removed Bower, Component, Karma and PhantomJS support, along with nightwatch, qunit and nodeunit examples. · github.com, 8 Oct 2026
- Runtime requirement
- Yadda 3.0 requires Node.js 20 or later and is Node-only; in-browser support was removed. · github.com, 8 Oct 2026
- Step handling
- Step functions can be synchronous, callback-based asynchronous, or promise-based. · github.com, 8 Oct 2026
- Step libraries
- Step libraries can be selected dynamically per scenario, allowing the same phrase to have different meanings in different contexts. · github.com, 8 Oct 2026
- Test runner role
- Yadda is not a test runner or test framework; it maps lines of text to function calls and plugs into an existing runner. · github.com, 8 Oct 2026
- Test runners
- It integrates with node:test, Mocha, and Jasmine, and does not provide its own test runner. · github.com, 8 Oct 2026
Where Yadda stands on Freedom251
- BDD Testing Tools#29 of 30