build(deps-dev): bump jsdom from 29.0.2 to 29.1.1#2721
Conversation
|
Suggested comment for Cursor review (copy and paste as a new comment): Note: GitHub Actions bot cannot trigger Cursor agent directly. Please copy the above comment to invoke the review. |
There was a problem hiding this comment.
Stale comment
Web Compatibility Assessment
No web-compatibility findings. This PR only bumps the injected workspace devDependency
jsdomfrom29.0.2to29.1.1and 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.0adds basic CSS ratio type support and fixes stalegetComputedStyle()after CSS mutation;v29.1.1fixes computed style serialization forborder-radius/background-origin/background-clipand optimizes initialgetComputedStyle()calls. Those can affect DOM/CSS unit-test expectations, but not page-world runtime behavior.Security Assessment
No PR-introduced security findings.
jsdomremains a devDependency used by injected unit tests only (web-detection,page-context-dom, anddom-metadataspecs), 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, andnpm run test-unit --workspace=injectedall pass (929 specs, 0 failures, 16 pending).Sent by Cursor Automation: Web compat and sec
There was a problem hiding this comment.
Stale comment
Dependency risk assessment for
jsdom29.0.2->29.1.1: no blocking concerns found.Evidence checked:
- Diff only changes
injected/package.jsonandpackage-lock.json;jsdomremains aninjecteddevDependency.- Upstream release notes/compare show CSSOM-focused changes: style cache invalidation, ratio CSS units,
background-origin/background-clip,border-radiusserialization, andgetComputedStyle()optimization.- Local code search found
jsdomonly in injected unit tests:web-detection,page-context-dom, anddom-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=injectedfailure 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:
jsdomlicense/engine/maintainers are unchanged; lockfile includes registry integrities; no install lifecycle scripts found forjsdomor the newly introduced/changed transitive packages checked.npm auditstill reports existing unrelated dev-tree issues, but none matched the changedjsdom/parse5/entities/undici/@asamuzakjppackages.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 Branchcheck 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.
Sent by Cursor Automation: Review dependabot
|
@dependabot rebase |
67bd5d1 to
75c7f39
Compare
Build Branch
Static preview entry points
QR codes (mobile preview)
Integration commandsnpm (Android / Extension): 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.1Pin to exact commitnpm (Android / Extension): 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 |
There was a problem hiding this comment.
Stale comment
Injected PR Evaluation: Web Compatibility & Security
Reviewed PR #2721 (
jsdom29.0.2 → 29.1.1). Diff is limited toinjected/package.jsonandpackage-lock.json; no files underinjected/src/or platform entry points are touched.Web Compatibility Assessment
File Severity Finding injected/package.jsoninfo jsdomis adevDependencyonly. It is not bundled intocontentScope.js/inject.jsand 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 jsdomis consumed only by unit tests (web-detection.js,page-context-dom.spec.js,dom-metadata.spec.js). The 29.1.x release improvesgetComputedStyle()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.jsoninfo 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 ( undici7.24→7.25,parse58.0.0→8.0.1,entities6→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
- Merge once CI is green. Local verification:
npm ci,npm run build --workspace=injected, andnpm run test-unit --workspace=injectedall succeeded (937 specs, 0 failures).- No runtime follow-up required. If
web-detectionunit 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
Sent by Cursor Automation: Web compat and sec
There was a problem hiding this comment.
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
jsdomis a devDependency ininjected/package.jsononly — 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 helpersinjected/unit-test/page-context-dom.spec.js—domToMarkdownfixture testsinjected/unit-test/web-detection.js—evaluateMatchvisibility / selector tests
Changelog impact (29.0.2 → 29.1.1)
Changes are confined to the CSSOM /
getComputedStylestack:
Version Changes 29.1.0 Style-cache invalidation fix; aspect-ratiosupport29.1.1 border-radiusserialization fix;background-origin/background-clipfix;getComputedStyleperf optimizationConfirmed relevance to this repo:
web-detectionunit tests callgetComputedStylefordisplay,visibility, andopacityvisibility matching (matching.js:isVisible). This is the only usage surface materially affected by the release notes.Confirmed non-impact:
dom-metadatatests do not exercise computed styles.page-contexttests usegetComputedStyleindirectly viacheckNodeIsVisiblefordisplay: nonefiltering — 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 evaluateMatchvisibility suite (34 specs)✅ 0 failures hidden-contentpage-context fixture✅ 0 failures Coverage gap (informational, not blocking): No unit tests exercise
border-radius,background-origin/clip, oraspect-ratiothrough 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/linkedomusage elsewhere in the monorepo.
Supply chain
Check Status Package provenance Established maintainers (incl. domenic); MIT license Lockfile integrity sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q==matches npm registryRuntime exposure None — devDependency only Node engine jsdom requires ^20.19.0 || ^22.13.0 || >=24; repo.nvmrcis22✅Transitive bumps entities6→8 (via parse5),undici7.24→7.25,lru-cache11.2→11.5 — all dev-scoped, no known advisories on these versions
Informational note (no action required)
web-detection.jstest harness still wrapsgetComputedStylewith a Proxy to coerce empty-stringopacityto"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.
Sent by Cursor Automation: Review dependabot
|
@dependabot rebase |
75c7f39 to
c4e4b2d
Compare
There was a problem hiding this comment.
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=injected— 937 specs, 0 failures.
Web Compatibility Assessment
No injected-runtime findings.
File Severity Explanation injected/package.jsoninfo jsdomis a devDependency only. No changes toinjected/src/, entry points, or feature bundles — zero page-world API surface impact.package-lock.jsoninfo 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 getComputedStyleto paper over jsdom quirks. jsdom 29.1.x improves CSSOM/getComputedStylefidelity (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, orinjected/src/features/. jsdom does not ship in production bundles.package-lock.jsoninfo Transitive bumps ( undici7.24.5→7.25.0,parse58.0.0→8.0.1,entities6→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
- Merge once CI is green (local verification already clean).
- Optional follow-up (non-blocking): Revisit the
getComputedStyleProxy shim ininjected/unit-test/web-detection.jsif jsdom 29.1.x now returns browser-like defaults foropacityand related properties — the shim may be redundant but is harmless while tests pass.Sent by Cursor Automation: Web compat and sec
There was a problem hiding this comment.
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.jsonandpackage-lock.jsonchange.jsdomis 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; basicratioCSS unit support29.1.1 border-radiusserialization fix;background-origin/background-clipcomputed-style fix; faster initialgetComputedStyle()callsNo breaking changes, no network/fetch surface changes, no security advisories.
Codebase impact
jsdomis imported in three test files:
injected/unit-test/web-detection.js— DOM matching viaJSDOM+getComputedStyle()(opacity visibility checks)injected/unit-test/page-context-dom.spec.js—domToMarkdownfixture tests (display: nonevisibility)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 defaultopacity(was""in 29.0.2). TheProxyworkaround inweb-detection.jsis 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(includingopacity: 0cases)display: nonehidden-content path is covered inpage-context-dom.spec.jsMinor gap (non-blocking):
page-context-dom.spec.jsdoes not fixture-testopacity: 0orvisibility: hiddenpaths incheckNodeIsVisible(). Unlikely to regress on this patch, but worth a follow-up fixture if we want tighter guardrails.Dependency necessity
jsdomremains 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 orgRuntime exposure Dev-only; not in production bundle Transitive bumps parse58.0.1,entities8.0.0,undici7.25.0,lru-cache11.5.1,@asamuzakjp/*CSS helpers — all reputable, dev-scopedNode requirement entities@8requires Node ≥ 20.19.0; repo targets Node 22 (.nvmrc) — compatibleKnown 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
getComputedStyleopacityProxyshim inweb-detection.jsnow that jsdom returns browser-like defaults.Sent by Cursor Automation: Review dependabot
|
@dependabot rebase |
c4e4b2d to
45f64d4
Compare
There was a problem hiding this comment.
Stale comment
Injected PR Evaluation: Web Compatibility & Security
PR:
build(deps-dev): bump jsdom from 29.0.2 to 29.1.1Reviewed diff
23c7c8ce…45f64d43and 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.json58 info jsdomis listed underdevDependenciesonly. 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.js648–660 info This test helper wraps getComputedStyleto paper over jsdom opacity defaults. jsdom 29.1.x improvesgetComputedStyleserialization/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.json58 info Dev-only dependency — not shipped to end users. No exposure of messaging bridge, captured-globals, ornativeDatahandling.package-lock.json(transitive) info Transitive bumps ( undici7.25.0,parse58.0.1,entities8.0.0) are test-time only. jsdom'sResourceLoader/fetch paths are not exercised by C-S-S unit tests in a way that could reach production.package-lock.jsonentitiesenginesinfo entities@8now requiresnode >=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
- Merge once CI is green — no injected-code changes required.
- Optional: If CI flakes on
web-detectionspecs, re-run; jsdom 29.1.xgetComputedStylechanges are the only plausible (test-only) delta, and local runs passed 43/43 filtered specs.- No follow-up hardening, config gating, or
captured-globalschanges needed for this PR.Sent by Cursor Automation: Web compat and sec
There was a problem hiding this comment.
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.jsonandpackage-lock.jsonchange. JSDOM is used exclusively in three unit-test files:
injected/unit-test/web-detection.js— DOM +getComputedStylefor visibility matchinginjected/unit-test/page-context-dom.spec.js— DOM fordomToMarkdownfixture testsinjected/unit-test/dom-metadata.spec.js— DOM traversal helpersChangelog impact (29.0.2 → 29.1.1)
Both minor releases are CSS/
getComputedStylefocused:v29.1.0
- Style cache invalidation fix (stale computed styles after CSS mutation)
- Basic
ratioCSS unit supportv29.1.1
border-radiuscomputed-style serialization fixbackground-origin/background-clipcomputed-style fix- Performance optimization for initial
getComputedStyle()callsConfirmed relevance:
web-detection/matching.jsusesgetComputedStylefordisplay,visibility, andopacityin element visibility checks. The changelog fixes align with code paths exercised by theevaluateMatchvisibility tests (display: none,visibility: hidden,opacity: 0). These changes should improve test fidelity, not break it.Transitive dependency bumps (via lockfile):
parse58.0.0→8.0.1,entities6.0.1→8.0.0,lru-cache11.2.7→11.5.1,undici7.24.5→7.25.0,@csstools/css-syntax-patches-for-csstree1.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.jshas thorough visibility coverage.page-context-dom.spec.jsdoes not exercisecheckNodeIsVisible()(which also callsgetComputedStyle) — 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.0requires>=20.19.0- Repo
.nvmrcis22; CI usesnode-version-file: '.nvmrc'. No conflict with current setup.Supply chain
- Source: Official
jsdom/jsdomon 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)
- Obsolete test shim:
web-detection.jsstill wrapsgetComputedStylein aProxyto coerceopacity: ""→"1", but JSDOM 29.0.2+ already returns"1". The shim is harmless but misleading. Cleanup PR opened separately (not on this branch).checkNodeIsVisibleuntested with real JSDOM:page-context.jsvisibility 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.
Sent by Cursor Automation: Review dependabot
|
@dependabot rebase |
45f64d4 to
8fc30ca
Compare
There was a problem hiding this comment.
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
jsdomininjected/package.json(devDependencies) and the lockfile. It does not modifyinjected/src/, platform entry points, wrapper utilities, or any code shipped into page contexts.jsdomis 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
- Info: Merge after CI passes. No injected-runtime action required.
- Info: Targeted jsdom unit tests passed locally (118 specs, 0 failures across
dom-metadata.spec.js,page-context-dom.spec.js,web-detection.js).- Info: Lockfile churn is limited to
jsdomand its transitive dependencies; no unrelated ref or version-downgrade changes observed.
Cursor Automation — Injected PR Evaluation (Web Compatibility & Security)
Sent by Cursor Automation: Web compat and sec
There was a problem hiding this comment.
Stale comment
Dependency update risk assessment:
jsdom29.0.2 → 29.1.1Verdict: 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
ratioCSS unit supportv29.1.1
- Fixed
border-radiuscomputed-style serialization- Fixed
background-origin/background-clipcomputed-style computation- Performance optimization for initial
getComputedStyle()callsRelevance to this repo: The only direct
getComputedStyleconsumer in jsdom-backed tests isweb-detection.js, which wraps jsdom'sgetComputedStyleto 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.jsexercises opacity/visibility matching viamatchInDOM().page-context-dom.spec.jscovers DOM-to-markdown traversal.dom-metadata.spec.jscovers anchor/text extraction. These are the right surfaces for this bump.Gap (non-blocking): No unit tests assert jsdom's raw
getComputedStyleoutput forborder-radiusorbackground-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-lockunit tests mockgetComputedStylewith 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 ( devDependenciesonly)runScripts: "dangerously"Not used anywhere in test code — safe default Transitive bumps parse58.0.1,entities6→8,lru-cache11.5.1,undici7.25.0 — all dev-onlyNode engine requirement: jsdom 29.1.1 requires
^20.19.0 || ^22.13.0 || >=24.0.0. Repo.nvmrcis22; CI usesnode-version-file: '.nvmrc'. Confirmed compatible.
Uncertain / follow-up (non-blocking)
- Opacity proxy may be redundant now.
web-detection.jsstill wrapsgetComputedStylebecause "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.entitiesmajor bump (6→8) is transitive viaparse5. 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
8fc30cacaondependabot/npm_and_yarn/main/jsdom-29.1.1.Sent by Cursor Automation: Review dependabot
|
@dependabot rebase |
|
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 |
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>
8fc30ca to
e588413
Compare
There was a problem hiding this comment.
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
- Merge after CI green — no injected-runtime review blockers.
- Validation already exercised locally:
npm run build --workspace=injectedandnpm run test-unit --workspace=injected(937 specs, 0 failures). - Optional awareness: jsdom 29.1.x
getComputedStyle()changes are the only behavioral delta relevant to this repo; monitorweb-detection.js/dom-metadata.spec.jsif CI flakes on style assertions (none observed locally).
Sent by Cursor Automation: Web compat and sec
There was a problem hiding this comment.
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
ratioCSS type - Fixed
getComputedStyle()returning stale values after CSS mutation (style-cache invalidation)
v29.1.1
- Fixed
border-radiuscomputed-style serialization - Fixed
background-origin/background-clipin 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) inweb-detection/matching.jscheckNodeIsVisible()(display: none,visibility: hidden,opacity) inpage-context.js- DOM traversal helpers in
dom-metadata.js(nogetComputedStyle)
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.
Sent by Cursor Automation: Review dependabot


Bumps jsdom from 29.0.2 to 29.1.1.
Release notes
Sourced from jsdom's releases.
Commits
9b9ea7e29.1.107efb78Optimize computed style comparison5f66329Fix background-origin/background-clip in background shorthandad8af77Fix border shorthand handling5a3e88e29.1.073db204Update dependencies and dev dependenciesa7168a5Support ratio CSS unit type15346e0Fix style cache invalidationNote
Low Risk
DevDependency-only version bump with lockfile churn; no shipped extension logic is modified.
Overview
Bumps the dev dependency
jsdomfrom 29.0.2 to 29.1.1 ininjected/package.json, with the matching lockfile refresh forjsdomand 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 newerjsdomrelease mainly improvesgetComputedStyle()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.