Skip to content

4206 - Data History #79

4206 - Data History

4206 - Data History #79

Workflow file for this run

name: Run test all (unit, integration and e2e)
on:
pull_request:
branches:
- 'development'
workflow_dispatch:
inputs:
force_refresh:
description: 'Force database refresh'
required: false
default: false
type: boolean
jobs:
tests-all:
runs-on: ubuntu-22.04
if: always()
steps:
- uses: actions/checkout@v4
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_DEV }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_DEV }}
aws-region: eu-west-1
- name: Cache test database
id: cache-db
uses: actions/cache@v3
with:
path: ./db/backup
key: test-db-${{ runner.os }}-v1-${{ hashFiles('src/test/e2e/docker-compose.test.yml') }}
restore-keys: |
test-db-${{ runner.os }}-v1-
test-db-${{ runner.os }}-
- name: Download and decrypt test database
if: steps.cache-db.outputs.cache-hit != 'true' || ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.force_refresh == true }}
run: |
mkdir -p ./db
aws s3 cp s3://fra-platform-s3-developer-assets/test-assets/database/backup.gpg ./db/backup.gpg
./src/tools/heroku/decrypt.sh ./db/backup.gpg
env:
BACKUP_PASSPHRASE: ${{ secrets.BACKUP_PASSPHRASE }}
- name: Build and start containers
run: docker compose -f src/test/e2e/docker-compose.test.yml up -d
env:
NPM_GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
- name: Wait for services to be ready
run: |
timeout 300 bash -c 'until docker compose -f src/test/e2e/docker-compose.test.yml ps web | grep -q "healthy"; do sleep 5; done'
- name: Create test results directory
run: mkdir -p playwright-report
- name: Run database migrations
run: docker compose -f src/test/e2e/docker-compose.test.yml exec -T web yarn migration-steps:run
- name: Run unit and integration tests
run: docker compose -f src/test/e2e/docker-compose.test.yml exec -T web yarn test
env:
NPM_GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
- name: Run E2E tests
if: always()
run: |
docker compose -f src/test/e2e/docker-compose.test.yml run \
playwright npm run test:e2e
env:
NPM_GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
- name: Zip test results
if: always()
run: |
cd src/test/e2e
zip -r ../../../playwright-results.zip test-results/
- name: Upload test results
if: always() && !env.ACT
uses: actions/upload-artifact@v4
with:
name: playwright-results
path: playwright-results.zip
retention-days: 30
- name: Stop containers
if: always()
run: docker compose -f src/test/e2e/docker-compose.test.yml down -v
- name: Cleanup database backup
if: always()
run: |
rm -rf ./db