name: Tests ยท UI # Hermetic UI checks: type-check, Vitest unit tests, production build with a # bundle-size budget, and a Playwright smoke against the in-memory mock transport # (no backend/gateway/Postgres). The committed src/gen/ codegen is built, not # regenerated (the same model as the Go committed jet/fbs output). on: push: paths: - 'ui/**' - '.gitea/workflows/ui-test.yaml' pull_request: paths: - 'ui/**' - '.gitea/workflows/ui-test.yaml' jobs: test: runs-on: ubuntu-latest defaults: run: shell: bash working-directory: ui steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Node uses: actions/setup-node@v4 with: node-version: 22 - name: Install pnpm run: npm install -g pnpm@11.0.9 - name: Install deps run: pnpm install --frozen-lockfile - name: Type-check run: pnpm run check - name: Unit tests run: pnpm run test:unit - name: Build run: pnpm run build - name: Bundle-size budget run: node scripts/bundle-size.mjs - name: Install Playwright browser run: pnpm exec playwright install --with-deps chromium - name: E2E smoke (mock) run: pnpm run test:e2e