Enable Tests in the Continuous Integration Pipeline
Learn how to make sure that tests run as part of the continuous integration pipeline so you don't have to run them manually.
We'll cover the following
Running test suites and recording the results in the Cypress dashboard is, at the time of this writing, as good as it gets when it comes to testing. However, we want to make sure tests run as part of the continuous integration pipeline so developers don’t have to run them manually. We also want the results displayed right in the pull request view and to block a PR from being merged if tests fail.
Set up GitHub workflow
Let’s implement that! We already have a
.github/workflows/services-web-deploy.yml
file that deploys the web service. It is a good time to rename this file now since it is no longer only deploying, but will soon also be testing the web service. In fact, having one workflow file per service is a good idea going forward. Let’s rename that
workflow file to services-web.yml
. Click Run and execute the following command in the terminal:
mv .github/workflows/services-web-deploy.yml .github/workflows/services-web.yml
This makes it clear to anyone who sees the
file name that it is responsible for anything related to the services/web
code.
First, change the name of the workflow to “CI for the web service”:
name: CI for the web service
We need to make the next change to configure the workflow to run on every push when files in services/web/**
change. Currently, it only runs on the master branch because we only want to deploy on the master branch. Let’s remove that
condition to make it look like this:
on:
push:
paths:
- "services/web/**"
Next, add a new job above the already existing deploy job:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install dependencies
run: npm install
- name: Bootstrap all services
run: npm run bootstrap
- name: Run e2e tests
uses: cypress-io/github-action@v2
with:
install: false
record: true
start: npm run dev
wait-on: " http://localhost:3000 "
working-directory: services/web
env:
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NODE_ENV: test
deploy:
...
Click Run to save the changes in this file.
Get hands-on with 1400+ tech skills courses.