Skip to content

Releases: jsdom/jsdom

Version 24.0.0

21 Jan 13:06
Compare
Choose a tag to compare

This release reverts our selector engine back to nwsapi. As discussed in #3659, the performance regressions from @asamuzakjp/dom-selector turned out to be higher than anticipated. In the future, we can revisit @asamuzakjp/dom-selector after it reaches nwsapi's performance on the two real-world benchmarks provided by the community.

Since reverting to nwsapi causes several functionality regressions, e.g. removing :has() support, we've decided to make this a major version.

Additionally:

  • Small fixes to edge-case behavior of the following properties: input.maxLength, input.minLength, input.size, progress.max, tableCell.colSpan, tableCell.rowSpan, tableCol.span, textArea.cols, textArea.maxLength, textArea.minLength, textArea.rows.

Version 23.2.0

07 Jan 12:45
Compare
Choose a tag to compare

This release switches our CSS selector engine from nwsapi to @asamuzakjp/dom-selector. The new engine is more actively maintained, and supports many new selectors: see the package's documentation for the full list. It also works better with shadow trees.

There is a potential of a performance regression due to this change. In our stress test benchmark, which runs most of these 273 selectors against this 128 KiB document, the new engine completes the benchmark only 0.25x as fast. However, we're hopeful that in more moderate usage this will not be a significant issue. Any help speeding up @asamuzakjp/dom-selector is appreciated, and feel free to open an issue if this has had a significant impact on your project.

Version 23.1.0

05 Jan 13:41
Compare
Choose a tag to compare
  • Added an initial implementation of ElementInternals, including the shadowRoot getter and the string-valued ARIA properties. (zjffun)
  • Added the string-valued ARIA attribute-reflecting properties to Element.
  • Fixed history.pushState() and history.replaceState() to follow the latest specification, notably with regards to how they handle empty string inputs and what new URLs are possible.
  • Fixed the input.valueAsANumber setter to handle NaN correctly. (alexandertrefz)
  • Updated various dependencies, including cssstyle which contains several bug fixes.

Version 23.0.1

30 Nov 10:01
Compare
Choose a tag to compare
  • Fixed the incorrect canvas peer dependency introduced in v23.0.0.

Version 23.0.0

26 Nov 15:06
Compare
Choose a tag to compare
  • Node.js v18 is now the minimum supported version.
  • Updated various dependencies, including whatwg-url which integrates various additions to the URL and URLSearchParams objects.

Version 22.1.0

27 May 10:20
Compare
Choose a tag to compare
  • Added crypto.randomUUID(). (jamesbvaughan)
  • Added DOMRect and DOMRectReadOnly.
  • Added AbortSignal.timeout().
  • Added abortSignal.throwIfAborted().
  • Added support for the submitter argument to the FormData constructor. (jenseng)
  • Improved getComputedStyle()'s results for color-based properties, to resolve named colors and attempt to provide initial inheritance support. (hoekz-wwt)
  • Updated Window's event handler properties (e.g. oncopy, ontouchstart, etc.) to reflect the latest list from the standard.
  • Fixed DOMParser-created documents to inherit their URL from the creating document.

Version 22.0.0

27 May 10:20
Compare
Choose a tag to compare

Version 21.1.2

01 May 14:40
Compare
Choose a tag to compare
  • Fixed setRangeText() used on <input> and <textarea> elements to calculate the new end index correctly. (pmstss)
  • Fixed pageX, pageY, offsetX, and offsetY on MouseEvents during dispatch. (jenseng)
  • Upgraded nwsapi to v2.2.4, bringing along various fixes to our selector engine.

Version 21.1.1

12 Mar 12:29
Compare
Choose a tag to compare
  • Fixed jsdom.reconfigure() to also adjust the URL as seen by the history API, so that e.g. history.replaceState(null, "") would not mess up the URL. (jdufresne)
  • Fixed location.hash = "" to leave any # in location.href.
  • Fixes a few bugs with CSS parsing by replacing cssom with rweb-cssom, since the latter is maintained. (seanparmelee)

Version 21.1.0

22 Jan 11:16
Compare
Choose a tag to compare
  • Added x, y, pageX, pageY, offsetX, and offsetY to MouseEvent. (jenseng, ViniciusFXavier)
  • Added support for unset with getComputedStyle(). (jsnajdr)
  • Added the submitter property to SubmitEvent. (jenseng)
  • Fixed MouseEvent's screenX and screenY to no longer coerce to integers, allowing fractional values. (jenseng)
  • Fixed formEl.submit() to not longer fire submit events. (jenseng)
  • Fixed stylesheets to no longer affect the document after their corresponding <link> is removed. (jsnajdr)
  • Fixed pointer-events to inherit when used with getComputedStyle(). (jsnajdr)
  • Fixed <script> elements with no src="" to no longer fire load events. (t1ger2080)
  • Improved getComputedStyle() to cache its results, which should make it much faster. (jsnajdr)