Skip to content

Improve CI pipeline INTER-180 #5

Improve CI pipeline INTER-180

Improve CI pipeline INTER-180 #5

Workflow file for this run

name: Tests
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
# Playwright headless browsers running in CI get low confidence scores, causing flaky tests. Lower the confidence score threshold for CI testing.
MIN_CONFIDENCE_SCORE: 0
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
# This takes 20s but does not seem necessary for our current setup
# Add this to all jobs if you encounter problems with Node installation
# - uses: actions/setup-node@v3
# with:
# node-version: 18
# cache: 'yarn'
- name: 'Cache'
uses: actions/cache@v3
with:
path: node_modules
key: nodemodules-${{ hashFiles('yarn.lock') }}
restore-keys: nodemodules-
- name: Install packages
run: yarn install --prefer-offline --frozen-lockfile
- name: Lint
run: yarn lint
unit-tests:
name: Unit tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: 'Cache'
uses: actions/cache@v3
with:
path: node_modules
key: nodemodules-${{ hashFiles('yarn.lock') }}
restore-keys: nodemodules-
- name: Install packages
run: yarn install --prefer-offline --frozen-lockfile
- name: Run unit tests
run: yarn test
e2e:
name: Playwright e2e tests
timeout-minutes: 60
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
shardIndex: [1, 2, 3]
shardTotal: [3]
steps:
- uses: actions/checkout@v3
- name: 'Cache'
uses: actions/cache@v3
with:
path: node_modules
key: nodemodules-${{ hashFiles('yarn.lock') }}
restore-keys: nodemodules-
- name: Install packages
run: yarn install --prefer-offline --frozen-lockfile
- name: Install Playwright Browsers
run: yarn playwright install --with-deps
- name: Build website
run: yarn build
- name: Start website
run: yarn start &
- name: Wait for website
timeout-minutes: 1
run: |
while ! curl -s http://localhost:3000 > /dev/null; do
echo "Waiting for website..."
sleep 1
done
- name: Run Playwright tests
run: npx playwright test --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
- uses: actions/upload-artifact@v3
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 30