Surface has zero *.test.ts files today — only scripts/smoke-test.mjs exists from the npm-package work. As the codebase grows (page extraction, future framework detectors for Rails / Django / FastAPI / Spring view-rendering), per-extractor tests become genuinely valuable.
Add vitest as a devDep, configure it (vitest.config.ts), add a test script to package.json, and write the first meaningful per-extractor tests as part of #3 (Next.js page extraction). Each extractor test uses fixture directories under src/extractors/__fixtures__/<framework>/ (or similar) with synthetic project layouts; assertions verify the emitted endpoint set matches the expected shape.
Per-extractor tests are cheap to add later (one fixture dir + a few assertions per extractor); the upfront cost is just the vitest setup.
Surface has zero
*.test.tsfiles today — onlyscripts/smoke-test.mjsexists from the npm-package work. As the codebase grows (page extraction, future framework detectors for Rails / Django / FastAPI / Spring view-rendering), per-extractor tests become genuinely valuable.Add vitest as a devDep, configure it (
vitest.config.ts), add atestscript topackage.json, and write the first meaningful per-extractor tests as part of #3 (Next.js page extraction). Each extractor test uses fixture directories undersrc/extractors/__fixtures__/<framework>/(or similar) with synthetic project layouts; assertions verify the emitted endpoint set matches the expected shape.Per-extractor tests are cheap to add later (one fixture dir + a few assertions per extractor); the upfront cost is just the vitest setup.