# This workflow will do a clean install of node dependencies, cache/restore them, build the source code and run tests # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions name: Node.js CI on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v7 - name: Use Node.js uses: actions/setup-node@v6 with: node-version: 24.x cache: 'npm' - run: npm ci - name: Prettier Format Check run: npx prettier --check "{src,tests,docs}/**/*.{ts,tsx,json,md}" "*.md" - run: npm run lint - run: npm run build - run: npm test - name: Typecheck E2E Specs run: npx tsc -p tests/tsconfig.json --noEmit - name: Get Playwright version id: playwright-version run: echo "version=$(node -p "require('@playwright/test/package.json').version")" >> $GITHUB_OUTPUT - name: Cache Playwright Browsers id: cache-playwright uses: actions/cache@v6 with: path: ~/.cache/ms-playwright key: playwright-${{ runner.os }}-${{ steps.playwright-version.outputs.version }} - name: Install Playwright System Dependencies run: npx playwright install-deps chromium - name: Install Playwright Browsers (If Not Cached) if: steps.cache-playwright.outputs.cache-hit != 'true' run: npx playwright install chromium - name: Run E2E Tests env: PLAYWRIGHT_HTML_REPORT: playwright-report/e2e run: npm run test:e2e - name: Run Visual Tests env: PLAYWRIGHT_HTML_REPORT: playwright-report/visual run: npm run test:visual - name: Upload Playwright report if: always() uses: actions/upload-artifact@v7 with: name: playwright-report path: playwright-report/ retention-days: 30