Repository navigation
Update dependency jsdom to v30 - #1355
renovate[bot] wants to merge 3 commits into
Conversation
Deploying mouseterm with
|
| Latest commit: |
e2b756b
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://d29edacf.mouseterm.pages.dev |
| Branch Preview URL: | https://renovate-jsdom-30-x.mouseterm.pages.dev |
dormouse-bot
left a comment
There was a problem hiding this comment.
Library Tests fails at tsc -b on lib/vitest.argos.config.ts (BrowserProviderOption<PlaywrightProviderOptions> not assignable to BrowserProviderOption<object>). The lockfile now resolves vitest 5.0.5 twice: lib, website and vscode-ext keep the variant whose auto-installed jsdom peer is 29.1.1, while @vitest/browser and @vitest/browser-playwright were moved to the jsdom 30.1.3 variant. lib's config therefore mixes types from two vitest copies. Library Tests is green on main at f585b915e, so this split is what turns it red.
No package declares jsdom@^29 anymore, so the fix is to collapse onto jsdom 30.1.3 (what pnpm dedupe would do): point the three importers' vitest at the jsdom 30 variant, and drop the jsdom 29 vitest snapshot, jsdom@29.1.1, and the packages only it reached. That moves lib/website/vscode-ext's jsdom-environment tests to jsdom 30, which CI will exercise. I'll push that lockfile change to this branch.
The lockfile resolved vitest twice (jsdom 29 peer for lib/website/vscode-ext, jsdom 30 for @vitest/browser-playwright), so lib's typecheck mixed types from two vitest copies. Nothing declares jsdom@^29 anymore; drop it and the packages only it reached.
jsdom 30 reports document.hasFocus() true in these tests, where 29 reported false. The drag-cancel test needs a real blur (isRealBlur requires hasFocus() false), and the Unzoom palette test expects the inactive header, so both now state the unfocused window instead of inheriting it from jsdom.
This PR contains the following updates:
^29.1.1→^30.0.0Release Notes
jsdom/jsdom (jsdom)
v30.1.2Compare Source
initialreset. (@scttcper)getComputedStyle()returning stale results after editing stylesheet declarations, selectors, or media queries, including in imported stylesheets.:focus,:focus-visible,:focus-within, and selectors containing them after focus changes, including inside focus and blur listeners. (@asamuzaK)element.focus()incorrectly focusing elements hidden by 'display', including through shadow hosts and slots, and elements excluded by shadow DOM slot assignment. (@asamuzaK)getComputedStyle()throwing for elements without inline-style support, including XML and MathML elements.window.close().MutationObserverinstances retaining bookkeeping for garbage-collected nodes. (@scttcper)select.selectedOptionscollections becoming stale after selection changes and form resets.color-mix()expressions, including exceptions during color resolution. (@asamuzaK)v30.1.1Compare Source
blurandfocusoutevents and incorrectevent.relatedTargetvalues when focusing an element after removing the previously focused element, which regressed in v30.1.0. (@asamuzaK)document.documentElement.focus(). (@asamuzaK)blurlisteners becoming active, and text selections made by focus and blur listeners being overwritten. (@asamuzaK)element.focus()incorrectly focusing disabled form controls and<input type="hidden">elements withtabindex="". (@scttcper)style.setProperty()calls changing existing!importantpriorities, serialized styles, or mutation records. (@FedgeNo)!importanthandling when updating CSS longhands after shorthands, using variables or CSS-wide keywords, and assigning style properties directly. (@FedgeNo)<noscript>parsing withincludeNodeLocations: trueor inside frames to honor therunScriptsoption.storageQuotaoption being ignored by frames.charsetparameters in<meta>elements, and encoding detection incorrectly using incomplete<meta>tags. (@FedgeNo)constructor,toString,__proto__, or"null", and incorrect reuse of namespace prefixes declared on sibling elements.element.innerHTMLandelement.outerHTMLin XML documents to reject invalid characters in attribute values and avoid stack overflows on large strings.:lang(),:nth-child(... of ...)after mutations, and:has()with duplicate IDs or nested logical pseudo-classes. (@asamuzaK)v30.1.0Compare Source
jsdom is feeling the AGI!
This release is dedicated to @scttcper, who unleashed @codex upon jsdom and found tons of performance improvements. Along the way, he found and fixed many correctness issues as well.
We really appreciate his thoughtful PRs, which did a great job following the project's contribution guidelines, and were clearly human-curated, with their PR descriptions edited to be brief and respectful of the maintainers' time.
Thanks to @scttcper, as well as all the other contributors of this release (most of whom were AI-assisted).
document, such asdocument.myFormfor<form name="myForm">. (@vojtisprime11)QuotaExceededError, including its use for storage quota errors and oversizedcrypto.getRandomValues()requests.getComputedStyle(), style changes, and CSS serialization. (@scttcper, @jhult)<select>elements and radio button groups. (@scttcper)window.close()to preserve access to the document and its DOM through retained references.element.querySelectorAll()returning no matches when the first part of the selector matches the element itself, which regressed in v30.0.0. (@asamuzaK)data-state="",title="", and other case-sensitive values. (@asamuzaK)document.querySelector()failing to find a matching element when an earlier element has the same ID but does not match the rest of the selector. (@vojtisprime11):focusmatching in shadow trees. (@asamuzaK)document.replaceChildren()calls, invalid document element and doctype placements, and mutations duringelement.replaceWith().window.close()or iframe removal, and prevented new scripts, resource loads, timers, and animation frames from starting in destroyed documents. (@scttcper)requestInterceptor()callbacks, and when reusing anXMLHttpRequestafter aborting it.JSDOM.fromURL()potentially hanging when response handling throws and response stream cleanup does not finish.getComputedStyle()anddocument.styleSheetsusing the wrong stylesheet order after inserting or updating<style>elements.getComputedStyle()ignoring nested@importand@mediarules in imported stylesheets, and returning stale results after imports finish loading.getComputedStyle()calls changing case-sensitive background URLs, and inconsistent resolution of border shorthands containing system colors. (@scttcper)16px, which regressed in v30.0.0. (@Alberto-BaseNet)getComputedStyle()to resolve'font-weight'keywords to numeric values. (@tianrking)getComputedStyle()to convert lengths to pixels inside CSS math functions containing percentages, and to resolve percentages in'font-size'math functions. (@soroushm)min()andmax()containing nestedcalc(), which regressed in v30.0.0. (@asamuzaK)'grid-template-columns'values containing both100pxandcalc(). (@rome-xi)'background'and'border'shorthands with adjacent components, such asurl(a.png)no-repeat, including a crash when parsing inline styles. Also fixed handling of invalid shorthand assignments and escaped or unusual characters in CSS declarations. (@asamuzaK)'flex'shorthands, such as35 1 0, and rejection of negative'flex-basis'lengths and percentages. (@asamuzaK)RangeandSelectionhandling of CDATA sections, including boundary offsets and range cloning, extraction, deletion, insertion, and stringification. (@scttcper)text.normalize()incorrectly removing the text node or merging its siblings. (@scttcper)window, and incorrect named access from empty or namespacedid=""andname=""values. (@scttcper)DOMParserordocument.implementation.createHTMLDocument()appearing as named properties onwindowand being retained in memory. (@Iaotle)storageevents being sent to windows created after the storage change, and ensured surviving recipients still receive events when the source document is destroyed.input.listin detached element trees. (@scttcper)attr.ownerDocumentafter setting an attribute node on an element in another document or adopting its element. (@Kjubikstronk)element.getElementsByTagName()calls using the previous document's case-sensitivity rules after adoption between HTML and XML documents. (@Kjubikstronk)element.tagNamereturning stale casing after adoption between HTML and XML documents.<select>selection updates when moving options, and unintended selection resets when moving a whole<select>or changing unrelated descendants.<input>elements to preserveinput.indeterminate.<script>. (@Kjubikstronk)src="", and handling oftype="",for="", andevent="".document.currentScriptduring nested script execution and scripts in shadow trees.window.event, and default passive listener handling for non-node event targets, and event dispatch when user code modifieswindow.constructor.volumechangeandratechangeevents to fire asynchronously. (@christianaurichzm)NodeIteratortraversal when its filter removes nodes.fileReader.readAsText()to honor the blob's MIME type charset when no supported explicit encoding is supplied.input.valueAsNumberassignments for time and local date/time inputs.<textarea>values to use the numerictextarea.colsvalue.document.readyStateto be"complete"for documents created withdocument.implementation.createDocument()anddocument.implementation.createHTMLDocument().element.translatefor emptytranslate=""values and elements without a parent.node.lookupNamespaceURI()for thexmlandxmlnsprefixes. (@vojtisprime11)<base>elements to ignoredata:andjavascript:URLs. (@vojtisprime11)svgElement.viewportElementinside<symbol>elements.blobEvent.timecodeto beNaN.CSS.v30.0.1Compare Source
getComputedStyle()withcalc()and other functions throwing an exception, which regressed in v30.0.0. (@asamuzaK)v30.0.0Compare Source
Breaking changes:
^22.22.2 || ^24.15.0 || >=26.0.0.Other changes:
CSS.escape()andCSS.supports()functions. (@asamuzaK)'background-position-x'and'background-position-y'CSS properties. (@olagokemills)getComputedStyle()to convert length values into pixels. (@asamuzaK)getPropertyValue(). (@asamuzaK)document.evaluate()(@dokson)Configuration
📅 Schedule: (in timezone America/Los_Angeles)
* * * * 1)🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.