Skip to content

playwright base setup [WIP] #9

playwright base setup [WIP]

playwright base setup [WIP] #9

Workflow file for this run

name: 🎭 Playwright E2E Tests
on:
pull_request:
types: [opened, synchronize, reopened]
workflow_dispatch:
jobs:
e2e-tests:
name: πŸ§ͺ E2E Tests
timeout-minutes: 60
runs-on: ubuntu-22.04
env:
NODE_ENV: test
NEXTAUTH_SECRET: 'test-secret-for-ci-only'
NEXT_PUBLIC_EXAMPLE_VARIABLE: 'CI Test Variable'
PRIVATE_EXAMPLE_VARIABLE: 'Private CI Test Variable'
CI: true
steps:
- name: πŸ“₯ Checkout Repository
uses: actions/checkout@v4
- name: πŸ’» Node setup
uses: ./.github/actions/node-setup
- name: ♻️ Restore Turbo Cache
uses: actions/cache@v4
with:
path: .turbo
key: turbo-${{ github.ref }}-${{ github.sha }}
restore-keys: |
turbo-${{ github.ref }}-
turbo-
- name: 🎭 E2E Setup
uses: ./.github/actions/e2e-setup
with:
browsers: 'chromium'
- name: πŸ—οΈ Build Frontend App
run: pnpm --filter @infinum/frontend build
shell: bash
- name: πŸ” Debug Build Output
run: |
echo "πŸ“‚ Current working directory:"
pwd
echo ""
echo "πŸ“ Contents of apps/frontend:"
ls -la apps/frontend/ | head -10
echo ""
echo "πŸ—οΈ Contents of apps/frontend/.next:"
ls -la apps/frontend/.next/ || echo "❌ No .next directory found"
echo ""
echo "πŸ“¦ Checking for standalone server:"
if [ -f "apps/frontend/.next/standalone/apps/frontend/server.js" ]; then
echo "βœ… Found: apps/frontend/.next/standalone/apps/frontend/server.js"
else
echo "❌ NOT found: apps/frontend/.next/standalone/apps/frontend/server.js"
fi
echo ""
echo "πŸ”Ž Looking for any server.js files:"
find apps/frontend/.next -name "server.js" -type f 2>/dev/null || echo "❌ No server.js files found"
shell: bash
- name: πŸš€ Start Frontend App (Background)
run: |
node .next/standalone/apps/frontend/server.js &
echo "FRONTEND_PID=$!" >> $GITHUB_ENV
shell: bash
- name: ⏳ Wait for Frontend to be Ready
run: |
echo "Waiting for frontend to start on http://localhost:3000..."
timeout 60s bash -c 'until curl -f http://localhost:3000 > /dev/null 2>&1; do
echo "Waiting for frontend..."
sleep 3
done'
echo "Frontend is ready!"
shell: bash
- name: πŸ” Health Check
run: |
echo "Running health check..."
curl -f http://localhost:3000 -I | head -5
echo "Health check passed!"
shell: bash
- name: πŸ§ͺ Run Playwright E2E Tests
run: pnpm e2e
shell: bash
env:
PLAYWRIGHT_JUNIT_OUTPUT_NAME: test-results.xml
- name: πŸ›‘ Stop Frontend App
if: always()
run: |
if [ ! -z "$FRONTEND_PID" ]; then
kill $FRONTEND_PID || true
fi
shell: bash
- name: πŸ“Š Upload Playwright Report
uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: playwright-report-${{ github.run_id }}
path: |
packages/e2e-frontend/playwright-report/
packages/e2e-frontend/test-results/
retention-days: 30
- name: πŸ“Š Upload Coverage Reports
uses: actions/upload-artifact@v4
if: success()
with:
name: e2e-coverage-${{ github.run_id }}
path: |
reports/a11y/
retention-days: 7