fix(test): draai integratietests serieel — de sweep requeue't rijen van andere testbestanden #103

Merged
janpeter merged 1 commit from fix/integration-tests-serieel into main 2026-07-26 17:14:02 +02:00
Owner

Na het mergen van fase 2 en fase 3 zijn de queue-integratietests niet meer samen te draaien. Apart zijn ze groen (17 en 9), samen vallen er 3–4 om — met een wisselende samenstelling per run, dus een race.

Oorzaak. Vitest draait testbestanden standaard parallel. Beide bestanden delen één database, en sweepStaleQueueClaims() heeft bewust géén filter op afzender: hij requeue't élke stale rij in agent_message. De fase-3 sweep zet dus de rijen terug op pending die de fase-2 eigenaarstests net op claimed hadden gezet, waarna QUEUE_NOT_CLAIMER een QUEUE_CLAIM_EXPIRED wordt.

Dat afzenderloze gedrag is correct — in productie moet de sweep juist alles opruimen wat verweesd is, ongeacht wie het claimde. Het probleem zit in de testopstelling, niet in de sweep.

Fix. Een test:integration-script dat --no-file-parallelism meegeeft. Serieel draaien lost het volledig op: 29 tests over 3 bestanden groen, twee opeenvolgende runs bevestigd. Het script pakt ook create-concurrency.integration.test.ts mee, die al bestond.

De waarschuwing die al in de fase-3-header stond is nu concreet gemaakt — welke tests omvallen en welk commando je gebruikt — en staat ook in het fase-2-bestand, want daar zie je de fout. CLAUDE.md legt uit waarom serieel een eis is en geen voorkeur, met de waarschuwing om TEST_DATABASE_URL nooit op scrum4me te richten.

Geen productiecode gewijzigd. npm test blijft 1335 passed | 29 skipped; typecheck schoon.

Dit had ik moeten opmerken toen ik de fase-3-integratietests toevoegde: ik had beide suites alleen apart gedraaid, nooit samen.

🤖 Generated with Claude Code

Na het mergen van fase 2 en fase 3 zijn de queue-integratietests niet meer samen te draaien. Apart zijn ze groen (17 en 9), samen vallen er 3–4 om — met een wisselende samenstelling per run, dus een race. **Oorzaak.** Vitest draait testbestanden standaard parallel. Beide bestanden delen één database, en `sweepStaleQueueClaims()` heeft bewust géén filter op afzender: hij requeue't élke stale rij in `agent_message`. De fase-3 sweep zet dus de rijen terug op `pending` die de fase-2 eigenaarstests net op `claimed` hadden gezet, waarna `QUEUE_NOT_CLAIMER` een `QUEUE_CLAIM_EXPIRED` wordt. Dat afzenderloze gedrag is correct — in productie moet de sweep juist alles opruimen wat verweesd is, ongeacht wie het claimde. Het probleem zit in de testopstelling, niet in de sweep. **Fix.** Een `test:integration`-script dat `--no-file-parallelism` meegeeft. Serieel draaien lost het volledig op: 29 tests over 3 bestanden groen, twee opeenvolgende runs bevestigd. Het script pakt ook `create-concurrency.integration.test.ts` mee, die al bestond. De waarschuwing die al in de fase-3-header stond is nu concreet gemaakt — welke tests omvallen en welk commando je gebruikt — en staat ook in het fase-2-bestand, want daar zie je de fout. `CLAUDE.md` legt uit waarom serieel een eis is en geen voorkeur, met de waarschuwing om `TEST_DATABASE_URL` nooit op `scrum4me` te richten. **Geen productiecode gewijzigd.** `npm test` blijft 1335 passed | 29 skipped; typecheck schoon. Dit had ik moeten opmerken toen ik de fase-3-integratietests toevoegde: ik had beide suites alleen apart gedraaid, nooit samen. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
fix(test): draai integratietests serieel — de sweep requeue't rijen van andere testbestanden
All checks were successful
CI / Verify (pull_request) Successful in 1m58s
6fcaee1173
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
janpeter/scrum4me-mcp!103
No description provided.