Skip to content

docs: record why msw and jsdom are held below latest - #119

Merged
Isaries merged 1 commit into
mainfrom
docs/dependency-holds
Aug 7, 2026
Merged

docs: record why msw and jsdom are held below latest#119
Isaries merged 1 commit into
mainfrom
docs/dependency-holds

Conversation

@Isaries

@Isaries Isaries commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator

Summary

frontend/package.json pins msw at 2.7.3 and jsdom at 26.1.0, and nothing in the repo said why. The reasoning existed only in a comment on merged PR #108 and in open PR #110.

Dependabot re-proposes both weekly, so the cost of not writing this down is paid repeatedly: either someone re-derives the investigation, or the bump lands and breaks CI again.

Why these two need more than a version number

Both fail in a way that produces no assertion to point at:

  • msw 2.15.0 aborts the Node process during test teardown via a libuv assertion. The tests die with their worker, so the suite reports 169 passed (172) with no failure message. Isolating it took several full-suite runs.
  • jsdom 30 returns an empty NodeList for a valid selector, so Vue Test Utils find(...).exists() assertions pass vacuously. Rewriting the one visible assertion would turn CI green while hiding an unknown number of silent passes — which is exactly why that hold is not a workaround.

So each entry carries a paste-and-run reproduction and an explicit release condition, not just blocked.

Changes

  • docs/dependency-holds.md — new. One entry per hold: evidence, reproduction, how it was isolated, and when to release. States that stale entries must be deleted.
  • frontend/CLAUDE.md — a short section above Commands pointing at it, so the warning is where someone reaching for a bump will actually be.

No code or dependency changes.

Both are pinned back and nothing in the repo said why. package.json carries a
bare version, and the reasoning lived only in a comment on a merged PR.
Dependabot re-proposes both weekly, so the next person either re-derives the
investigation or lands the bump and breaks CI again.

Both failures are the kind that produce no assertion to point at: msw 2.15.0
aborts the Node process mid-teardown via a libuv assertion, so tests vanish with
their worker and the suite just reports a lower file count; jsdom 30 returns an
empty NodeList for a valid selector, so Vue Test Utils assertions pass
vacuously. Each entry therefore carries a paste-and-run reproduction and the
condition for releasing the hold, not just a version number.
@Isaries
Isaries merged commit 18c1cc7 into main Aug 7, 2026
23 checks passed
@Isaries
Isaries deleted the docs/dependency-holds branch August 7, 2026 04:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant