chore: Add playwright tests for app in local-only mode #2
Workflow file for this run
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: E2E Tests | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| workflow_call: | |
| # Allow this workflow to be called by other workflows | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| e2e-tests: | |
| name: End-to-End Tests | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 15 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version-file: '.nvmrc' | |
| cache-dependency-path: 'yarn.lock' | |
| cache: 'yarn' | |
| - name: Install dependencies | |
| run: yarn install | |
| - name: Build dependencies | |
| run: make ci-build | |
| - name: Install Playwright browsers | |
| run: | | |
| cd packages/app | |
| npx playwright install --with-deps chromium | |
| - name: Run Playwright tests | |
| run: make e2e | |
| - name: Upload Playwright report | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: playwright-report | |
| path: packages/app/playwright-report/ | |
| retention-days: 30 | |
| - name: Upload test results | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: test-results | |
| path: packages/app/test-results/ | |
| retention-days: 30 | |
| - name: Comment PR with test results | |
| uses: actions/github-script@v7 | |
| if: always() && github.event_name == 'pull_request' | |
| with: | |
| script: | | |
| const fs = require('fs'); | |
| const path = require('path'); | |
| try { | |
| const resultsPath = path.join('packages/app/test-results/results.json'); | |
| if (fs.existsSync(resultsPath)) { | |
| const results = JSON.parse(fs.readFileSync(resultsPath, 'utf8')); | |
| const { stats } = results; | |
| const body = `## 🎭 Playwright Test Results | |
| **Tests:** ${stats.expected + stats.unexpected + stats.flaky + stats.skipped} | |
| **✅ Passed:** ${stats.expected} | |
| **❌ Failed:** ${stats.unexpected} | |
| **⚠️ Flaky:** ${stats.flaky} | |
| **⏭️ Skipped:** ${stats.skipped} | |
| **⏱️ Duration:** ${Math.round(stats.duration / 1000)}s | |
| ${stats.unexpected > 0 ? '❌ Some tests failed. Check the [Playwright report](https://github.com/' + context.repo.owner + '/' + context.repo.repo + '/actions/runs/' + context.runId + ') for details.' : '✅ All tests passed!'}`; | |
| github.rest.issues.createComment({ | |
| issue_number: context.issue.number, | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| body: body | |
| }); | |
| } | |
| } catch (error) { | |
| console.log('Could not post test results:', error.message); | |
| } |