All Posts
February 12, 20260.1.17Calmony Sanctions Monitor

v0.1.17 — feat: configure Vitest for unit testing

Release v0.1.17: Unit Testing with Vitest

12 February 2026

Note: This release is currently blocked pending CI fixes. It will ship once pipeline issues are resolved.

What changed

  • Vitest configured as the project's unit testing framework with V8 coverage reporting
  • 5 test suites added covering core library modules:
    • Matching — Jaro-Winkler, Levenshtein, name normalisation, token matching, DOB/nationality cross-validation, full screening pipeline
    • Validation — HTML stripping, XSS prevention, Zod schemas, CSV validation & injection detection
    • Encryption — AES-256-GCM round-trips, PII field encryption, unicode handling, graceful degradation when disabled
    • Rate limiting — Sliding window, identifier/tier isolation, header generation, path-to-config mapping
    • Utilitiescn() classname merging
  • CI updated to run npm test as a required build step
  • New scripts: test, test:watch, test:coverage

Why it matters

This gives us automated verification of the core sanctions matching engine, encryption layer, and input validation — the modules where correctness matters most. Every future change now runs against these tests in CI.

Technical notes

  • Path aliases configured to match tsconfig (@/src/)
  • Tests are pure unit tests with no database or external service dependencies
  • Coverage scoped to src/lib/**/*.ts

Release Notes

Release blocked — PR #31 cannot be merged.

PR #31 ("feat: configure Vitest for unit testing") adds Vitest as the unit testing framework with 5 test suites covering matching, validation, encryption, rate limiting, and utilities. However, the merge failed because:

  1. The PR is marked as not mergeable (mergeable: false)
  2. All 5 recent CI workflow runs on the branch have failed

Action required: A developer needs to investigate and fix the CI failures (https://github.com/LetMC/CalmonySanctionsMonitor/actions/runs/21968855702), resolve any merge conflicts, and ensure CI passes before the release can proceed with tag v0.1.17.