All Versions
Latest Version
Avg Release Cycle
36 days
Latest Release
12 days ago

Changelog History
Page 1

  • v15.2.1

    November 04, 2019
    • 🛠 Fixed JSDOM.fromURL() handling of URLs with hashes in them, to no longer send the hash to the server and append an extra copy of it when constructing the Document. (rchl)
    • 🛠 Fixed focusing an already-focused element to correctly do nothing, instead of firing additional focus events. (eps1lon)
    • 🛠 Fixed typo in the not-implemented message for mediaElement.addTextTrack(). (mtsmfm)
    • ⬆️ Upgraded nwsapi minimum version to 2.2.0, which fixes issues with ::-webkit- prefixed pseudo-elements and namespaced attribute selectors.
  • v15.2.0

    October 14, 2019
    • ➕ Added basic style inheritance in getComputedStyle() for the 'visibility' property. This sets the foundation for further work on inheritance, cascading, and specificity. (eps1lon)
    • ➕ Added shadowRoot.activeElement.
    • ➕ Added readystatechange events during document loading.
    • ➕ Added a stub for form.requestSubmit(), to match our existing stub for form.submit().
    • ⚡️ Changed el.tabIndex's default value, when no tabindex="" attribute was set, to reflect the updated specification.
    • ⚡️ Changed the exception thrown by el.attachShadow() on something that's already a shadow host, to reflect the updated specification.
    • 🛠 Fixed the validation logic for <input type="range">.
    • 🛠 Fixed selectEl.value when no <option> is selected to return the empty string, instead of the value of the first option. (tgohn)
    • 🛠 Fixed various correctness issues with new FormData(formElement). (brendo)
    • 🛠 Fixed error messages when parsing XML to include the filename, instead of using "undefined". (papandreou)
    • 🛠 Fixed the logic for reflected properties to not be affected by overwriting of el.getAttributeNS() or el.setAttributeNS().
    • 👍 Set canvas as an optional `peerDependency, which apparently helps with Yarn PnP support.
  • v15.1.1

    May 28, 2019
    • 💅 Moved the nonce property from HTMLScriptElement and HTMLStyleElement to HTMLElement. Note that it is still just a simple reflection of the attribute, and has not been updated for the rest of the changes in whatwg/html#2373.
    • 🛠 Fixed the style and on<event> properties to properly track their related attributes for SVG elements. (kbruneel)
    • 🛠 Fixed XMLHttpRequest merging preflight and response headers. (thiagohirata)
    • 🛠 Fixed XMLHttpRequest reserializing content-type request headers unnecessarily. See whatwg/mimesniff#84 for more details. (thiagohirata)
    • 🛠 Fixed element.tagName to be the ASCII uppercase of the element's qualified name, instead of the Unicode uppercase.
  • v15.1.0

    May 12, 2019
    • ➕ Added the Headers class from the Fetch standard.
    • ➕ Added the element.translate getter and setter.
    • 🛠 Fixed synchronous XMLHttpRequest on the newly-released Node.js v12.
    • 🛠 Fixed form.elements to exclude <input type="image"> elements.
    • 🛠 Fixed event path iteration in shadow DOM cases, following spec fixes at whatwg/dom#686 and whatwg/dom#750.
    • 🛠 Fixed pattern="" form control validation to apply the given regular expression to the whole string. (kontomondo)
  • v15.0.0

    April 21, 2019

    Several potentially-breaking changes, each of them fairly unlikely to actually break anything:

    • JSDOM.fromFile() now treats .xht files as application/xhtml+xml, the same as it does for .xhtml and .xml. Previously, it would treat them as text/html.
    • 💻 If the JSDOM constructor's contentType option has a charset parameter, and the first argument to the constructor is a binary data type (e.g. Buffer or ArrayBuffer), then the charset will override any sniffed encoding in the same way as a Content-Type header would in browser scenarios. Previously, the charset parameter was ignored.
    • 🏁 When using the Blob or File constructor with the endings: "native" option, jsdom will now convert line endings to \n on all operating systems, for consistency. Previously, on Windows, it would convert line endings to \r\n.
  • v14.1.0

    April 21, 2019
    • ➕ Added activation behavior for <a> and <area> elements whose href="" points to a javascript: URL or fragment.
    • ➕ Added the <datalist> element's options property.
    • ➕ Added the <input> element's list property.
    • ➕ Added PageTransitionEvent, and the firing of pageshow events during loading.
    • 🔦 Exposed the External class as a property of window.
    • 🛠 Fixed HTML fragment parsing (via innerHTML and outerHTML) to be spec-compliant. (pmdartus)
    • 🛠 Fixed HTML serialization (e.g. via innerHTML) breaking after setting certain properties to non-string values.
    • 🛠 Fixed how disabling an element would cause its activation behavior to forever be null, even if it were re-enabled.
    • 🛠 Fixed all access to attributes to ignore attributes with namespaces, per the spec.
    • 🛠 Fixed <style>s to no longer apply to documents without a browsing context. This includes fixing a crash that would occur with such styles if they had an @import rule.
    • 🛠 Fixed <option>'s label and value properties to return correct values in various edge cases.
    • 🛠 Fixed the load event during document loading to target the Document, not the Window.
    • 🛠 Fixed the pretendToBeVisual option to propagate to child subframes, as well as the main Window. (pyrho)
    • ⚡️ Updated the minimum nwsapi version from v2.1.1 to v2.1.3, bringing along a few fixes in our selector engine.
  • v14.0.0

    March 10, 2019

    💥 Breaking changes:

    • 0️⃣ JSDOM.fragment() now creates fragments whose document has no browsing context, i.e. no associated Window. This means the defaultView property will be null, resources will not load, etc.
    • JSDOM.fragment(), called with no arguments, now creates a DocumentFragment with no children, instead of with a single child text node whose data was "undefined".

    Other changes:

    • 🛠 Fixed a regression in v13.2.0 when calling element.blur() on a focused element.
    • 🛠 Fixed inserting <link> elements into documents with no browsing context to no longer crash if the originating JSDOM was configured to fetch the resource. Now, per spec, <link> elements only attempt to fetch if they are browsing-context connected.
    • 🛠 Fixed <template> elements to have the correct semantics, of using a separate browsing-context-less document to store its contents. In particular this means resources will not be fetched for elements inside the <template>, as per spec.
  • v13.2.0

    January 24, 2019
    • ➕ Added support for MutationObservers! (pmdartus)
    • ➕ Added support for XML documents loaded in frames and iframes; previously this would error.
    • ➕ Added the <progress> element's value, max, and position properties.
    • ➕ Added navigator.plugins and navigator.mimeTypes. (But, they are always empty.)
    • 🛠 Fixed <summary> elements respond to click events by toggling their parent <details>.
    • 🛠 Fixed <summary> elements to be focusable.
    • 🛠 Fixed XML document DOCTYPE parsing to preserve any custom name values.
    • 🛠 Fixed XML documents to default to UTF-8, not windows-1252 like HTML documents do.
    • 🛠 Fixed all events fired by jsdom to have isTrusted set to true.
    • 🛠 Fixed DOMParser-created documents to have their readyState set to "complete".
    • 🛠 Fixed how nested <fieldset>s get disabled.
    • 🛠 Fixed getComputedStyle() to throw a sensible exception when passed the wrong argument, instead of one that exposes jsdom internals.
    • ⬆️ Upgraded our saxes dependency, so that it now correctly errors on XML fragments like <foo bar:="1"/>.
  • v13.1.0

    December 15, 2018
    • ➕ Added el.insertAdjacentElement() and el.insertAdjacentText().
    • ➕ Added the firing of a cancelable reset event to form.reset(). (epfremmer)
    • ➕ Added the type, value, and defaultValue properties to <output> elements, including their form reset behavior. (epfremmer)
    • ➕ Added the outputEl.htmlFor property.
    • 🛠 Fixed the performance of parsing large text nodes, particularly noticeable for large inline <style> or <script> elements. This regressed in v11.6.0. To learn more, see V8 issue #6730.
    • 🛠 Fixed the style property on <a> and <area> elements. This regressed in v13.0.0.
    • 🛠 Fixed node.isConnected to not always return false for nodes inside a shadow tree. (pmdartus)
    • 🛠 Fixed <button type="reset"> and <input type="reset"> elements to actually perform a form reset when clicked, instead of doing nothing. (epfremmer)
    • 🛠 Fixed el.setCustomValidity() for <output> and <fieldset>.
    • 🛠 Fixed activation behavior when dispatching bubbling click events, so that for example calling on the child of a submit button element will submit the form.
    • 🛠 Fixed our XML parsing code to ignore text outside the root element, instead of treating it as an error. (lddubeau)
    • 🛠 Fixed XML serialization when elements had an unknown prefix.
    • 🛠 Fixed radio button group name matching to be case-sensitive, per a spec update.
    • 🛠 Fixed focus/blur events to be composed.
    • 🛠 Fixed mediaElement.duration to default to NaN.
    • 🛠 Fixed olEl.start to default to 1.
    • 🛠 Fixed using XMLHttpRequest against non-existant file: URLs to treat that as a network error, instead of crashing. (pascalbayer) Note that in the future we may completely disable XMLHttpRequest usage against file: URLs to follow the browser security model.
    • 🛠 Fixed document.title in SVG documents.
    • 🛠 Fixed titleElement.text to return the child text content, instead of being the same as titleElement.innerHTML.
    • 🛠 Fixed <textarea>s to properly account for child CDATA section nodes changing.
    • 🛠 Fixed the value of Element.prototype[Symbol.unscopables].
  • v13.0.0

    October 29, 2018

    💥 Breaking change:

    • ✂ Removed support for v1.x of the canvas package, in favor of v2.x. This also removes support for canvas-prebuilt, since canvas v2.x has a built-in prebuilt version.

    Other changes:

    • ➕ Added proper XML serialization, based on the w3c-xmlserializer package. Previously we were just using the HTML serialization, even in XML documents.
    • ➕ Added the storageEvent.initStorageEvent() method.
    • ➕ Added support for the passive option to addEventListener().
    • ➕ Added the relList property to <a>, <area>, and <link> elements.
    • 🛠 Fixed our implementation of the node tree modification constraints (for example the ensure pre-insertion validity algorithm). It is no longer possible to add, remove, or move nodes to create impossible DOM trees. (pmdartus)