If you find a bug you can fix or want to contribute an enhancement you’re welcome to open an issue on GitHub or create a pull request directly.

Using invoke for Development

For most development tasks we have invoke commands.

Install all requirements for running tasks using Pip, e.g.

python3 -m pip install -r tasks/py.requirements.txt

Display all available invoke commands like this:

invoke -l

If you’re curious, all invoke tasks are located in the tasks/ folder.

Update Gherkin Language Specification

An invoke command will download the latest Gherkin language specification and update the behave/ module:

invoke develop.update-gherkin

If there were changes this command will have updated two files:

  1. etc/gherkin/gherkin-languages.json (original Cucumber JSON spec)
  2. behave/ (Python module generated from the JSON spec)

Put both under version control and open a PR to merge them.

Update Documentation

Our documentation is written in reStructuredText, and built and hosted on ReadTheDocs. Make your changes to the files in the docs/ folder and build the documentation with:

invoke docs

or, alternatively, using Tox:

tox -e docs


Building the docs requires Sphinx and DocUtils. If your build fails because those are missing, run:

python3 -m pip install -r py.requirements/docs.txt

Once the docs are built successfully, sphinx will tell you where it generated the HTML output (typically build/docs/html), which you can then inspect locally.