name: Playwright E2E Tests on: push: branches: [main, develop] pull_request: branches: [main, develop] jobs: test: timeout-minutes: 60 runs-on: ubuntu-latest strategy: fail-fast: false matrix: browser: [chromium, firefox, webkit] steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 18 cache: 'npm' - name: Install dependencies run: npm ci - name: Install Playwright Browsers run: npx playwright install --with-deps ${{ matrix.browser }} - name: Run Playwright tests env: SUPABASE_SERVICE_ROLE_KEY: ${{ secrets.SUPABASE_SERVICE_ROLE_KEY }} TEST_USER_EMAIL: ${{ secrets.TEST_USER_EMAIL }} TEST_USER_PASSWORD: ${{ secrets.TEST_USER_PASSWORD }} TEST_MODERATOR_EMAIL: ${{ secrets.TEST_MODERATOR_EMAIL }} TEST_MODERATOR_PASSWORD: ${{ secrets.TEST_MODERATOR_PASSWORD }} BASE_URL: ${{ secrets.BASE_URL || 'http://localhost:8080' }} run: npx playwright test --project=${{ matrix.browser }} - name: Upload test results uses: actions/upload-artifact@v4 if: always() with: name: playwright-results-${{ matrix.browser }} path: test-results/ retention-days: 30 - name: Upload Playwright report uses: actions/upload-artifact@v4 if: always() with: name: playwright-report-${{ matrix.browser }} path: playwright-report/ retention-days: 30 - name: Comment PR with results uses: daun/playwright-report-comment@v3 if: always() && github.event_name == 'pull_request' with: report-path: test-results.json test-summary: name: Test Summary runs-on: ubuntu-latest needs: test if: always() steps: - name: Download all artifacts uses: actions/download-artifact@v4 - name: Generate summary run: | echo "## Playwright Test Results" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "Tests completed across all browsers." >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "See artifacts for detailed reports and screenshots." >> $GITHUB_STEP_SUMMARY