--- name: tests description: Rules for integration test files at project root paths: - oikos/test-*.js --- - File names match the pattern `test-.js` and live at the project root alongside `package.json`. - Every test file has a matching npm script `test:` in `package.json`. The `test` aggregate script runs them all. When you add a new `test-*.js`, add it to both places. - Runner is `node --test` (built-in, Node ≥22). Scripts that hit the DB pass `--experimental-sqlite`. - Database in tests is an in-memory `better-sqlite3` instance built via the same `buildSchema` path used by production. Never mock `better-sqlite3`. Never stub out migrations. If a test needs seed data, insert it through normal route handlers or the same queries prod uses. - Assertions via `node:assert/strict`. Imports use `import` syntax. No `require`. - Tests must be deterministic. No network calls, no real filesystem writes outside `os.tmpdir()`, no `Date.now()` without faking. - A failing test is a real failure. Don't wrap in `t.skip` or comment out to make CI green.