name: Mechanica CI on: pull_request: push: branches: - main permissions: contents: read jobs: validate: name: Lint, test, build, and browser regressions runs-on: ubuntu-latest timeout-minutes: 25 env: CI: true steps: - name: Checkout uses: actions/checkout@v4 - name: Use Node.js 22 uses: actions/setup-node@v4 with: node-version: 22 - name: Install dependencies run: npm install - name: Lint run: npm run lint - name: Type check run: npm run typecheck - name: Unit and integration tests run: npx vitest run --config vitest.config.ts - name: Production build run: npm run build - name: Install Playwright Chromium run: npx playwright install --with-deps chromium - name: Playwright production regressions run: npx playwright test --config playwright.config.ts --project=chromium - name: Upload Playwright report if: always() uses: actions/upload-artifact@v4 with: name: playwright-report path: playwright-report if-no-files-found: ignore retention-days: 14