Development

To contribute to pytest-html you can use Hatch to manage a python virtual environment and pre-commit to help you with styling and formatting.

To setup the virtual environment and pre-commit, run:

$ hatch -e test run pre-commit install

If you’re not using Hatch, run the following to install pre-commit:

$ pip install pre-commit
$ pre-commit install

Automated Testing

All pull requests and merges are tested in GitHub Actions which are defined inside .github folder.

To retrigger CI to run again for a pull request, you either use dropdown option, close and reopen pull-request or to just update the branch containing it.

You can do this with git commit –allow-empty

Running Tests

Python

You will need Tox and Docker installed to run the tests against the supported Python versions. If you’re using Hatch it will be installed for you.

The integration tests requires Docker as we have to render the report. This is then done using Selenium and BeautifulSoup

To start the image needed, run:

$ ./start

Sometimes the image becomes unresponsive and needs a restart:

$ ./start down && ./start

You can watch the tests in your browser at localhost:7900, the password is secret.

To run the tests with Hatch, run:

$ hatch -e test run tox

Otherwise, to install and run, do:

$ pip install tox
$ tox

JavaScript

You will need npm installed to run the JavaScript tests. Internally, we use Mocha, Chai, Sinon to run the tests.

Once npm is installed, you can install all needed dependencies by running:

$ npm install

Run the following to execute the tests:

$ npm run unit

Documentation

Documentation is hosted on Read the Docs, and is written in RST. Remember to add any new files to the toctree section in index.rst.

To build your documentation, run:

$ tox -e docs

You can then run a local webserver to verify your changes compiled correctly.

SASS/SCSS/CSS

You will need npm installed to compile the CSS, which is generated via SASS/SCSS.

Once npm is installed, you can install all needed dependencies by running:

$ npm install

Run the following to build the application:

$ npm run build

Releasing a new version

Follow these steps to release a new version of the project:

  1. Update your local master with the upstream master (git pull --rebase upstream master)

  2. Create a new branch

  3. Update the changelog with the new version, today’s date, and all changes/new features

  4. Commit and push the new branch and then create a new pull request

  5. Wait for tests and reviews and then merge the branch

  6. Once merged, update your local master again (git pull --rebase upstream master)

  7. Tag the release with the new release version (git tag <new tag>)

  8. Push the tag (git push upstream --tags)

  9. Done. Check Github Actions for release progress.