Skip to content

Bump jsdom from 26.1.0 to 29.1.1#130

Merged
eviltester merged 2 commits into
masterfrom
dependabot/npm_and_yarn/jsdom-29.1.1
Jun 11, 2026
Merged

Bump jsdom from 26.1.0 to 29.1.1#130
eviltester merged 2 commits into
masterfrom
dependabot/npm_and_yarn/jsdom-29.1.1

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github May 20, 2026

Copy link
Copy Markdown
Contributor

Bumps jsdom from 26.1.0 to 29.1.1.

Release notes

Sourced from jsdom's releases.

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)
  • Fixed a memory leak when stylesheets were removed from the document.
  • Fixed CSSStyleDeclaration modifications to properly trigger custom element reactions.
  • Fixed nested @media rule parsing.
  • Fixed CSSStyleSheet's "disallow modification" flag not being checked in all mutation methods.
  • Fixed XMLHttpRequest's response getter returning parsed JSON during the LOADING state instead of null.
  • Fixed getComputedStyle() crashing in XHTML documents when stylesheets contained at-rules such as @page or @font-face.
  • Fixed a potential hang in synchronous XMLHttpRequest caused by a race condition with the worker thread's idle timeout.

v28.1.0

  • Added blob.text(), blob.arrayBuffer(), and blob.bytes() methods.
  • Improved getComputedStyle() to account for CSS specificity when multiple rules apply. (@​asamuzaK)
  • Improved synchronous XMLHttpRequest performance by using a persistent worker thread, avoiding ~400ms of setup overhead on every synchronous request after the first one.
  • Improved performance of node.getRootNode(), node.isConnected, and event.dispatchEvent() by caching the root node of document-connected trees.
  • Fixed getComputedStyle() to correctly handle !important priority. (@​asamuzaK)
  • Fixed document.getElementById() to return the first element in tree order when multiple elements share the same ID.
  • Fixed <svg> elements to no longer incorrectly proxy event handlers to the Window.
  • Fixed FileReader event timing and fileReader.result state to more closely follow the spec.

... (truncated)

Commits
  • 9b9ea7e 29.1.1
  • 07efb78 Optimize computed style comparison
  • 5f66329 Fix background-origin/background-clip in background shorthand
  • ad8af77 Fix border shorthand handling
  • 5a3e88e 29.1.0
  • 73db204 Update dependencies and dev dependencies
  • a7168a5 Support ratio CSS unit type
  • 15346e0 Fix style cache invalidation
  • 2a1e2cd 29.0.2
  • 4097d66 Resolve computed CSS values lazily in CSSStyleDeclaration
  • 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.


@dependabot dependabot Bot added dependencies Pull requests that update a dependency file npm npm ecosystem dependency updates labels May 20, 2026
@dependabot dependabot Bot requested a review from eviltester as a code owner May 20, 2026 08:15
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file npm npm ecosystem dependency updates labels May 20, 2026
@dependabot dependabot Bot force-pushed the dependabot/npm_and_yarn/jsdom-29.1.1 branch 2 times, most recently from 1727ac9 to 7e45240 Compare June 2, 2026 14:21
@dependabot dependabot Bot force-pushed the dependabot/npm_and_yarn/jsdom-29.1.1 branch from 7e45240 to 2cd3cb8 Compare June 11, 2026 09:00
@greptile-apps

greptile-apps Bot commented Jun 11, 2026

Copy link
Copy Markdown

Greptile Summary

This PR upgrades jsdom from 26.1.0 to 29.1.1 and bumps the CI Node.js runtime from 22.21.1 to 24.16.0, including adding .nvmrc and an engines constraint in package.json. One test assertion order is corrected to match jsdom 29's behavioral change where querySelector('#id') now internally invokes getElementById through the revamped DOM selector engine.

  • jsdom 26 → 29: Major version jump bringing a full CSSOM overhaul (replaced cssstyle/@acemir/cssom with css-tree), improved getComputedStyle(), spec-compliant media query parsing, and various bug fixes. New transitive dependencies (css-tree, @asamuzakjp/dom-selector, undici, parse5 8, tough-cookie 6, etc.) are pulled in.
  • Node.js 22 → 24: All workflows updated consistently; .nvmrc added for local env alignment; engines set to >=24.9.0 in package.json.
  • Test fix in help-tooltips.test.js: The getElementByIdSpy assertion is moved before querySelector('#inline-help-items') to prevent a false positive — jsdom 29's new selector engine resolves #id selectors via getElementById internally, which would have tripped the spy check if done afterward.

Confidence Score: 5/5

Safe to merge — all changes are consistent dependency and runtime upgrades with a single targeted test fix for the new jsdom selector behavior.

The jsdom and Node.js upgrades are applied consistently across package.json, lock file, and all CI workflows. The only test change is a two-line assertion reorder that correctly accommodates jsdom 29's new selector engine delegating #id queries through getElementById. No logic, API surface, or production code was modified.

No files require special attention.

Important Files Changed

Filename Overview
package.json jsdom bumped to 29.1.1; engines field added restricting to Node >=24.9.0; otherwise standard dependency metadata.
packages/core-ui/src/tests/utils/help-tooltips.test.js Two assertion lines swapped so the getElementById spy is checked before querySelector runs; necessary for jsdom 29 compatibility where #id selectors delegate to getElementById internally.
.github/workflows/node.js.yml Node.js version uniformly updated from 22.21.1 to 24.16.0 across all jobs; artifact names updated to match.
.github/workflows/publish-testenv.yml Node.js version updated from 22.21.1 to 24.16.0; no other changes.
.nvmrc New file pinning local Node.js version to 24.16.0 via nvm.
pnpm-lock.yaml Lock file regenerated to reflect jsdom 29.1.1 and its new dependency tree (css-tree, parse5 8, undici 7, tough-cookie 6, etc.).

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A["jsdom 26.1.0\n(cssstyle + @acemir/cssom\nnwsapi selector engine)"] -->|upgrade| B["jsdom 29.1.1\n(css-tree CSSOM\n@asamuzakjp/dom-selector)"]

    B --> C["New transitive deps\nparse5@8, undici@7\ntough-cookie@6, css-tree@3"]

    B --> D["querySelector('#id')\nnow delegates to getElementById"]
    D --> E["Test assertion order\nswapped in help-tooltips.test.js\n(spy check before querySelector)"]

    F["Node.js 22.21.1"] -->|upgrade| G["Node.js 24.16.0"]
    G --> H[".nvmrc added\nengines: >=24.9.0"]
    G --> I["All CI workflow jobs\nupdated"]
Loading

Reviews (5): Last reviewed commit: "Support jsdom 29 on Node 24" | Re-trigger Greptile

Comment thread package.json
"jest-environment-jsdom": "30.3.0",
"jest-extended": "7.0.0",
"jsdom": "26.1.0",
"jsdom": "29.1.1",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 security Install-script change flagged by Dependabot

Dependabot's PR description explicitly warns: "This version modifies prepare script that runs during installation." The prepare lifecycle script executes automatically on pnpm install, so a change here runs arbitrary code on every developer machine and CI runner. It's worth inspecting the published jsdom 29.1.1 package contents (e.g. via npm pack jsdom@29.1.1 or https://www.npmjs.com/package/jsdom?activeTab=code) to confirm the script change is benign before merging.

@dependabot dependabot Bot force-pushed the dependabot/npm_and_yarn/jsdom-29.1.1 branch 2 times, most recently from a167095 to 21207b1 Compare June 11, 2026 09:41
Bumps [jsdom](https://github.com/jsdom/jsdom) from 26.1.0 to 29.1.1.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Commits](jsdom/jsdom@v26.1.0...v29.1.1)

---
updated-dependencies:
- dependency-name: jsdom
  dependency-version: 29.1.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot force-pushed the dependabot/npm_and_yarn/jsdom-29.1.1 branch from 21207b1 to 5c45d8d Compare June 11, 2026 09:47
@eviltester eviltester merged commit e050146 into master Jun 11, 2026
13 checks passed
@eviltester eviltester deleted the dependabot/npm_and_yarn/jsdom-29.1.1 branch June 11, 2026 11:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file npm npm ecosystem dependency updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant