Vitest, Jest, or node:test?
The best test runner is usually the one your team can run, understand, and maintain. Community discussions show real trade-offs: Vitest is attractive for TypeScript and ESM, Jest has mature conventions and a familiar API, and node:test reduces tooling for Node-only services.
The choice does not answer a different question: which edge cases does the code promise but the test suite never exercise?
Separate discovery from execution
Use Quelltest to scan the source contract, then use the runner your repository already owns:
npm install -D quelltest
npx quell find src/
npx quell generate src/ # dry-run scaffolds
npm test # your runner remains authoritative
This separation avoids a common migration trap: changing the runner and the test strategy at the same time. First make the missing behavior visible; then decide how to execute it.
A useful CI contract
Keep the output machine-readable and fail only on an agreed threshold:
npx quell score src/ --json > quell-report.json
npx quell score src/ --threshold 70
A readiness score is a review aid, not a quality guarantee. Pair it with unit, integration, API, security, and end-to-end coverage.
What to optimize for
Choose the runner based on project constraints, then make the surrounding workflow trustworthy: clear docs, stable Node support, lockfiles, low dependency risk, reproducible CI, and test failures that point to a source location. Those are the signals that make a package useful after the first install.