Skip to content

Refactor frontend components #231

Refactor frontend components

Refactor frontend components #231

Workflow file for this run

name: Run E2E Tests
on:
push:
branches: [main]
paths:
- "builder-frontend/**"
- "builder-api/**"
- "library-api/**"
pull_request:
branches: [main]
paths:
- "builder-frontend/**"
- "builder-api/**"
- "library-api/**"
env:
PROJECT_ID: "benefit-decision-toolkit-play"
WORKLOAD_IDENTITY_PROVIDER: "projects/1034049717668/locations/global/workloadIdentityPools/github-actions-google-cloud/providers/github"
jobs:
run-e2e-tests:
runs-on: "ubuntu-latest"
# Add these permissions for Workload Identity Federation
permissions:
contents: read
id-token: write
steps:
# Bootstrapping #
- name: Checkout repository
uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- name: Load ENV files from examples
run: |
mv builder-frontend/.env.example builder-frontend/.env
mv builder-api/.env.example builder-api/.env
mv library-api/.env.example library-api/.env
mv .env.example .env
# 1) Devbox Setup #
- name: Setup devbox
uses: ./.github/actions/devbox-setup
# 2) Prepare app dependencies #
- name: "Cache Maven dependencies"
# Cache Maven dependencies to speed up builds
uses: "actions/cache@v4"
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('builder-api/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-${{ hashFiles('builder-api/pom.xml') }}
- id: "auth" # Configure Workload Identity Federation and generate an access token
name: "Authenticate to Google Cloud"
uses: "google-github-actions/auth@v2"
with:
workload_identity_provider: "${{ env.WORKLOAD_IDENTITY_PROVIDER }}"
service_account: cicd-build-deploy-api@benefit-decision-toolkit-play.iam.gserviceaccount.com
project_id: ${{ env.PROJECT_ID }}
- name: Cache node modules
uses: actions/cache@v4
with:
path: builder-frontend/node_modules
key: ${{ runner.os }}-node-${{ hashFiles('builder-frontend/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install frontend dependencies
working-directory: builder-frontend
run: devbox run install-builder-frontend-ci
- name: Load E2E emulator data
run: |
rm -rf emulator-data
cp -r e2e/e2e-emulator-data emulator-data
# 3) Run App + E2E Test #
- name: Run all Devbox services
run: devbox services up -b
- name: Install Playwright dependencies
run: npm ci
working-directory: e2e
- name: Install Playwright Browsers
run: npx playwright install --with-deps
working-directory: e2e
- name: Wait for App to be available
uses: nev7n/wait_for_response@v1
with:
url: "http://localhost:5173/"
responseCode: 200
timeout: 90000
interval: 1000
- name: Run Playwright tests
run: npx playwright test
working-directory: e2e
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: playwright-report
path: e2e/playwright-report/
retention-days: 30
- name: Upload process logs on failure
uses: actions/upload-artifact@v4
if: failure()
with:
name: process-logs
path: logs/
retention-days: 30
# 4) Cleanup #
- name: Stop all Devbox services
run: devbox services stop