Skip to content

chore(deps-dev): bump the testing group across 1 directory with 7 updates - #342

Merged
fx merged 6 commits into
mainfrom
dependabot/npm_and_yarn/testing-d70aa9d9d6
Sep 8, 2026
Merged

fx merged 6 commits into
mainfrom
dependabot/npm_and_yarn/testing-d70aa9d9d6

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 31, 2026

Copy link
Copy Markdown
Contributor

All 7 bumps land. Two notes a reviewer needs.

The type breakage was vitest, not jest-dom. The bare bump left the runtime suite green and broke tsc with 2245 errors, every one Property '<matcher>' does not exist on type 'Assertion<void, HTMLElement>'. jest-dom's root type entry is byte-identical between 6.9.1 and 7.0.1 — one line, /// <reference path="jest.d.ts" /> — and augments the global jest.Matchers namespace. It reached vitest 4 only because vitest 4's Assertion<T> extended that namespace; vitest 5 changed the signature to Assertion<R, T> and dropped the bridge.

The obvious one-liner was rejected on measurement. Switching the setup file to @testing-library/jest-dom/vitest does make tsc pass — because jest-dom 7.0.1's /vitest entry declares Assertion<T = any> against vitest 5's two-parameter Assertion<R, T>, which is TS2428, raised inside node_modules where this repo's skipLibCheck: true hides it. Confirmed with --skipLibCheck false: three TS2428s. That would leave the type gate correct only while a compiler flag keeps an error out of sight. Instead there is one repo-owned ambient declaration, src/types/jestDom.d.ts, augmenting vitest 5's Matchers — the interface both Assertion<R, T> and AsymmetricMatchersContaining extend. No @ts-expect-error, no tsconfig loosening, no any casts, and src/test/setup.ts is unchanged.

Probed rather than assumed: with the shim a bogus matcher name still fails to resolve, toHaveAttribute() still fails on arity, and toHaveAccessibleName(42) still fails on type. Test counts are 270 files / 6989 tests, identical to main under vitest 4, so nothing dropped from collection.

Lockfile note. The final main merge was resolved from main's lockfile rather than this branch's, deliberately: resolving from this side would have drifted 17 @tanstack/* entries one patch ahead of main, and those ship inside panel.js. Resolving from main's side keeps the tanstack subtree byte-identical to main and confines drift to @playwright/test 1.62.1→1.63.0 plus two dev-only transitives, none of which ship. @tanstack/react-store remains held at ^0.9.3 and deduped to a single copy, so #340's 4,153 B saving is intact.


Bumps the testing group with 7 updates in the / directory:

Package From To
@playwright/test 1.61.1 1.62.1
@testing-library/jest-dom 6.9.1 7.0.1
@testing-library/react 16.3.2 16.3.3
@testing-library/user-event 14.6.1 14.6.7
@vitest/coverage-v8 4.1.10 5.0.0
jsdom 27.4.0 30.0.1
vitest 4.1.10 5.0.0

Updates @playwright/test from 1.61.1 to 1.62.1

Release notes

Sourced from @​playwright/test's releases.

v1.62.1

Bug Fixes

  • #41989 [Regression]: tsconfig "extends" bare specifier isn't resolved via node_modules walk-up like tsc (fatal since 1.62)
  • #41998 [Regression]: directory-form tsconfig project references ("path": "../pkg") fail to resolve (fatal since 1.62)
  • #41985 Accessibility snapshot drops button name when text is nested inside spans with aria-hidden SVG
  • #42000 [Regression]: page.evaluate() arg of a branded primitive type (string & { brand }) no longer type-checks since 1.62
  • #42013 [BUG]Image-type actionable elements are not presented in the snapshot.

v1.62.0

🧱 New component testing model

Component testing moves to a stories and galleries model. A story wraps your component in one specific scenario — hard-coded props, mock data, providers — and a gallery page that you serve renders stories on demand. The new fixtures.mount() fixture navigates to the gallery, mounts a story by id, and returns a Locator scoped to the story's root element:

test('click should expand', async ({ mount }) => {
  const component = await mount('components/Expandable/Stateful');
  await component.getByRole('button').click();
  await expect(component.getByTestId('expanded')).toHaveValue('true');
});

Pass a story type as a template argument to type-check its props, and use update(props) / unmount() on the returned locator to re-render or tear down within a test.

🛑 Cancel operations with AbortSignal

Most operations and web-first assertions now accept a signal option that takes an AbortSignal, letting you cancel long-running actions, navigations, waits, and assertions:

const controller = new AbortController();
setTimeout(() => controller.abort(), 1000);
await page.getByRole('button', { name: 'Submit' }).click({ signal: controller.signal });
await expect(page.getByText('Done')).toBeVisible({ signal: controller.signal });

Providing a signal does not disable the default timeout; pass timeout: 0 to disable it.

🖼️ WebP screenshots

expect(page).toHaveScreenshot() and expect(locator).toHaveScreenshot() can now store snapshots in the WebP format — just give the snapshot a .webp name:

// Visual comparisons store the golden snapshot as lossless WebP.
await expect(page).toHaveScreenshot('homepage.webp');
// Standalone screenshots can trade quality for size with lossy WebP.
await page.screenshot({ path: 'homepage.webp', quality: 50 });
</tr></table>

... (truncated)

Commits
  • 26a9e47 cherry-pick(#42043): docs: release notes for v1.62 Python, Java, and .NET (#4...
  • 0a81d5d cherry-pick(#42040): docs(release-notes): mention the isolated headless clipb...
  • 8376826 cherry-pick(#42034): fix(aria): keep icon-only clickable elements in ai snaps...
  • 66c5cc9 chore: mark v1.62.1 (#42020)
  • 9672bc3 cherry-pick(#42009): fix(types): support branded primitives in evaluate argum...
  • 4325804 cherry-pick(#41988): fix(aria): preserve names from collapsed text contributors
  • 9632f8e cherry-pick(#42005): fix(tsconfig): do not throw when "extends"/"references" ...
  • e3950d9 chore: mark v1.62.0 (#41981)
  • f07e0f7 cherry-pick(#41940): docs: release notes for v1.62 (#41967)
  • 05a306c cherry-pick(#41964): Revert "feat(routeFromHar): add interceptAPIRequests opt...
  • Additional commits viewable in compare view

Updates @testing-library/jest-dom from 6.9.1 to 7.0.1

Release notes

Sourced from @​testing-library/jest-dom's releases.

v7.0.1

7.0.1 (2026-08-09)

Bug Fixes

  • declare vitest as an optional peer dependency (#733) (3782c78)

v7.0.0

7.0.0 (2026-07-20)

Features

  • add toContainAnyBy* and toContainOneBy* query matchers (1e39089)

BREAKING CHANGES

  • @​testing-library/dom is now a required peer dependency. The minimum supported Node.js version is now 22.

Repaired release for testing-library/jest-dom#731

v6.10.0

6.10.0 (2026-07-20)

Features

  • add toContainAnyBy* and toContainOneBy* query matchers (#731) (cae44df)
Commits
  • 3782c78 fix: declare vitest as an optional peer dependency (#733)
  • 1e39089 feat: add toContainAnyBy* and toContainOneBy* query matchers
  • cae44df feat: add toContainAnyBy* and toContainOneBy* query matchers (#731)
  • 55c07ce ci: switch release to npm trusted publishing (#726)
  • 213256f docs: move toHaveSelection from the deprecated section (#717)
  • See full diff in compare view
Maintainer changes

This version was pushed to npm by GitHub Actions, a new releaser for @​testing-library/jest-dom since your current version.


Updates @testing-library/react from 16.3.2 to 16.3.3

Release notes

Sourced from @​testing-library/react's releases.

v16.3.3

16.3.3 (2026-08-27)

Bug Fixes

  • Avoid act() re-entrant when dispatching events (#1468) (20ce75f)
Commits

Updates @testing-library/user-event from 14.6.1 to 14.6.7

Release notes

Sourced from @​testing-library/user-event's releases.

v14.6.7

14.6.7 (2026-09-02)

Bug Fixes

  • normalize DataTransfer format aliases (#1326) (1e0020b)
  • feature: Add iframe support for user.keyboard typing (#1275) (1e0020b)

v14.6.6

14.6.6 (2026-08-22)

Bug Fixes

  • default pointer event pointerType to empty string instead of the string "undefined" (#1325) (71a5475)

v14.6.5

14.6.5 (2026-08-18)

Bug Fixes

  • tab retargeting if focus moved during keydown (#1296) (43efda7)

v14.6.4

14.6.4 (2026-08-11)

Bug Fixes

v14.6.3

14.6.3 (2026-08-03)

Bug Fixes

v14.6.2

14.6.2 (2026-08-03)

Commits
  • 1e0020b fix: normalize DataTransfer format aliases (#1326)
  • d4b0593 feature: Add iframe support for user.keyboard typing (#1275)
  • 71a5475 fix: default pointer event pointerType to empty string instead of the string ...
  • 43efda7 fix: tab retargeting if focus moved during keydown (#1296)
  • d7e80e3 fix: keyboard event repeat property (#1312)
  • 43d8e6c ci: remove broken npm backfill step (#1322)
  • 1d18b1f fix(release): manually release a patch version (#1321)
  • 232f3e6 docs: add migration note and clean up README badges (#1320)
  • 83e2b22 ci: remove deprecated CodeSandbox CI (#1318)
  • e8da819 ci: publish to npm via OIDC trusted publishing (#1317)
  • Additional commits viewable in compare view
Maintainer changes

This version was pushed to npm by GitHub Actions, a new releaser for @​testing-library/user-event since your current version.


Updates @vitest/coverage-v8 from 4.1.10 to 5.0.0

Release notes

Sourced from @​vitest/coverage-v8's releases.

v5.0.0

Vitest 5 is officially out! This release focuses on performance and brings a lot of new features while fixing long-standing bugs. See our blog post for the official announcement.

   🚨 Breaking Changes

... (truncated)

Commits

Updates jsdom from 27.4.0 to 30.0.1

Release notes

Sourced from jsdom's releases.

v30.0.1

  • Fixed getComputedStyle() with calc() and other functions throwing an exception, which regressed in v30.0.0. (@​asamuzaK)
  • Sped up up range operations on large documents (@​leonidaz)

v30.0.0

Breaking changes:

  • Node.js minimum version raised to ^22.22.2 || ^24.15.0 || >=26.0.0.

Other changes:

  • Added CSS.escape() and CSS.supports() functions. (@​asamuzaK)
  • Added 'background-position-x' and 'background-position-y' CSS properties. (@​olagokemills)
  • Fixed getComputedStyle() to convert length values into pixels. (@​asamuzaK)
  • Fixed CSS function serialization, e.g., in the return value of getPropertyValue(). (@​asamuzaK)
  • Fixed the type of error thrown by document.evaluate() (@​dokson)

v29.1.1

  • Fixed 'border-radius' computed style serialization. (@​asamuzaK)
  • Fixed computed style computation when using 'background-origin' and 'background-clip' CSS properties. (@​asamuzaK)
  • Significantly optimized initial calls to getComputedStyle(), before the cache warms up. (@​asamuzaK)

v29.1.0

  • Added basic support for the ratio CSS type. (@​asamuzaK)
  • Fixed getComputedStyle() sometimes returning outdated results after CSS was modified. (@​asamuzaK)

v29.0.2

  • Significantly improved and sped up getComputedStyle(). Computed value rules are now applied across a broader set of properties, and include fixes related to inheritance, defaulting keywords, custom properties, and color-related values such as currentcolor and system colors. (@​asamuzaK)
  • Fixed CSS 'background' and 'border' shorthand parsing. (@​asamuzaK)

v29.0.1

  • Fixed CSS parsing of 'border', 'background', and their sub-shorthands containing keywords or var(). (@​asamuzaK)
  • Fixed getComputedStyle() to return a more functional CSSStyleDeclaration object, including indexed access support, which regressed in v29.0.0.

v29.0.0

Breaking changes:

  • Node.js v22.13.0+ is now the minimum supported v22 version (was v22.12.0+).

Other changes:

  • Overhauled the CSSOM implementation, replacing the @acemir/cssom and cssstyle dependencies with fresh internal implementations built on webidl2js wrappers and the css-tree parser. Serialization, parsing, and API behavior is improved in various ways, especially around edge cases.
  • Added CSSCounterStyleRule and CSSNamespaceRule to jsdom Windows.
  • Added cssMediaRule.matches and cssSupportsRule.matches getters.
  • Added proper media query parsing in MediaList, using css-tree instead of naive comma-splitting. Invalid queries become "not all" per spec.
  • Added cssKeyframeRule.keyText getter/setter validation.
  • Added cssStyleRule.selectorText setter validation: invalid selectors are now rejected.
  • Added styleSheet.ownerNode, styleSheet.href, and styleSheet.title.
  • Added bad port blocking per the fetch specification, preventing fetches to commonly-abused ports.
  • Improved Document initialization performance by lazily initializing the CSS selector engine, avoiding ~0.5 ms of overhead per Document. (@​thypon)

... (truncated)

Commits
  • 6584485 30.0.1
  • 0c51df6 Update dependencies and dev dependencies
  • 32adb34 Bump @​asamuzakjp/dom-selector
  • 70f014a Speed up range operations on large documents
  • 250d7ee Partially fix getComputedStyle with calc()
  • 20a01fc 30.0.0
  • 8c8e583 Precompute WPT expectation matches
  • f32245c Bump Node.js floor and dependencies
  • 03ef23b Add background-position longhands
  • ded056f Test CSS.escape() with numeric IDs
  • Additional commits viewable in compare view
Maintainer changes

This version was pushed to npm by GitHub Actions, a new releaser for jsdom since your current version.

Install script changes

This version modifies prepare script that runs during installation. Review the package contents before updating.


Updates vitest from 4.1.10 to 5.0.0

Release notes

Sourced from vitest's releases.

v5.0.0

Vitest 5 is officially out! This release focuses on performance and brings a lot of new features while fixing long-standing bugs. See our blog post for the official announcement.

   🚨 Breaking Changes

... (truncated)

Commits
  • f441c6f chore: release v5.0.0 (#11130)
  • d46a747 fix: treat test.describe as a suite during static collection (#11128)
  • 584cf30 fix: add a warning if inline project has duplicate plugins due to unexpected ...
  • f08ce4b fix: apply queued mocks from doMock() in queue order (fixes #10706) (#11127)
  • 897f51f chore: release v5.0.0-rc.4 (#11107)
  • 1339b06 chore(deps): update all non-major dependencies (#11104)
  • 51e9494 feat!: parse files statically in vitest list by default (#11088)
  • 2122ffd fix: propagate --maxWorkers to projects (#11102)
  • dc10f5f fix(browser): report the action error when a task times out (#11101)
  • d4fe198 feat: promote clearCache out of experimental (#11086)
  • Additional commits viewable in compare view

@dependabot @github

dependabot Bot commented on behalf of github Aug 31, 2026

Copy link
Copy Markdown
Contributor Author

Labels

The following labels could not be found: dependencies, npm. Please create them before Dependabot can add them to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

…ates

Bumps the testing group with 7 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@playwright/test](https://github.com/microsoft/playwright) | `1.61.1` | `1.62.1` |
| [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) | `6.9.1` | `7.0.1` |
| [@testing-library/react](https://github.com/testing-library/react-testing-library) | `16.3.2` | `16.3.3` |
| [@testing-library/user-event](https://github.com/testing-library/user-event) | `14.6.1` | `14.6.7` |
| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.10` | `5.0.0` |
| [jsdom](https://github.com/jsdom/jsdom) | `27.4.0` | `30.0.1` |
| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.1.10` | `5.0.0` |



Updates `@playwright/test` from 1.61.1 to 1.62.1
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](microsoft/playwright@v1.61.1...v1.62.1)

Updates `@testing-library/jest-dom` from 6.9.1 to 7.0.1
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md)
- [Commits](testing-library/jest-dom@v6.9.1...v7.0.1)

Updates `@testing-library/react` from 16.3.2 to 16.3.3
- [Release notes](https://github.com/testing-library/react-testing-library/releases)
- [Changelog](https://github.com/testing-library/react-testing-library/blob/main/CHANGELOG.md)
- [Commits](testing-library/react-testing-library@v16.3.2...v16.3.3)

Updates `@testing-library/user-event` from 14.6.1 to 14.6.7
- [Release notes](https://github.com/testing-library/user-event/releases)
- [Changelog](https://github.com/testing-library/user-event/blob/main/CHANGELOG.md)
- [Commits](testing-library/user-event@v14.6.1...v14.6.7)

Updates `@vitest/coverage-v8` from 4.1.10 to 5.0.0
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
- [Commits](https://github.com/vitest-dev/vitest/commits/v5.0.0/packages/coverage-v8)

Updates `jsdom` from 27.4.0 to 30.0.1
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Commits](jsdom/jsdom@v27.4.0...v30.0.1)

Updates `vitest` from 4.1.10 to 5.0.0
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
- [Commits](https://github.com/vitest-dev/vitest/commits/v5.0.0/packages/vitest)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-version: 1.62.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: testing
- dependency-name: "@testing-library/jest-dom"
  dependency-version: 7.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: testing
- dependency-name: "@testing-library/react"
  dependency-version: 16.3.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: testing
- dependency-name: "@testing-library/user-event"
  dependency-version: 14.6.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: testing
- dependency-name: "@vitest/coverage-v8"
  dependency-version: 4.1.11
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: testing
- dependency-name: jsdom
  dependency-version: 30.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: testing
- dependency-name: vitest
  dependency-version: 4.1.11
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: testing
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabot Bot force-pushed the dependabot/npm_and_yarn/testing-d70aa9d9d6 branch from 7d6ac39 to fe8ac31 Compare September 7, 2026 04:12
fx added 2 commits September 8, 2026 03:41
The testing-group bump takes vitest 4 -> 5 and @testing-library/jest-dom
6 -> 7, and the pair leaves the matcher types unreachable: `tsc --noEmit`
reported 2245 errors, every one of them `Property 'toBeInTheDocument'
does not exist on type 'Assertion<void, HTMLElement>'`. The suite itself
was already green — the matchers register fine at runtime — so this is
types only.

Neither augmentation the package ships is usable here. The root entry
`src/test/setup.ts` imports augments the global `jest.Matchers`
namespace and needs `@types/jest`, which this repo does not install;
vitest 4 bridged that gap because its own `Assertion<T>` extended
`jest.Matchers`, and vitest 5 dropped the bridge.

The `/vitest` entry is the obvious one-line alternative, and it is worth
saying why it is not the fix, because it does make `tsc` pass. It
declares `interface Assertion<T = any>` where vitest 5's is
`Assertion<R, T>`, and TypeScript merges an interface only when the type
parameter lists are identical — so the pairing is error TS2428. That
error is raised inside `node_modules`, where `skipLibCheck: true` hides
it while the members merge anyway. Measured, not assumed: with that
import and `--skipLibCheck false`, tsc reports TS2428 three times, once
per declaration. Taking it would leave the type gate correct only for as
long as a compiler option keeps an error out of sight.

So declare the matchers here, against `Matchers`, which is the interface
vitest 5 documents as the extension point and which both
`Assertion<R, T>` and `AsymmetricMatchersContaining` extend. One
declaration therefore covers `expect(el).toBeInTheDocument()`,
`expect(el).not…`, `expect.soft(…)` and `await expect.poll(…)` alike,
and a future mismatch fails loudly because this file is ours.

jest-dom's asymmetric-matcher parameter is passed `never` rather than
the `any` both of its own augmentations use. vitest types
`expect.stringContaining` as `any` and `any` is assignable to
`string | RegExp`, so asymmetric matchers still typecheck while
`toHaveAccessibleName(42)` is now rejected.

Probed rather than assumed green: with the file in place a bogus matcher
name still fails to resolve, `toHaveAttribute()` still fails on arity,
and `toHaveAccessibleName(42)` fails on type — so the declaration
inherits real signatures rather than widening `expect` to anything.

Gates: tsc, eslint and prettier clean; 270 test files / 6989 tests pass,
identical to main's counts under vitest 4, so nothing was silently
dropped from collection. `vitest run --coverage`, `build-storybook` and
`build:ha:prod` all succeed.

Claude-Session: https://claude.ai/code/session_01DvDKK1wMEuMYybZdNixWVC
@codecov

codecov Bot commented Sep 8, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 89.51%. Comparing base (513d48e) to head (c9c911a).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #342      +/-   ##
==========================================
+ Coverage   89.48%   89.51%   +0.02%     
==========================================
  Files         234      234              
  Lines        8962     8952      -10     
  Branches     3037     3037              
==========================================
- Hits         8020     8013       -7     
+ Misses        736      733       -3     
  Partials      206      206              

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

fx added 2 commits September 8, 2026 03:58
# Conflicts:
#	package-lock.json
#	package.json

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

jsdom@30 raises the effective Node floor to ^22.22.2, but package.json still advertises engines.node >=22.12.0, which should be aligned to avoid unsupported-node installs/warnings.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Updates the repo’s dev/testing toolchain versions (Vitest 5, jsdom 30, Testing Library, Playwright) while keeping @testing-library/jest-dom matcher types working under Vitest 5 via a repo-owned ambient type augmentation.

Changes:

  • Bump the testing-related devDependencies (Vitest + coverage, jsdom, Testing Library, Playwright).
  • Add src/types/jestDom.d.ts to reintroduce @testing-library/jest-dom matcher typing for Vitest 5 without relying on skipLibCheck-hidden node_modules errors.
  • Regenerate package-lock.json for the upgraded dependency graph.
File summaries
File Description
src/types/jestDom.d.ts Adds a Vitest module augmentation so jest-dom matchers are typed correctly under Vitest 5.
package.json Updates devDependency versions for the testing toolchain.
package-lock.json Lockfile updates reflecting the bumped dependencies and transitive changes.
Review details
  • Files reviewed: 1/3 changed files
  • Comments generated: 1
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread package.json
Change 0340 declared `engines.node: ">=22.12.0"` while jsdom was still
27. Bumping jsdom to 30 invalidates that: jsdom 30 declares
`^22.22.2 || ^24.15.0 || >=26.0.0`, so the repo was advertising support
for Node 22.12.0-22.22.1, where it will not install. The PR that raises
the floor is the PR that should move the declaration.

The range is the intersection across the whole installed tree, not
jsdom's alone. Re-derived over all 515 packages in the lockfile that
declare `engines.node`, evaluated against 3224 candidate Node versions
spanning majors 18-30: the set those 515 ranges jointly admit and the
set this range admits are the same 1438 versions, with nothing claimed
that the tree rejects and nothing excluded that the tree allows. jsdom
is the binding constraint at every boundary.

A bare `>=22.22.2` floor would be wrong in two places, which is why the
range is spelled out. jsdom excludes the whole Node 23 line and also
24.0-24.14; a `>=` floor silently claims both. 0340 chose a simple floor
when the only casualty was Node 23 (non-LTS and already EOL), and that
trade no longer holds now 24.0-24.14 goes with it.

Worth noting for anyone auditing the old value: `>=22.12.0` was already
slightly optimistic before this bump. 22.12.0 is rejected by
`@asamuzakjp/css-color`, `@asamuzakjp/dom-selector` and
`eslint-visitor-keys`, all of which want `^22.13.0`. jsdom 30 widens an
existing gap rather than opening the first one.

Verified: `npm ci` clean on Node v22.23.2 with zero EBADENGINE warnings,
and the lockfile moves by exactly one line (the root engines mirror)
with no dependency drift. CI pins `node-version: '22.x'` (`'22'` in the
e2e and deploy workflows), which resolves to the newest 22.x — v22.23.2
today, checked against nodejs.org rather than assumed — and so stays
inside `^22.22.2`.

Gates: lint clean; 270 test files / 6989 tests pass; coverage,
build-storybook and build:ha:prod all succeed.

Claude-Session: https://claude.ai/code/session_01DvDKK1wMEuMYybZdNixWVC

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

There are a couple of correctness/maintainability issues in the newly added documentation and dependency declaration that should be addressed before merging.

Review details

Suppressed comments (1)

Previously missed (1) — in code that hasn't changed since the last review.

package.json:70

  • @testing-library/jest-dom 7.x declares @testing-library/dom as a required peer dependency (see package-lock’s peerDependencies block). Relying on it being pulled in transitively makes the root manifest less explicit and can lead to brittle installs if the transitive graph changes; add @testing-library/dom to devDependencies and update the lockfile accordingly.
  • Files reviewed: 1/3 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

@fx
fx merged commit c7fb07b into main Sep 8, 2026
7 checks passed
@fx
fx deleted the dependabot/npm_and_yarn/testing-d70aa9d9d6 branch September 8, 2026 04:33
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.

2 participants