We use continuous integration (CI) to test and check our code on every git push
.
- GitHub Actions
- runs unit tests (pytest)
- runs integration tests (Cypress)
- reformats Python and JavaScript code on the default branch
- triggers deployment via webhook at
deploy.altlab.dev
- codecov: measures and tracks code coverage
- Cypress: stores test recordings
On GitHub Actions, the integration test run using this rule:
npm run test:ci
Which, in turn, does the following:
USE_TEST_DB=true pipenv run dev &
— Starts the Django server in the backgroundwait-on tcp:127.0.0.1:8000
— waits for the Django server to respond to HTTP requests$(npm bin)/cypress run $CYPRESS_OPTS
— runs the Cypress integration tests
$CYPRESS_OPTS
is intended to be either empty or --record
. If set to
--record --key SECRET_KEY
, it will upload recordings to the Cypress
Dashboard. Note that if there is no more room for recordings on our
Cypress plan, the build will fail. We're on Cypress's open-source
plan, which should give us some extra space to deal with!