spruce up #22
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: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| run_install: false | |
| - name: Install Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version-file: ".nvmrc" | |
| cache: "pnpm" | |
| - name: Install dependencies | |
| run: pnpm install | |
| - name: Run lint | |
| run: pnpm lint:ci | |
| unit_tests: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| run_install: false | |
| - name: Install Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version-file: ".nvmrc" | |
| cache: "pnpm" | |
| - name: Install dependencies | |
| run: pnpm install | |
| - name: Run tests | |
| run: pnpm test:ci | |
| - name: Upload coverage artifact | |
| if: github.event_name == 'pull_request' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: vitest-coverage | |
| path: vitest-coverage | |
| e2e_tests: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| permissions: | |
| contents: read | |
| pull-requests: write | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| run_install: false | |
| - name: Install Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version-file: ".nvmrc" | |
| cache: "pnpm" | |
| - name: Install dependencies | |
| run: pnpm install | |
| - name: Install Playwright Browsers | |
| run: pnpm playwright install --with-deps | |
| - name: Run e2e tests | |
| env: | |
| AIRTABLE_PAT: ${{ secrets.AIRTABLE_PAT }} | |
| run: pnpm test:e2e:headless | |
| - name: Upload Playwright report | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: playwright-report | |
| path: playwright-report/ | |
| retention-days: 30 | |
| - name: Comment PR with Playwright artifact link | |
| if: failure() && github.event_name == 'pull_request' | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const runId = context.runId; | |
| const repo = context.repo; | |
| const artifactUrl = `https://github.com/${repo.owner}/${repo.repo}/actions/runs/${runId}`; | |
| const comment = `## ❌ Playwright Tests Failed | |
| The Playwright tests have failed. Please download the test report artifact to see detailed information about the failures: | |
| 📊 [View test run and download artifact](${artifactUrl}) | |
| **How to view the report:** | |
| 1. Click the link above | |
| 2. Scroll to the bottom to the "Artifacts" section | |
| 3. Download the \`playwright-report\` artifact | |
| 4. Extract the zip file and open \`index.html\` in your browser | |
| The report includes screenshots, videos, and detailed traces of the failed tests.`; | |
| github.rest.issues.createComment({ | |
| issue_number: context.issue.number, | |
| owner: repo.owner, | |
| repo: repo.repo, | |
| body: comment | |
| }); | |
| report_coverage: | |
| runs-on: ubuntu-latest | |
| needs: unit_tests | |
| if: always() && github.event_name == 'pull_request' | |
| permissions: | |
| pull-requests: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Download Coverage Artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: vitest-coverage | |
| path: vitest-coverage | |
| - name: Report Coverage | |
| uses: davelosert/vitest-coverage-report-action@v2 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| json-summary-path: vitest-coverage/coverage-summary.json | |
| json-final-path: vitest-coverage/coverage-final.json | |
| file-coverage-mode: changes |