Tests
Tests live in tests/*.test.ts, and src/**/*.test.ts is picked up too.
npx vitest run tests/chk.test.ts # one file
npx vitest run -t "flood fill" # by name
npm run test:watch
Suites that need real map files (fixtures/maps/*.scx) or real tileset files
(public/tileset/*.cv5) use describe.skipIf(...) and skip in silence when those are
absent. A green run does not by itself mean the real-data suites ran. fixtures/ and
the generated public/{tileset,arr,game,scripts,unit}/ are gitignored, and nothing in
those trees may be committed.