Part of #403. Good first issue — two adjacent areas, 13 specs each, all mechanical.
What to do
src/app/features/clients/ (13) and src/app/features/loans/ (13) still run on the deprecated Karma runner. They can go in one PR or two — say which you are taking in a comment so two people do not collide.
node scripts/codemod-jasmine-to-vitest.mjs $(node -p "require('./karma-baseline.json').specs.filter(f=>/^src\/app\/features\/(clients|loans)\//.test(f)).join(' ')")
npm run test:unit
node scripts/check-test-runner.mjs --write
npm run lint:prune && npm run format
npm test -- --watch=false
All 26 convert cleanly — the codemod reports 0 left for a human for both areas.
Acceptance criteria
Things that trip people up
- Run
npm run lint:prune after the rename — eslint-suppressions.json is keyed by path. The suppression count should not change, only the paths.
- These are the busiest screens in the app, so the specs are longer than average. That makes the diff big but no harder: the codemod does the work, and your job is to confirm the suite is still green and the totals still add up.
- Migrate as-is; open a separate issue for anything that looks wrong.
Background: DOCS/adr/0004-vitest-migration.md.
Part of #403. Good first issue — two adjacent areas, 13 specs each, all mechanical.
What to do
src/app/features/clients/(13) andsrc/app/features/loans/(13) still run on the deprecated Karma runner. They can go in one PR or two — say which you are taking in a comment so two people do not collide.All 26 convert cleanly — the codemod reports
0 left for a humanfor both areas.Acceptance criteria
.spec.tsfiles remain under the area(s) you tooknpm run test:unitandnpm test -- --watch=falseboth passkarma-baseline.jsonupdated in the same commitnpm run lintandnpm run format:checkcleanThings that trip people up
npm run lint:pruneafter the rename —eslint-suppressions.jsonis keyed by path. The suppression count should not change, only the paths.Background:
DOCS/adr/0004-vitest-migration.md.