Skip to content

chore(deps): tighten the jsdom cap to >=27, measured not assumed - #429

Merged
saquibrashid merged 1 commit into
mainfrom
chore/jsdom-cap-27
Oct 8, 2026
Merged

saquibrashid merged 1 commit into
mainfrom
chore/jsdom-cap-27

Conversation

@saquibrashid

Copy link
Copy Markdown
Owner

Summary

The jsdom hold landed in #426 with versions: ['>=28']. That bound was an
assumption about where the accname whitespace regression began, not a
measurement — and it was wrong. The gap let Dependabot immediately raise #427
(jsdom 25.0.1 → 27.4.0).

#427 failed jobs 4 · test:unit + coverage and 6 · test:web with exactly
the same five tests
as the jsdom 30 PR:

  • T-UX-145c — the trigger counts active filter values but not the search term
  • T-AVREV-009a — two labelled sections, each row with its fact, as-of date and answers
  • T-PHONE-005a — every chip is a native checkbox that writes the URL
  • T-PHONE-005b — Reset clears every filter but keeps the search text
  • T-TOOLBAR-002b — an active filter is shown by count and state, but search alone is not

Test Files 4 failed | 104 passed (108) · Tests 5 failed | 1619 passed (1624)

⚠ The other ten jobs passed on that same commit, including
9 · test:a11y — Playwright against real browsers. That is the identical
jsdom-red / real-browser-green split documented in #426, and it carries the
identical conclusion: the markup in FilterBar.tsx is correct and the
simulation is not. FilterBar.tsx is therefore unchanged here.

So the first bad major is 27, not 28. jsdom 26 remains known good (the
upstream report reproduces clean on 26.1.0), so the cap stays as small as the
evidence supports.

Linked issue / task

Closes #427. Corrects the cap introduced in #426 (which closed #405).

Type of change

  • Feature (a backlog task)
  • Bug fix — a wrong bound in the Dependabot hold
  • Refactor / internal
  • Docs / specs
  • Infrastructure (infra/**) — .github/dependabot.yml

Testing done

Dependabot configuration and documentation only; no acceptance criterion
changes, so no AC → test mapping applies (specs/testing.md §10).

Gates run locally on this branch:

Command Result
npm run format:check passed — "All matched files use Prettier code style!"
python -c "import yaml; ..." (parse .github/dependabot.yml) passed — jsdom now parses as {'versions': ['>=27']}; all 8 ignore entries intact

The evidence for the bound itself is CI on #427, linked above
(run 37818405831): 10 jobs green, jobs 4 and 6 red on the 5 named tests.

T-INFRA-018d reads only package.json, .nvmrc and Dockerfile, so
changing a dependabot.yml ignore bound does not affect it.

Checklist

  • Every acceptance criterion touched maps to a named test that passes. — none touched.
  • No new telemetry/analytics dependency (dependency allow-list, TASK-004). — no dependency change.
  • No secret, credential, connection string, blob URL or SAS in code, logs, or responses.
  • Any new runtime dependency is justified against NFR-004 in this description. — none added.
  • Migrations contain no destructive statement (T-MIG-001). — no migrations.
  • No scheduler / TTL / Agent-job / Elastic-job added (REQ-028, REQ-041).
  • If I edited an executable instruction in a doc, I corrected it in place and struck through the superseded text (the F-001 rule). — both the dependabot.yml comment and runbook §5 carry the corrected bound first, with the superseded >=28 sentence struck through below it.

The jsdom hold landed in #426 with `versions: ['>=28']`, on the assumption
that the accname whitespace regression began in 28. That assumption was
wrong and the cap let Dependabot raise #427 (25.0.1 -> 27.4.0).

#427 failed jobs 4 and 6 with EXACTLY the same five tests as the jsdom 30
PR did - T-UX-145c, T-AVREV-009a, T-PHONE-005a, T-PHONE-005b and
T-TOOLBAR-002b - while the other ten jobs, including 9 . test:a11y
(Playwright, real browsers), passed. Same signature, same conclusion: the
markup is right and jsdom is wrong, from 27 onward.

26 remains known good, so the cap stays as small as the evidence supports.
The runbook paragraph is corrected in place with the superseded sentence
struck through below it, per the F-001 rule.

Closes #427

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c372e6ba-4c3f-419a-9f77-b9e23adfc874
@saquibrashid
saquibrashid merged commit 500a9dd into main Oct 8, 2026
13 checks passed
@saquibrashid
saquibrashid deleted the chore/jsdom-cap-27 branch October 8, 2026 19:02
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