# The gate: typecheck, lint, format and the full test suite with its coverage # threshold, on every push and every pull into main. `npm test` fails the run # if coverage drops below the floor in packages/hatk/vitest.config.ts, so a # change that guts a tested path cannot land quietly. # # node:26, because package.json requires node >=25, on Debian trixie (glibc # 2.41), not bookworm (2.36): better-sqlite3's prebuilt binary needs glibc >= # 2.38, so on bookworm every sqlite-backed test dies with a GLIBC error. # # `npm ci` rather than `npm install`: it installs exactly the lockfile, the only # record of the Linux binaries for better-sqlite3 and @duckdb/node-bindings. # Never regenerate that lockfile on macOS over an existing node_modules: it # drops every non-darwin platform package and breaks this run. on: push: { refs: [refs/heads/*] } pull: { base: [refs/heads/main] } image: node:26-trixie cache: [/root/.npm] steps: - name: install run: npm ci - name: check run: npm run check - name: test timeout: 30 run: npm test