Continuous Integration¶
We use continuous integration (CI) to test and check our code on every git push.
Services¶
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
Cypress¶
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!