Skip to content

build(deps-dev): bump jsdom from 29.0.2 to 29.1.1#2721

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/main/jsdom-29.1.1
Open

build(deps-dev): bump jsdom from 29.0.2 to 29.1.1#2721
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/main/jsdom-29.1.1

Conversation

@dependabot

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

Copy link
Copy Markdown
Contributor

Bumps jsdom from 29.0.2 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)
Commits


Note

Low Risk
DevDependency-only version bump with lockfile churn; no shipped extension logic is modified.

Overview
Bumps the dev dependency jsdom from 29.0.2 to 29.1.1 in injected/package.json, with the matching lockfile refresh for jsdom and its transitive packages (e.g. parse5, lru-cache, undici, @csstools/css-syntax-patches-for-csstree).

No application or extension runtime code changes—only the test DOM environment used by Jasmine unit tests that import JSDOM (e.g. dom metadata, page context, web detection). The newer jsdom release mainly improves getComputedStyle() behavior and performance, which may slightly affect tests that stub computed styles.

Reviewed by Cursor Bugbot for commit e588413. Bugbot is set up for automated code reviews on this repo. Configure here.

@dependabot dependabot Bot added dependencies Update one or more dependencies version minor Increment the minor version when merged labels May 27, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Suggested comment for Cursor review (copy and paste as a new comment):

@cursoragent can you review against the current code and outline potential impacts based on the changelogs of the update?

Can you check the test coverage and ensure that the new code is covered?
Can you think through if this dependency is still needed or if there's better practices used elsewhere.

Can you draft a separate PR with any fixes that might be needed?

Note: GitHub Actions bot cannot trigger Cursor agent directly. Please copy the above comment to invoke the review.

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Stale comment

Web Compatibility Assessment

No web-compatibility findings. This PR only bumps the injected workspace devDependency jsdom from 29.0.2 to 29.1.1 and updates its lockfile transitive set; it does not change bundled injected source, wrapper utilities, API shims, messaging, config handling, DOM mutation logic, or platform entry points.

Release-note impact is limited to jsdom test behavior: v29.1.0 adds basic CSS ratio type support and fixes stale getComputedStyle() after CSS mutation; v29.1.1 fixes computed style serialization for border-radius/background-origin/background-clip and optimizes initial getComputedStyle() calls. Those can affect DOM/CSS unit-test expectations, but not page-world runtime behavior.

Security Assessment

No PR-introduced security findings. jsdom remains a devDependency used by injected unit tests only (web-detection, page-context-dom, and dom-metadata specs), so the bump does not add injected runtime code, captured-global usage, bridge/origin handling changes, or new data-exfiltration surface.

Risk Level

Low Risk: dependency-only dev/test change with no shipped injected runtime surface and no changes to security-sensitive modules.

Recommendations

  • Keep the dependency: it is still directly used by injected unit tests that construct DOM fragments without a browser process.
  • If reducing test dependency surface becomes a goal later, the alternative is moving those DOM-fragment assertions to a browser/Playwright-backed helper, but that is heavier and not needed for this bump.

Verification: npm ci, npm run build --workspace=injected, and npm run test-unit --workspace=injected all pass (929 specs, 0 failures, 16 pending).

Open in Web View Automation 

Sent by Cursor Automation: Web compat and sec

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Stale comment

Dependency risk assessment for jsdom 29.0.2 -> 29.1.1: no blocking concerns found.

Evidence checked:

  • Diff only changes injected/package.json and package-lock.json; jsdom remains an injected devDependency.
  • Upstream release notes/compare show CSSOM-focused changes: style cache invalidation, ratio CSS units, background-origin/background-clip, border-radius serialization, and getComputedStyle() optimization.
  • Local code search found jsdom only in injected unit tests: web-detection, page-context-dom, and dom-metadata. No production bundle/runtime dependency found.
  • Focused local validation passed: npx jasmine --config=unit-test/config.json unit-test/dom-metadata.spec.js unit-test/page-context-dom.spec.js unit-test/web-detection.js => 118 specs, 0 failures.
  • The full local npm run test-unit --workspace=injected failure was limited to missing generated build artifacts in this workspace; the PR CI has injected/special-pages unit and integration jobs green.
  • Supply-chain pass: jsdom license/engine/maintainers are unchanged; lockfile includes registry integrities; no install lifecycle scripts found for jsdom or the newly introduced/changed transitive packages checked. npm audit still reports existing unrelated dev-tree issues, but none matched the changed jsdom/parse5/entities/undici/@asamuzakjp packages.

Residual risk:

  • The update touches getComputedStyle() and selector/CSS parsing behavior, so regressions would most likely show up in DOM/CSS-dependent tests rather than production code. The direct consumers passed.
  • The Build Release Branch check failure appears to be a git push/network failure (HTTP 408), not a dependency/build failure.

No separate fix PR opened because I did not find a required fix.

Open in Web View Automation 

Sent by Cursor Automation: Review dependabot

@jonathanKingston

Copy link
Copy Markdown
Contributor

@dependabot rebase

@dependabot dependabot Bot force-pushed the dependabot/npm_and_yarn/main/jsdom-29.1.1 branch from 67bd5d1 to 75c7f39 Compare June 9, 2026 14:36
@dependabot dependabot Bot requested a review from a team as a code owner June 9, 2026 14:36
@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Build Branch

Branch pr-releases/dependabot/npm_and_yarn/main/jsdom-29.1.1
Commit f56e008216
Updated June 9, 2026 at 4:40:37 PM UTC

Static preview entry points

QR codes (mobile preview)
Entry point QR code
Docs QR for docs preview
Static pages QR for static pages preview
Integration pages QR for integration pages preview

Integration commands

npm (Android / Extension):

npm i github:duckduckgo/content-scope-scripts#pr-releases/dependabot/npm_and_yarn/main/jsdom-29.1.1

Swift Package Manager (Apple):

.package(url: "https://github.com/duckduckgo/content-scope-scripts.git", branch: "pr-releases/dependabot/npm_and_yarn/main/jsdom-29.1.1")

git submodule (Windows):

git -C submodules/content-scope-scripts fetch origin pr-releases/dependabot/npm_and_yarn/main/jsdom-29.1.1
git -C submodules/content-scope-scripts checkout origin/pr-releases/dependabot/npm_and_yarn/main/jsdom-29.1.1
Pin to exact commit

npm (Android / Extension):

npm i github:duckduckgo/content-scope-scripts#f56e0082167bee9e1e4b4c92b4e2825d3a30b9d7

Swift Package Manager (Apple):

.package(url: "https://github.com/duckduckgo/content-scope-scripts.git", revision: "f56e0082167bee9e1e4b4c92b4e2825d3a30b9d7")

git submodule (Windows):

git -C submodules/content-scope-scripts fetch origin pr-releases/dependabot/npm_and_yarn/main/jsdom-29.1.1
git -C submodules/content-scope-scripts checkout f56e0082167bee9e1e4b4c92b4e2825d3a30b9d7

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Stale comment

Injected PR Evaluation: Web Compatibility & Security

Reviewed PR #2721 (jsdom 29.0.2 → 29.1.1). Diff is limited to injected/package.json and package-lock.json; no files under injected/src/ or platform entry points are touched.

Web Compatibility Assessment

File Severity Finding
injected/package.json info jsdom is a devDependency only. It is not bundled into contentScope.js / inject.js and does not run in user-facing page contexts. No API surface fidelity, prototype chain, DOM timing, or platform-specific runtime concerns apply.
injected/unit-test/*.js (unchanged) info jsdom is consumed only by unit tests (web-detection.js, page-context-dom.spec.js, dom-metadata.spec.js). The 29.1.x release improves getComputedStyle() behavior (border-radius serialization, background-origin/background-clip, cache warmup). This may slightly change test DOM semantics but does not affect live sites.

No web compatibility regressions identified for injected runtime.

Security Assessment

File Severity Finding
injected/package.json info Dev-only dependency bump. No change to captured-globals.js, message bridge, messaging transports, or config trust boundaries.
package-lock.json (transitive) info Lockfile also updates jsdom transitive deps (undici 7.24→7.25, parse5 8.0.0→8.0.1, entities 6→8, lru-cache, @csstools/css-syntax-patches-for-csstree). All remain under the dev/test tree and are not shipped to browsers.

No security vulnerabilities or trust-boundary changes identified.

Risk Level

Low Risk — dependency-only dev/test tooling update with zero injected runtime surface area.

Recommendations

  1. Merge once CI is green. Local verification: npm ci, npm run build --workspace=injected, and npm run test-unit --workspace=injected all succeeded (937 specs, 0 failures).
  2. No runtime follow-up required. If web-detection unit tests ever flake on computed-style assertions, the 29.1.x CSS fixes are more likely to reduce false negatives than introduce breakage.

Cursor automation — injected web compat & security review

Open in Web View Automation 

Sent by Cursor Automation: Web compat and sec

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Stale comment

Dependency review: jsdom 29.0.2 → 29.1.1

Verdict: Low risk — safe to merge. No blocking issues found; no follow-up PR required.


Scope & blast radius

  • jsdom is a devDependency in injected/package.json only — it is not bundled into production browser payloads.
  • Used exclusively by three unit-test files:
    • injected/unit-test/dom-metadata.spec.js — DOM traversal / anchor helpers
    • injected/unit-test/page-context-dom.spec.jsdomToMarkdown fixture tests
    • injected/unit-test/web-detection.jsevaluateMatch visibility / selector tests

Changelog impact (29.0.2 → 29.1.1)

Changes are confined to the CSSOM / getComputedStyle stack:

Version Changes
29.1.0 Style-cache invalidation fix; aspect-ratio support
29.1.1 border-radius serialization fix; background-origin / background-clip fix; getComputedStyle perf optimization

Confirmed relevance to this repo: web-detection unit tests call getComputedStyle for display, visibility, and opacity visibility matching (matching.js:isVisible). This is the only usage surface materially affected by the release notes.

Confirmed non-impact: dom-metadata tests do not exercise computed styles. page-context tests use getComputedStyle indirectly via checkNodeIsVisible for display: none filtering — behavior unchanged.


Test coverage

Ran jsdom-touching specs on Node 22.14.0 with the updated lockfile:

Filter Result
dom-metadata, page-context-dom, web-detection (22 specs) ✅ 0 failures
evaluateMatch visibility suite (34 specs) ✅ 0 failures
hidden-content page-context fixture ✅ 0 failures

Coverage gap (informational, not blocking): No unit tests exercise border-radius, background-origin/clip, or aspect-ratio through jsdom. These are outside current feature usage and irrelevant to production code paths.


Dependency necessity

jsdom remains appropriate here. Unit tests need a lightweight in-process DOM with CSS selector and computed-style support; Playwright integration tests cover real-browser behavior separately. No happy-dom / linkedom usage elsewhere in the monorepo.


Supply chain

Check Status
Package provenance Established maintainers (incl. domenic); MIT license
Lockfile integrity sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q== matches npm registry
Runtime exposure None — devDependency only
Node engine jsdom requires ^20.19.0 || ^22.13.0 || >=24; repo .nvmrc is 22
Transitive bumps entities 6→8 (via parse5), undici 7.24→7.25, lru-cache 11.2→11.5 — all dev-scoped, no known advisories on these versions

Informational note (no action required)

web-detection.js test harness still wraps getComputedStyle with a Proxy to coerce empty-string opacity to "1" (comment: "JSDOM returns '' for opacity"). On 29.1.1, default opacity already serializes as "1", so the workaround is now redundant but harmless. Optional future cleanup only — not a merge blocker.


Separate fix PR

Not needed. All jsdom-dependent tests pass; no production code changes required.

Open in Web View Automation 

Sent by Cursor Automation: Review dependabot

@jonathanKingston

Copy link
Copy Markdown
Contributor

@dependabot rebase

@dependabot dependabot Bot force-pushed the dependabot/npm_and_yarn/main/jsdom-29.1.1 branch from 75c7f39 to c4e4b2d Compare June 9, 2026 15:10

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Stale comment

Injected PR Evaluation: Web Compatibility & Security

Reviewed diff 6a9b19f...c4e4b2d (synchronize). Verified locally: npm ci, npm run build --workspace=injected, npm run test-unit --workspace=injected937 specs, 0 failures.


Web Compatibility Assessment

No injected-runtime findings.

File Severity Explanation
injected/package.json info jsdom is a devDependency only. No changes to injected/src/, entry points, or feature bundles — zero page-world API surface impact.
package-lock.json info Transitive lockfile updates (parse5, entities, lru-cache, undici, @csstools/css-syntax-patches-for-csstree) are confined to the dev/test graph.
injected/unit-test/web-detection.js (consumer, unchanged) info This test file wraps getComputedStyle to paper over jsdom quirks. jsdom 29.1.x improves CSSOM/getComputedStyle fidelity (border-radius serialization, background-origin/clip, cache optimizations). Tests still pass; any behavioral delta is test-harness only.

Security Assessment

No security findings.

File Severity Explanation
Entire diff info No changes to captured-globals.js, wrapper-utils.js, message bridge, messaging transports, or injected/src/features/. jsdom does not ship in production bundles.
package-lock.json info Transitive bumps (undici 7.24.5→7.25.0, parse5 8.0.0→8.0.1, entities 6→8) are dev-scoped; no new network surface in injected runtime.

Risk Level

Low Risk — dev-only dependency bump with no injected source changes; unit tests pass.


Recommendations

  1. Merge once CI is green (local verification already clean).
  2. Optional follow-up (non-blocking): Revisit the getComputedStyle Proxy shim in injected/unit-test/web-detection.js if jsdom 29.1.x now returns browser-like defaults for opacity and related properties — the shim may be redundant but is harmless while tests pass.
Open in Web View Automation 

Sent by Cursor Automation: Web compat and sec

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Stale comment

Dependency update review: jsdom 29.0.2 → 29.1.1

Verdict: Low risk — safe to merge. No blocking issues found.


Scope of change

Only injected/package.json and package-lock.json change. jsdom is a devDependency used exclusively in Jasmine unit tests; it is not bundled into injected scripts shipped to browsers.

Changelog impact (29.0.2 → 29.1.1)

All changes are CSSOM / getComputedStyle() correctness and performance fixes:

Release Changes
29.1.0 getComputedStyle() style-cache invalidation fix; basic ratio CSS unit support
29.1.1 border-radius serialization fix; background-origin / background-clip computed-style fix; faster initial getComputedStyle() calls

No breaking changes, no network/fetch surface changes, no security advisories.

Codebase impact

jsdom is imported in three test files:

  • injected/unit-test/web-detection.js — DOM matching via JSDOM + getComputedStyle() (opacity visibility checks)
  • injected/unit-test/page-context-dom.spec.jsdomToMarkdown fixture tests (display: none visibility)
  • injected/unit-test/dom-metadata.spec.js — anchor/selection metadata helpers (basic DOM only)

Production code that depends on computed styles (web-detection/matching.js, page-context.js, detection-utils.js) runs in real browsers; jsdom fidelity changes do not affect shipped behavior.

Confirmed: jsdom 29.1.1 now returns "1" for default opacity (was "" in 29.0.2). The Proxy workaround in web-detection.js is therefore obsolete but harmless — tests still pass with it in place.

Test coverage

Ran 119 specs touching jsdom consumers (dom-metadata, page-context, WebDetection): 0 failures.

Coverage is adequate for this bump:

  • Opacity-based visibility matching is exercised in web-detection.js (including opacity: 0 cases)
  • display: none hidden-content path is covered in page-context-dom.spec.js

Minor gap (non-blocking): page-context-dom.spec.js does not fixture-test opacity: 0 or visibility: hidden paths in checkNodeIsVisible(). Unlikely to regress on this patch, but worth a follow-up fixture if we want tighter guardrails.

Dependency necessity

jsdom remains the right choice here. It is the only DOM implementation in this repo (no happy-dom/linkedom). Integration tests correctly use Playwright for real-browser coverage. No alternative needed.

Supply chain

Factor Assessment
Package jsdom — mature, MIT, ~22k GitHub stars, maintained by jsdom org
Runtime exposure Dev-only; not in production bundle
Transitive bumps parse5 8.0.1, entities 8.0.0, undici 7.25.0, lru-cache 11.5.1, @asamuzakjp/* CSS helpers — all reputable, dev-scoped
Node requirement entities@8 requires Node ≥ 20.19.0; repo targets Node 22 (.nvmrc) — compatible
Known CVEs None identified for 29.1.1

Separate fix PR

No fix PR needed. The upgrade is clean and tests pass. Optional follow-up (not blocking): remove the obsolete getComputedStyle opacity Proxy shim in web-detection.js now that jsdom returns browser-like defaults.

Open in Web View Automation 

Sent by Cursor Automation: Review dependabot

@jonathanKingston

Copy link
Copy Markdown
Contributor

@dependabot rebase

@dependabot dependabot Bot force-pushed the dependabot/npm_and_yarn/main/jsdom-29.1.1 branch from c4e4b2d to 45f64d4 Compare June 9, 2026 15:38

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Stale comment

Injected PR Evaluation: Web Compatibility & Security

PR: build(deps-dev): bump jsdom from 29.0.2 to 29.1.1

Reviewed diff 23c7c8ce…45f64d43 and verified jsdom usage is confined to unit-test harnesses. Ran 43 jsdom-dependent Jasmine specs locally — all passed.


Web Compatibility Assessment

File Lines Severity Finding
injected/package.json 58 info jsdom is listed under devDependencies only. It is not bundled into platform entry points and has zero runtime impact on injected page-world code.
package-lock.json (transitive) info Lockfile updates pull in CSS/DOM parser patches (@csstools/css-syntax-patches-for-csstree, parse5, entities, etc.). These affect the Node.js test environment only, not browser WebViews.
injected/unit-test/web-detection.js 648–660 info This test helper wraps getComputedStyle to paper over jsdom opacity defaults. jsdom 29.1.x improves getComputedStyle serialization/performance; the Proxy shim remains compatible and tests pass. No production API-fidelity concerns apply.

No web compatibility regressions identified. No changes touch wrapper-utils.js, feature shims, prototype chains, DOM injection paths, or platform bundles.


Security Assessment

File Lines Severity Finding
injected/package.json 58 info Dev-only dependency — not shipped to end users. No exposure of messaging bridge, captured-globals, or nativeData handling.
package-lock.json (transitive) info Transitive bumps (undici 7.25.0, parse5 8.0.1, entities 8.0.0) are test-time only. jsdom's ResourceLoader/fetch paths are not exercised by C-S-S unit tests in a way that could reach production.
package-lock.json entities engines info entities@8 now requires node >=20.19.0. Repo targets Node 22 — compatible.

No security vulnerabilities identified. No changes to trust boundaries, origin validation, global capture hygiene, or config gating.


Risk Level

Low Risk — lockfile-only dev-dependency bump with no modifications to injected source, build entry points, or security-sensitive infrastructure.


Recommendations

  1. Merge once CI is green — no injected-code changes required.
  2. Optional: If CI flakes on web-detection specs, re-run; jsdom 29.1.x getComputedStyle changes are the only plausible (test-only) delta, and local runs passed 43/43 filtered specs.
  3. No follow-up hardening, config gating, or captured-globals changes needed for this PR.
Open in Web View Automation 

Sent by Cursor Automation: Web compat and sec

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Stale comment

Dependency update risk assessment: jsdom 29.0.2 → 29.1.1

Verdict: Low risk — safe to merge. This is a dev-only dependency (injected/package.json); it is not shipped in production bundles.

Scope of change

Only injected/package.json and package-lock.json change. JSDOM is used exclusively in three unit-test files:

  • injected/unit-test/web-detection.js — DOM + getComputedStyle for visibility matching
  • injected/unit-test/page-context-dom.spec.js — DOM for domToMarkdown fixture tests
  • injected/unit-test/dom-metadata.spec.js — DOM traversal helpers

Changelog impact (29.0.2 → 29.1.1)

Both minor releases are CSS/getComputedStyle focused:

v29.1.0

  • Style cache invalidation fix (stale computed styles after CSS mutation)
  • Basic ratio CSS unit support

v29.1.1

  • border-radius computed-style serialization fix
  • background-origin / background-clip computed-style fix
  • Performance optimization for initial getComputedStyle() calls

Confirmed relevance: web-detection/matching.js uses getComputedStyle for display, visibility, and opacity in element visibility checks. The changelog fixes align with code paths exercised by the evaluateMatch visibility tests (display: none, visibility: hidden, opacity: 0). These changes should improve test fidelity, not break it.

Transitive dependency bumps (via lockfile): parse5 8.0.0→8.0.1, entities 6.0.1→8.0.0, lru-cache 11.2.7→11.5.1, undici 7.24.5→7.25.0, @csstools/css-syntax-patches-for-csstree 1.1.1→1.1.5. All are dev-time transitive deps of jsdom.

Test coverage

Ran jsdom-consuming specs on 29.1.1:

cd injected && npm run test-unit -- --filter="web-detection|dom-metadata|page-context"
→ 43 specs, 0 failures

web-detection.js has thorough visibility coverage. page-context-dom.spec.js does not exercise checkNodeIsVisible() (which also calls getComputedStyle) — this is a pre-existing gap, not introduced by this bump.

Node.js engine requirements

  • jsdom 29.1.1 requires ^20.19.0 || ^22.13.0 || >=24.0.0
  • Transitive entities@8.0.0 requires >=20.19.0
  • Repo .nvmrc is 22; CI uses node-version-file: '.nvmrc'. No conflict with current setup.

Supply chain

  • Source: Official jsdom/jsdom on npm, MIT license, ~22k GitHub stars, maintained by established contributors (Domenic Denicola et al.)
  • Integrity: Lockfile pins integrity: sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q==
  • Attack surface: Dev/test only; no runtime network fetches from test code paths reviewed
  • Risk level: Low

Dependency necessity

JSDOM remains appropriate here. It provides lightweight in-process DOM for Jasmine unit tests without Playwright overhead. Integration tests already use Playwright for real-browser coverage. No alternative needed.

Uncertain / informational (not blockers)

  1. Obsolete test shim: web-detection.js still wraps getComputedStyle in a Proxy to coerce opacity: """1", but JSDOM 29.0.2+ already returns "1". The shim is harmless but misleading. Cleanup PR opened separately (not on this branch).
  2. checkNodeIsVisible untested with real JSDOM: page-context.js visibility logic has no dedicated jsdom fixture tests. Worth adding eventually, but unrelated to this bump.

Recommendation

Approve and merge. No production impact, changelog changes are CSS correctness improvements aligned with existing test coverage, and supply-chain risk is low.

Open in Web View Automation 

Sent by Cursor Automation: Review dependabot

@jonathanKingston

Copy link
Copy Markdown
Contributor

@dependabot rebase

@dependabot dependabot Bot force-pushed the dependabot/npm_and_yarn/main/jsdom-29.1.1 branch from 45f64d4 to 8fc30ca Compare June 9, 2026 16:18

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Stale comment

Injected PR Evaluation: Web Compatibility & Security

PR: build(deps-dev): bump jsdom from 29.0.2 to 29.1.1

Web Compatibility Assessment

No findings.

This PR only updates jsdom in injected/package.json (devDependencies) and the lockfile. It does not modify injected/src/, platform entry points, wrapper utilities, or any code shipped into page contexts. jsdom is used exclusively in unit tests (dom-metadata.spec.js, page-context-dom.spec.js, web-detection.js) to simulate DOM APIs in Node — it is not bundled into content-scope scripts.

Security Assessment

No findings.

No changes to captured-globals.js, messaging transports, message bridge, postMessage, or runtime feature initialization. Transitive lockfile updates (parse5, entities, lru-cache, undici, @asamuzakjp/*, @csstools/css-syntax-patches-for-csstree) are dev-only and do not affect the injected runtime attack surface.

Risk Level

Low Risk — dev-only test dependency bump with no injected-runtime code changes.

Recommendations

  1. Info: Merge after CI passes. No injected-runtime action required.
  2. Info: Targeted jsdom unit tests passed locally (118 specs, 0 failures across dom-metadata.spec.js, page-context-dom.spec.js, web-detection.js).
  3. Info: Lockfile churn is limited to jsdom and its transitive dependencies; no unrelated ref or version-downgrade changes observed.

Cursor Automation — Injected PR Evaluation (Web Compatibility & Security)

Open in Web View Automation 

Sent by Cursor Automation: Web compat and sec

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Stale comment

Dependency update risk assessment: jsdom 29.0.2 → 29.1.1

Verdict: Low risk — safe to merge. No blocking issues found. No companion fix PR is needed.


Scope

Package jsdom (devDependency, injected/ workspace only)
Runtime impact None — not bundled into injected scripts or special-pages
Usage 3 unit-test files: web-detection.js, page-context-dom.spec.js, dom-metadata.spec.js

Changelog impact (29.0.2 → 29.1.1)

Changes are confined to CSS/DOM emulation — no networking, script execution, or security-model changes.

v29.1.0

  • Fixed getComputedStyle() returning stale values after CSS modifications (cache invalidation)
  • Added basic ratio CSS unit support

v29.1.1

  • Fixed border-radius computed-style serialization
  • Fixed background-origin / background-clip computed-style computation
  • Performance optimization for initial getComputedStyle() calls

Relevance to this repo: The only direct getComputedStyle consumer in jsdom-backed tests is web-detection.js, which wraps jsdom's getComputedStyle to paper over opacity defaults ("""1"). The v29.1.0 cache-invalidation fix is aligned with that usage pattern. All 43 jsdom-related specs pass on 29.1.1.


Test coverage

Ran jasmine --filter="dom-metadata|page-context|web-detection" against 29.1.1:

  • 43 specs, 0 failures

web-detection.js exercises opacity/visibility matching via matchInDOM(). page-context-dom.spec.js covers DOM-to-markdown traversal. dom-metadata.spec.js covers anchor/text extraction. These are the right surfaces for this bump.

Gap (non-blocking): No unit tests assert jsdom's raw getComputedStyle output for border-radius or background-clip — but those properties aren't used in production code paths that depend on jsdom.


Dependency necessity

jsdom remains the right choice here. It's the sole DOM-emulation library in the repo and is used appropriately for lightweight unit tests that don't need a full Playwright browser. browser-ui-lock unit tests mock getComputedStyle with Jasmine spies instead — a valid pattern that doesn't overlap.


Supply chain

Check Result
Publisher jsdom/jsdom (established, MIT, ~22k stars)
Known CVEs None reported for 29.x
Production attack surface None (devDependencies only)
runScripts: "dangerously" Not used anywhere in test code — safe default
Transitive bumps parse5 8.0.1, entities 6→8, lru-cache 11.5.1, undici 7.25.0 — all dev-only

Node engine requirement: jsdom 29.1.1 requires ^20.19.0 || ^22.13.0 || >=24.0.0. Repo .nvmrc is 22; CI uses node-version-file: '.nvmrc'. Confirmed compatible.


Uncertain / follow-up (non-blocking)

  1. Opacity proxy may be redundant now. web-detection.js still wraps getComputedStyle because "JSDOM returns "" for opacity". v29.1.0's style-cache fix may have improved this. Tests pass either way; consider verifying whether the proxy can be removed in a future cleanup PR.
  2. entities major bump (6→8) is transitive via parse5. Low risk for static test HTML, but worth noting if anyone runs tests on Node < 20.19 locally (repo standard is Node 22).

Confirmed issues

None.


Assessed against commit 8fc30caca on dependabot/npm_and_yarn/main/jsdom-29.1.1.

Open in Web View Automation 

Sent by Cursor Automation: Review dependabot

@jonathanKingston

Copy link
Copy Markdown
Contributor

@dependabot rebase

@dependabot @github

dependabot Bot commented on behalf of github Jun 9, 2026

Copy link
Copy Markdown
Contributor Author

Looks like this PR is already up-to-date with main! If you'd still like to recreate it from scratch, overwriting any edits, you can request @dependabot recreate.

@jonathanKingston

Copy link
Copy Markdown
Contributor

@dependabot recreate

Bumps [jsdom](https://github.com/jsdom/jsdom) from 29.0.2 to 29.1.1.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Commits](jsdom/jsdom@v29.0.2...v29.1.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot force-pushed the dependabot/npm_and_yarn/main/jsdom-29.1.1 branch from 8fc30ca to e588413 Compare June 9, 2026 16:39

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Web Compatibility Assessment

File Lines Severity Finding
injected/package.json 58 info jsdom is a devDependency only. It is not bundled into any platform entry point (apple.js, android.js, windows.js, extension-mv3.js). No injected-runtime API overrides, DOM shims, or prototype patches are affected.
package-lock.json (lockfile) info Transitive updates (parse5 8.0.0→8.0.1, entities 6→8, lru-cache, undici, @csstools/css-syntax-patches-for-csstree) are confined to the dev/test dependency tree.
injected/unit-test/web-detection.js (consumer, unchanged) info This is the primary jsdom consumer and calls getComputedStyle(). jsdom 29.1.x improves computed-style serialization/caching for border-radius, background-origin/background-clip. This may change unit-test assertions but does not affect live page behavior. Local run: 937 specs, 0 failures.

No web-compatibility regressions identified for production injected code.


Security Assessment

File Lines Severity Finding
Entire diff info No changes to injected/src/, captured-globals.js, wrapper-utils.js, message bridge, or platform entry points.
injected/package.json 58 info jsdom runs only in Node.js unit tests; it never executes in the hostile page context and cannot be reached by third-party sites.
package-lock.json (lockfile) info Transitive undici bump (7.24.5→7.25.0) is dev-only; no new network surface in shipped bundles.

No security vulnerabilities or trust-boundary regressions identified.


Risk Level

Low Risk — dependency-only bump confined to dev/test tooling with zero changes to injected runtime, messaging, or security-sensitive code paths.


Recommendations

  1. Merge after CI green — no injected-runtime review blockers.
  2. Validation already exercised locally: npm run build --workspace=injected and npm run test-unit --workspace=injected (937 specs, 0 failures).
  3. Optional awareness: jsdom 29.1.x getComputedStyle() changes are the only behavioral delta relevant to this repo; monitor web-detection.js / dom-metadata.spec.js if CI flakes on style assertions (none observed locally).
Open in Web View Automation 

Sent by Cursor Automation: Web compat and sec

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Dependency review: jsdom 29.0.2 → 29.1.1

Verdict: Low risk — safe to merge. No blocking issues found; no fix PR required.


Scope of change

Item Detail
Files touched injected/package.json, package-lock.json
Classification devDependency only — not shipped in production bundles
Direct consumers 3 unit-test files: web-detection.js, page-context-dom.spec.js, dom-metadata.spec.js

Changelog impact (29.0.2 → 29.1.1)

v29.1.0

  • Added basic support for the ratio CSS type
  • Fixed getComputedStyle() returning stale values after CSS mutation (style-cache invalidation)

v29.1.1

  • Fixed border-radius computed-style serialization
  • Fixed background-origin / background-clip in computed styles
  • Optimized initial getComputedStyle() calls before cache warm-up

Transitive dependency bumps (via lockfile): parse5 8.0.0→8.0.1, entities 6→8, undici 7.24.5→7.25.0, lru-cache 11.2.7→11.5.1, @asamuzakjp/css-color, @asamuzakjp/dom-selector, @csstools/css-syntax-patches-for-csstree.

Relevance to this repo: The only production-adjacent code paths exercised through jsdom are DOM/CSS helpers tested via Jasmine:

  • evaluateMatch() visibility checks (display, visibility, opacity) in web-detection/matching.js
  • checkNodeIsVisible() (display: none, visibility: hidden, opacity) in page-context.js
  • DOM traversal helpers in dom-metadata.js (no getComputedStyle)

The 29.1.x CSS fixes are aligned with these use cases and are unlikely to regress behavior. Confirmed locally on 29.1.1: default opacity is now "1" (was "" in older jsdom), display: none and opacity: 0 serialize correctly.


Test coverage

Area Coverage Result on 29.1.1
Visibility matching (evaluateMatch) 34 specs covering visible / hidden / any, inline styles, zero-size elements ✅ Pass
domToMarkdown + hidden nodes 20 specs including hidden-content (display: none) fixture ✅ Pass
dom-metadata DOM helpers Anchor/selection/metadata specs ✅ Pass

CI runs npm run build -w injected before unit tests, so verify-artifacts specs are covered in the pipeline.

Gap (non-blocking): No unit tests assert jsdom's getComputedStyle fidelity against real-browser baselines — existing tests validate our logic given jsdom's semantics. The opacity Proxy shim in web-detection.js (lines 648–659) was written for the old "" default; it is now redundant on 29.1.1 but harmless.


Is jsdom still needed?

Yes. It is the sole DOM shim for Jasmine unit tests in injected/. Integration tests use Playwright (real browsers). No happy-dom / linkedom alternatives exist in the repo, and jsdom remains the conventional choice for this pattern.


Supply chain

Check Assessment
Package provenance Official jsdom/jsdom on npm, MIT, long-maintained (Domenic Denicola et al.)
Update source Dependabot PR with lockfile integrity hashes
Runtime exposure Dev-only; not bundled into contentScope.js or extension artifacts
Node engine jsdom 29.x requires ^20.19.0 || ^22.13.0 || >=24; repo .nvmrc is 22 — compatible
Transitive risk entities@8 and parse5@8 are well-known HTML-parsing deps; undici is Node's official fetch implementation — all dev-transitive, no red flags

Confirmed vs. uncertain

Confirmed

  • Dev-only bump within the same major (29.x)
  • All jsdom-exercising unit specs pass on 29.1.1
  • Changelog changes are CSS correctness/perf fixes, not API breaks
  • Node version in CI satisfies updated engine constraints

Uncertain (low priority)

  • Whether 29.1.0's style-cache invalidation fix changes any edge-case visibility test not covered by current inline-style fixtures — current suite gives good confidence; no failures observed

Fix PR

Not needed. No code changes required to adopt this bump. Optional follow-up (separate PR, not blocking): remove the obsolete opacity Proxy shim in injected/unit-test/web-detection.js now that jsdom 29.1.x returns "1" by default.

Open in Web View Automation 

Sent by Cursor Automation: Review dependabot

@github-actions github-actions Bot added this pull request to the merge queue Jun 9, 2026
@github-merge-queue github-merge-queue Bot removed this pull request from the merge queue due to no response for status checks Jun 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Update one or more dependencies version minor Increment the minor version when merged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants