A developer-friendly and pragmatic BDD tool for JavaScript.
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
artwork docs(artwork): Add high resolution artwork Jul 24, 2017
documentation chore(deps): update dependency gh-pages to v1.2.0 Jun 1, 2018
examples chore(deps): update dependency flow-bin to v0.64.0 Jan 24, 2018
js-given
scripts
.editorconfig
.eslintignore chore(prettier): Add prettier support Jun 18, 2017
.eslintrc
.flowconfig fix(flow): Disable unclear-type & untyped-import lints Dec 19, 2017
.gitignore refactor(js-given): Make async execution default Feb 5, 2018
.java-version
.prettierrc.js chore(prettier): Use default tabWidth Jan 23, 2018
.travis.yml Update .travis.yml Dec 20, 2017
LICENSE Fix years in LICENSE May 13, 2017
README.md docs(README): Removy snyk badge Mar 1, 2018
package.json
renovate.json Update renovate.json Nov 27, 2017
yarn.lock

README.md

JsGiven

Build Status Coverage Status Code Climate styled with prettier

GitHub license npm version Quality

JsGiven aims to bring BDD (Behavior-Driven Development) to plain (or typed) JavaScript.

It is a developer-friendly and pragmatic BDD tool for JavaScript.

Developers write scenarios in plain JavaScript using a fluent, domain-specific API, JsGiven generates reports that are readable by domain experts.

It's a JavaScript port of JGiven (written in Java). JsGiven keeps the JGiven philosophy, concepts and uses its html5 reporting tool.

You can have a look at JSGiven's own report

scenarios('recipes', RecipesStage, ({ given, when, then }) => ({
  a_pancake_can_be_fried_out_of_an_egg_milk_and_flour: scenario({}, () => {
    given()
      .an_egg()
      .and()
      .some_milk()
      .and()
      .the_ingredient('flour');

    when()
      .the_cook_mangles_everything_to_a_dough()
      .and()
      .the_cook_fries_the_dough_in_a_pan();

    then().the_resulting_meal_is_a_pan_cake();
  }),
}));

It can be used with any javascript test runner (like Jest, Ava, Mocha, Jasmine, or Protractor).

It can be used with your favorite assertion library (like ChaiJS, Jasmine), or your framework's assertion library.

It aims to provide the most comfortable developer experience with ES6 class syntax, and optional FlowType or TypeScript typings.

Some features are missing, but the folks at https://www.fluo.com are already using it daily.

Don't hesitate to give any feedback and to open a GitHub issue https://github.com/jsGiven/jsGiven/issues

Getting started

You can start using JsGiven with the user guide https://jsgiven.org/user-guide.html Don't hesitate to give any feedback and to open a GitHub issue https://github.com/jsGiven/jsGiven/issues