nadda
A zero config plugin for BDD acceptance testing in the browser using a combination of yadda, nightwatch, selenium, chromedriver, phantomjs and iedriver (if applicable).
Install
$ npm install nadda
Command Line
nadda includes a command-line test runner to easily run a suite e.g.
nadda -f 'tests/**/*.feature' -s 'tests/**/*.steps.js'
Things to note:
- If using globbing in paths you may need to surround in quotes to stop the OS from resolving these prior to passing to nadda.
- Globbed file paths don't support the use of
~
.
The test runner supports a number of run-time options. To view all, run the following:
$ nadda --help
Name | Shortname | Default | Description |
---|---|---|---|
features | f | ['**/*.feature', '!node_modules/**/*'] |
globs to select feature files. |
steps | s | ['**/*.steps.js', '!node_modules/**/*'] |
globs to select steps files. |
config | c | file path to local nightwatch.json if you want to override/add to nightwatch config. | |
localisation | l | selects the Yadda localisation library to pass to step files. | |
env | e | PHANTOMJS |
selects the browser environment to use. |
tags | t | tags to determine which scenarios to run.--tags ~@wip will run scenarios that do not have the @wip tag.--tags @wip will run scenarios that have the @wip tag.--tags ~@wip,@feature will run scenarios that do not have the @wip tag AND have the @feature tag. --tags ~@wip --tags @feature will run scenarios that do not have the @wip tag OR have the @feature tag. |
API
nadda can be required into a project exposing a function which takes the same options as the command line tool and returns a promise.
A list of possible yadda localisations and environments can be found under nadda.LOCALISATIONS
and nadda.BROWSERS
respectively.
var nadda = ;;
Writing Yadda Steps
Step files should be written as CommonJS modules exporting a single function that will, at runtime, be passed a yadda library (the type of which can be defined using the 'localisation' option) on which to register steps e.g.
module { lib ;};
Each step itself has access to the nightwatch browser object (this.browser
) and a context object (this.ctx
). The context object can be used to pass data between steps and is initially populated with the amalgamated annotations (this.ctx.annotations
) of the feature and scenario currently being run (if a feature and scenario annotation of the same name exist the scenario annotation will win out).