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

Changelog History
Page 2

  • v12.2.0

    October 08, 2018
    • ➕ Added support for shadow DOM! This includes shadow roots, slots, composed events, and more. (pmdartus)
    • ➕ Added the element.toggleAttribute() method.
    • 🛠 Fixed XMLHttpRequest sometimes sending an empty request body after a preflight request. (andreasf)
    • 🛠 Fixed the formElement.form property to use an algorithm that also checks the form="" attribute, instead of always looking for the closest ancestor <form> element. (jamietre)
    • 📦 Stopped swallowing errors when the canvas or canvas-prebuilt packages were installed, but failed to load. (joscha)
  • v12.1.0

    September 30, 2018
    • ⬆️ Dramatically upgraded our XML parser, from the unmaintained sax package to the well-maintained saxes replacement. This increases our specification conformance, including rejecting certain ill-formed XML documents that were previously accepted, and properly handling other constructs like empty comments, CDATA sections, and <script> elements. (lddubeau)
    • ➕ Added fieldsetEl.elements and fieldsetEl.type properties.
    • ➕ Added the options parameter to dom.runVMScript(). (SimenB)
    • ➕ Added the ability for custom resource loader fetch() implementations to see what element initiated the fetch. (sarvaje)
    • 🛠 Fixed input and change events for <input> elements to be trusted and uncancelable.
    • 🔀 "Fixed" <script>s with the async attribute to not execute before sync <script>s that precede them. We still do not, in general, have proper execution of scripts during the initial parsing of a document, so this fix is more of a reduction of badness than an alignment with the specification. This behavior regressed in v12.0.0. (sarvaje)
  • v12.0.0

    🚀 This major release brings along our new resource loader API, finally bringing all the capabilities from jsdom v9 to the new (jsdom v10+) API. Thanks very much to @sarvaje for his work to make this possible!

    💥 Breaking changes:

    • jsdom now requires Node.js v8.
    • ✂ Removed the old jsdom API, as the new API now has all the capabilities you need.
    • ⚡️ Updated our parse5 dependency to v5, which changes the format of the node locations returned by dom.nodeLocation().
    • ⚡️ Updated our whatwg-url dependency to v7, which changes the origin of file: URLs to be an opaque origin (and thus file: URLs are no longer same origin to each other).

    Other changes:

    • ➕ Added countReset(), dir() and dirxml() methods to console.
    • ➕ Added the InputEvent class.
    • ➕ Added window.status.
    • ➕ Added htmlElement.draggable.
    • 🛠 Fixed window.frameElement to correctly return an actual HTMLElement instance, instead of a jsdom internal class.
    • 🛠 Fixed cloning of textarea elements to preserve their values.
    • 🛠 Fixed select.selectedOptions sometimes returning outdated results.
    • 🛠 Fixed CSS selection APIs sometimes returning outdated results, especially for state pseudo-class selectors like :checked.
    • 🛠 Fixed CSS selection APIs to throw an error for invalid selectors even when used on empty nodes.
    • 🛠 Fixed to default to the empty string, per spec, instead of "nodejs".
    • 🛠 Fixed the default User-Agent to say "unknown OS" instead of "undefined" when jsdom is used in web browsers.
  • v11.12.0

    • ➕ Added window.localStorage, window.sessionStorage, and StorageEvent support. These are currently only stored in-memory; file an issue if you need persistent (on-disk) storage capability so we can discuss adding that. This feature includes the new storageQuota option for controlling how much can be stored.
    • ➕ Added element.closest(). (caub)
    • ⚡️ Changed hashchange and popstate events to no longer bubble, per a specification update.
    • 🛠 Fixed the old API in Node.js v10 to not throw, when given input that is not a valid file path (such as a typical HTML string).
    • 💅 Upgraded cssstyle to v1.0.0, bringing along various fixes to our CSS parser and object model. (eddies)
    • ⬆️ Upgraded nwsapi to v2.0.7, bringing along various fixes to our selector engine.
  • v11.11.0

    • ➕ Added node.getRootNode(). (FrecksterGIT)
    • ➕ Added label.control. (FrecksterGIT)
    • ➕ Added el.labels for form control elements. (FrecksterGIT)
    • 🛠 Fixed the contentType of Documents created through <iframe>s.
    • 🛠 Fixed the contentType and origin of Documents created through document.implementation.createDocument().
    • 🛠 Fixed sourceEl.srcset to return the value of the srcset="" attribute, instead of the cite="" attribute.
    • 🛠 Fixed node.normalize() to not modify non-Text nodes. (lddubeau)
    • 💅 Upgraded cssstyle to v0.3.1, bringing along various fixes to our CSS parser and object model. (jsakas)
    • ⬆️ Upgraded whatwg-url to v6.4.1, fixing the interaction of URL's href and searchParams properties.
    • 🐎 Upgraded our selector matching engine from nwsmatcher to nwsapi, bringing along extensive fixes, performance improvements, and additional selector support.
  • v11.10.0

    • ➕ Added event.srcElement and event.returnValue.
    • 🛠 Fixed XMLHttpRequest to correctly set the User-Agent header, and set it on CORS preflight requests. (BehindTheMath)
  • v11.9.0

    • ➕ Added node.lookupPrefix(), node.lookupNamespaceURI() and node.isDefaultNamespace().
    • 🛠 Fixed the cloning of Documents; previously it would not clone all of the appropriate state, and would sometimes add an extra document type node.
    • 🛠 Fixed various edge cases in the textContent and nodeValue properties.
    • 🛠 Fixed canvas.toBlob() to properly pass through the JPEG quality argument, instead of always passing zero to node-canvas. (challakoushik)
  • v11.8.0

    • ➕ Added the full constraint validation API, i.e. willValidate, validity, validationMessage, checkValidity(), reportValidity(), and setCustomValidity(), on HTMLButtonElement, HTMLFieldSetElement, HTMLFormElement, HTMLInputElement, HTMLObjectElement, HTMLOutputElement, HTMLSelectElement, and HTMLTextAreaElement. (kontomondo)
    • ➕ Added getElementById() to DocumentFragment.
  • v11.7.0

    • ➕ Added the boolean return value to DOMTokenList's replace() method, per the recent spec addition.
    • ➕ Added FileReader's readAsBinaryString() method, as it has been added back to the specification.
    • 🛠 Fixed event handlers to be own properties of each Window, instead of on Window.prototype. (Fetz)
    • 🛠 Fixed an exception that would sometimes get raised when removing an <img> element's src="" attribute. (atsikov)
    • 🛠 Fixed abort events on AbortSignals to have their isTrusted set to true.
    • 🛠 Fixed some argument conversions in XMLHttpRequest's open() method.
    • 👌 Improved MIME type and data: URL parsing throughout jsdom, by using the new whatwg-mimetype and data-urls packages.
    • ✂ Removed some unnecessary .webidl files that were included in the npm package.
  • v11.6.2

    • 🛠 Fixed another regression (since v11.6.0) in <style> elements, where they would omit a series of parsing jsdomError events for any style sheet text containing spaces.
    • 💅 Generally improved the spec-conformance of when <style> and <script> elements are evaluated; for example, <script> elements inserted by innerHTML are no longer evaluated.