Bump jsdom from 30.1.3 to 31.0.0
DE
2d ago+46+46+01234567890123456789-68-68-01234567890123456789
Bumps jsdom from 30.1.3 to 31.0.0.
Release notes
Sourced from jsdom's releases.
v31.0.0
Breaking changes
- Changed the optional canvas and image decoding backend from
canvasto@napi-rs/canvas. Install@napi-rs/canvasv1.0.13 or later in the v1.x series alongside jsdom; installingcanvasalone no longer enables this support. The new backend provides prebuilt Skia binaries on supported platforms, and rendering and encoded image bytes can differ. Projects using native canvas objects or custom font registration should follow the canvas migration guidance. Added WebP serialization throughcanvas.toDataURL()andcanvas.toBlob(). Fixed image loading to wait for decoding before firingload, discard obsolete source requests, avoid refetching when dimensions change, and prevent failed images from drawing stale contents. Fixed canvas context and serialization behavior, including unsupported context types, read-onlyctx.canvas, image-drawing exceptions, MIME type and quality normalization, and asynchronousnullresults fromcanvas.toBlob()for empty canvases or encoding failures. (@Brooooooklyn)- Changed CSS parsing, selector matching, and computed styles to use a new integrated implementation, with substantially expanded support and faster selector queries and repeated style reads. This includes cascade layers, nesting,
@scope, custom-property substitution and registration through@propertyandCSS.registerProperty(), typedattr(), conditionalif(), shadow-tree styling with:host,::slotted(), and::part(), pseudo-element computed styles, and constructable stylesheets withdocument.adoptedStyleSheetsandshadowRoot.adoptedStyleSheets. Fixed numerous cascade, shorthand, serialization, and default-style issues; computed declarations now stay live across DOM and stylesheet changes. CSS serialization and computed values can differ from previous releases.- Changed HTML and XML parsing to pause at blocking scripts until their required resources are ready. The
JSDOMconstructor,JSDOM.fromURL(), andJSDOM.fromFile()can now return partially parsed documents. Wait forDOMContentLoadedfor the finished tree, or the window'sloadevent for load-delaying resources, checkingdocument.readyStatefirst in case the event has already fired. XML syntax errors encountered after asynchronous parsing resumes are reported through the virtual console as"xml-parsing"errors.Other changes
- Added
window.reportError(), which dispatches anerrorevent and reports uncanceled errors to the virtual console. (@sarankumar1325)- Added
element.ariaBrailleLabelandelement.ariaBrailleRoleDescription. (@Kjubikstronk)- Fixed page-completion
loadevents to fire only on the window. Usewindow.addEventListener("load", ...)orwindow.onloadinstead of listening on the document.- Fixed
document.open(), including implicit calls fromdocument.write(), to clear event listeners and handlers from the document, its descendants, and its window when replacing the input stream.- Fixed
document.write()to process successive writes through the parser's input stream, preserve insertion points across nested scripts, and make completed text immediately visible. Script-created input streams now remain open untildocument.close().- Fixed dynamically inserted scripts to respect
script.async = falseexecution order, use their source text and document from preparation time, and avoid executing after adoption into another document. Scripts parsed through inert fragment APIs no longer execute when subsequently inserted.- Fixed unrelated images, stylesheets, and frames being delayed behind scripts, and resource completion events firing before nested stylesheet imports finish. Cyclic imports no longer prevent completion, and
<style>elements in shadow trees now fireloadevents.- Fixed
window.stop()to cancel pending subresource andXMLHttpRequestrequests in descendant frames and suppress completion events for canceled loads, while allowing subsequent requests to proceed.- Fixed repeated
document.close()calls replaying readiness and load events, and incorrect iframe load events when reopening documents from event handlers.- Fixed memory leaks where pending request interceptor promises retained closed windows, introduced in v28.0.0.
- Fixed focus remaining on elements that become non-focusable after DOM or style changes. Focus now moves asynchronously to the document's viewport, and
element.blur()can release it immediately.- Fixed
document.hasFocus()returning false before an element is focused or during focus transitions within the document, including inside frames.- Fixed
\<template>parsing andtemplate.innerHTMLserialization in XML documents, including templates with namespace prefixes. (@b84330808)- Fixed
rect.toJSON()andperformance.toJSON()to create their result objects in the method's realm instead of the host Node.js realm.
Commits
825fa8e31.0.09f2e49aAdd ariaBrailleLabel and ariaBrailleRoleDescription4c0a35eFlush text written with document.write()fce11d3Switch canvas support to@napi-rs/canvas27614bfFix document.hasFocus() during focus changes627ade2Implement asynchronous focus fixup8bd17a2Implement reportError()5ae66cfUpdate webidl2js and remove IDL workaroundsce5a100Align development scripts and CI9cc717fAdopt ESLint config v6 and oxfmt- Additional commits viewable in compare view
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Summary by cubic
Updates jsdom from 30.1.3 to 31.0.0, a major version with breaking changes that may affect test behavior.
- HTML and XML parsing is now asynchronous; the
JSDOMconstructor can return partially parsed documents, so tests should wait forDOMContentLoadedor the window'sloadevent. - CSS parsing, selector matching, and computed styles use a new implementation with different serialization output and expanded feature support.
- Canvas support now requires
@napi-rs/canvasinstead ofcanvas; projects using native canvas objects should follow the upstream migration guidance. - The
loadevent now fires only on the window, not on the document.