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:
Update your local master with the upstream master (
git pull --rebase upstream master
)Create a new branch
Update the changelog with the new version, today’s date, and all changes/new features
Commit and push the new branch and then create a new pull request
Wait for tests and reviews and then merge the branch
Once merged, update your local master again (
git pull --rebase upstream master
)Tag the release with the new release version (
git tag <new tag>
)Push the tag (
git push upstream --tags
)Done. Check Github Actions for release progress.