All Versions
203
Latest Version
Avg Release Cycle
37 days
Latest Release
0 days ago

Changelog History
Page 1

  • v16.0.1

    January 20, 2020
    • 🛠 Fixed Node v10 and v11 support when runScripts was set.
    • 🛠 Fixed the behavior when changing an <input>'s type="" attribute.
    • 🛠 Fixed input validation behavior for <input type="range"> when max="" is less than min="".
  • v16.0.0

    January 11, 2020

    🚀 For this release we'd like to welcome @pmdartus to the core team. Among other work, he's driven the heroic effort of constructor prototype and reform in jsdom and its dependencies over the last few months, to allow us to move away from shared constructors and prototypes, and set the groundwork for custom elements support (coming soon!).

    💥 Breaking changes:

    • 👍 Node v10 is now the minimum supported version.
    • The dom.runVMScript() API has been replaced with the more general dom.getInternalVMContext() API.
    • 🌐 Each jsdom Window now creates new instances of all the web platform globals. That is, our old shared constructor and prototypes caveat is no longer in play.
    • Each jsdom Window now exposes all JavaScript-spec-defined globals uniformly. When runScripts is disabled, it exposes them as aliases of the ones from the outer Node.js environment. Whereas when runScripts is enabled, it exposes fresh copies of each global from the new scripting environment. (Previously, a few typed array classes would always be aliased, and with runScripts disabled, the other classes would not be exposed at all.)

    Other changes:

    • ➕ Added the AbstractRange, Range, StaticRange, Selection, and window.getSelection() APIs.
    • ➕ Added working constructors for Comment, Text, and DocumentFragment.
    • ➕ Added valueAsDate, valueAsNumber, stepUp() and stepDown() to <input> elements. (kraynel)
    • ➕ Added window.origin.
    • ✂ Removed document.origin.
    • 🛠 Fixed <template> to work correctly inside XML documents.
    • 🛠 Fixed some bugs which would cause jsdom to choose the wrong character encoding because it was failing to detect <meta charset> or <meta http-equiv="charset"> elements.
    • 🛠 Fixed input.type to default to "text". (connormeredith)
    • 🛠 Fixed incorrect validation errors for <input> with fractional values for their step="" attribute. (kontomondo)
    • 🛠 Fixed incorrect validation errors on readonly <input> elements.
    • 🛠 Fixed <input type="email" multiple pattern="..."> validation.
    • 🛠 Fixed fileReader.readAsDataURL() to always base64-encode the result. (ytetsuro)
    • 🛠 Fixed inserting <img> elements into documents without a browsing context to no longer crash when the canvas package is installed.
    • 🛠 Fixed a memory leak when using window.setTimeout() or window.setInterval().
    • 👌 Improved the performance of getComputedStyle(). (eps1lon)
  • 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"/>.