playwright base setup [WIP] #12
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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: πΎ Cache Playwright browsers | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.cache/ms-playwright | |
| key: ${{ runner.os }}-playwright-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-playwright- | |
| - name: π E2E Setup | |
| uses: ./.github/actions/e2e-setup | |
| with: | |
| browsers: 'chromium' | |
| - name: ποΈ Build Frontend App | |
| run: pnpm --filter @infinum/frontend build | |
| shell: bash | |
| - name: π Start Frontend App (Background) | |
| run: | | |
| node apps/frontend/.next/standalone/apps/frontend/server.js & | |
| echo "FRONTEND_PID=$!" >> $GITHUB_ENV | |
| shell: bash | |
| env: | |
| NODE_ENV: production | |
| NEXTAUTH_SECRET: 'test-secret-for-ci-only' | |
| NEXT_PUBLIC_EXAMPLE_VARIABLE: 'CI Test Variable' | |
| PRIVATE_EXAMPLE_VARIABLE: 'Private CI Test Variable' | |
| - name: β³ Wait for Frontend to be Ready | |
| run: | | |
| echo "Waiting for frontend to start on http://localhost:3000..." | |
| timeout 20s 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: | | |
| echo "π¬ Starting Playwright E2E Tests..." | |
| echo "================================================" | |
| pnpm e2e | |
| echo "================================================" | |
| echo "β E2E Tests completed!" | |
| - name: π Stop Frontend App | |
| shell: bash | |
| if: always() | |
| run: | | |
| if [ ! -z "$FRONTEND_PID" ]; then | |
| kill $FRONTEND_PID || true | |
| fi |