Skip to content

Template/e2e/testing (#1167) #221

Template/e2e/testing (#1167)

Template/e2e/testing (#1167) #221

Workflow file for this run

name: E2E Tests
on:
push:
branches:
- develop
pull_request_target:
types: [opened, synchronize, reopened]
branches:
- develop
# Cancel old builds on new commit for same workflow + branch/PR
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
initial-checks:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "lts/*"
cache: "npm"
- name: Install dependencies
run: npm ci
e2e:
needs: initial-checks
runs-on: ubuntu-latest
environment: production
env:
DATABASE_URL: "postgresql://postgres:secret@localhost:5432/postgres"
NEXTAUTH_URL: http://localhost:3000/api/auth
GITHUB_ID: ${{ secrets.E2E_GITHUB_ID }}
GITHUB_SECRET: ${{ secrets.E2E_GITHUB_SECRET }}
NEXTAUTH_SECRET: ${{ secrets.NEXTAUTH_SECRET }}
E2E_USER_EMAIL: e2e@codu.co
E2E_USER_ID: 8e3179ce-f32b-4d0a-ba3b-234d66b836ad
E2E_USER_SESSION_ID: df8a11f2-f20a-43d6-80a0-a213f1efedc1
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "lts/*"
cache: "npm"
- name: Cache Playwright browsers
uses: actions/cache@v3
with:
path: ~/.cache/ms-playwright
key: ${{ runner.os }}-playwright-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-playwright-
- name: Run docker-compose
uses: isbang/compose-action@v1.5.1
with:
compose-file: "./docker-compose.yml"
down-flags: "--volumes"
services: |
db
- name: Wait for DB to be ready
run: |
timeout 60s bash -c 'until nc -z localhost 5432; do echo "Waiting for database connection..."; sleep 2; done'
shell: bash
- name: Install dependencies
run: npm ci
- name: Install Playwright browsers
run: npx playwright install --with-deps
if: steps.playwright-cache.outputs.cache-hit != 'true'
- name: Seed database
run: |
npm run db:migrate
npm run db:seed
- name: Run Playwright tests
id: playwright-tests
run: npx playwright test
continue-on-error: true
- name: Upload Playwright report
uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 30
- name: Check test results
if: steps.playwright-tests.outcome == 'failure'
run: exit 1