playwright base setup [WIP] #8
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: π 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 "Checking build output structure:" | |
| ls -la apps/frontend/.next/ | |
| echo "Checking for standalone directory:" | |
| ls -la apps/frontend/.next/standalone/ || echo "No standalone directory found" | |
| echo "Checking for server.js:" | |
| find apps/frontend/.next -name "server.js" -type f || echo "No server.js 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 |