Skip to content

Latest commit

 

History

History
314 lines (202 loc) · 11.1 KB

CHANGELOG.md

File metadata and controls

314 lines (202 loc) · 11.1 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[4.1.0] - 2023-01-05

  • Adds a new shallow renderer that more closely matches the behavior of the React 16 shallow renderer. This new renderer can be enabled by importing CompatShallowRenderer from enzyme-adapter-preact-pure/compat and passing it in the ShallowRenderer Adapter option.

    The previous shallow renderer rendered components into a DOM and modified the component's output so that all children return null to prevent rendering further down the tree. The compat shallow renderer is a custom implementation of Preact's diffing algorithm that only shallow renders the given component and does not recurse down the VDOM tree. It's behavior more closely matches the React 16 Enzyme adapter and it well suited for migrating an Enzyme test suite from React to Preact.

  • Support more return types (e.g. booleans, numbers, BigInts) from components

  • Add an option (renderToString) to allow passing in a custom string renderer to use for Enzyme's 'string' renderer instead of rendering into the DOM and reading the HTML output. It is expected that renderToString from preact-render-to-string is passed into this option. This change enables using the string renderer in non-DOM environments and more closely matches the React adapter's behavior.

  • Add a feature flag (simulateEventsOnComponents) for supporting simulating events on Components #211

    This new feature flag turns on behavior that enables calling .simulate directly on Components. For shallow rendering, this directly calls the component's corresponding prop. For mount rendering, it finds the first DOM node in the Component, and dispatches the event from it.

    NOTE: This flag changes the behavior of calling simulate on shallow rendered host (a.k.a DOM) nodes. When this flag is off, simulate dispatches a native DOM event on the host node. When this flag is turned on, simulate directly calls the prop of the event handler with arguments passed to simulate.

    The behavior turned on by this flag matches the behavior of the React 16 Enzyme adapter.

[4.0.1] - 2022-04-15

  • Added a partial fix for an incompatibility between Preact's JSX element type and the JSX element type from @types/react v18. #177.

[4.0.0] - 2022-04-13

  • The CommonJS build of this package now targets ES 2020, which is the same target as the ESM build #166.

    If running tests against a pre-2020 browser or version of Node, you may need to add a polyfill for Array.prototype.flatMap in your own project.

[3.4.0] - 2022-02-24

  • Support wrappingComponent and wrappingComponentProps options for full (mount) and shallow rendering. Thanks @kevinweber. #157

[3.3.0] - 2021-11-09

  • simulateEvent now initializes the bubbles, cancelable and composed properties of dispatched events as they would be in real events. #131.

[3.2.0] - 2021-11-03

  • Add an ES module build of the package for modern browsers and bundlers. #151

[3.1.0] - 2021-04-08

  • Add support for invoke wrapper method. The Preact adapter currently only supports this for full (mount) rendering #135

[3.0.0] - 2021-01-11

  • This release removes support for Preact v8 to simplify ongoing maintenance. See #117.

    Users of Preact v8 will need to either stick with the last 2.x release of this package or upgrade their applications to Preact v10.

[2.2.4] - 2021-01-09

  • Fix error when setting certain event properties when calling simulate() in an environment that uses JSDOM #125

[2.2.3] - 2020-08-11

  • Fix a regression in 2.2.1 when a component that is stubbed out during shallow rendering is passed a number as a child #120

[2.2.2] - 2020-08-08

  • Fix a regression in 2.2.1 when a component that is stubbed out during shallow rendering is passed multiple children #119

[2.2.1] - 2020-07-19

  • Fix exception when shallow rendering a component that uses the "render prop" pattern #107.

[2.2.0] - 2019-11-10

  • Improve support for projects written in TypeScript by integrating with the @types/enzyme package #84. See the Usage with TypeScript section in the README and example project in examples/typescript.

[2.1.0] - 2019-10-03

  • Fix simulateError under Preact 10.0.0 #75
  • Make Preact v10 the default version internally. Preact v8 support will eventually be removed in a future major release. #76

[2.0.2] - 2019-08-08

  • Remove a workaround for old beta releases of Preact 10 which could cause an error about mutating a read-only property in certain environments #69

[2.0.1] - 2019-07-18

  • Fix an incompatibility with preact-compat for Preact v8 #62

[2.0.0] - 2019-06-17

  • The adapter no longer patches setState to make it synchronous #57.

Breaking Changes

Calls to setState on components rendered by Enzyme are no longer synchronous but are batched as Preact normally does outside of tests. Pending updates are automatically flushed when an Enzyme wrapper is updated, either as a result of an Enzyme API call (eg. wrapper.simulate, wrapper.setProps) or when wrapper.update() is called.

Most tests should be unaffected as they will trigger updates either through Enzyme API methods or will have needed to call wrapper.update() anyway. Tests can no longer depend on the tree being updated immediately after wrapper.setState returns however. Instead they should wait for the optional callback to setState to be invoked.

[1.13.4] - 2019-06-10

  • Prepare for upcoming internal changes to fragments and components in the next Preact 10 release (#55)

[1.13.3] - 2019-06-04

  • Fix shallow-rendering compatibility with Enzyme v3.10 (#51)

[1.13.2] - 2019-06-01

  • Support Preact 10.0.0-beta.2 (#49)

[1.13.1] - 2019-04-24

  • Fix exception with native (non-transpiled) arrow function components (#37)

[1.13.0] - 2019-04-17

  • Synchronously execute effects or state updates created with hooks after dispatching simulated events (#36)

[1.12.0] - 2019-04-14

  • Synchronously execute effects created with useEffect or useLayoutEffect hooks after the initial render (#34)

[1.11.0] - 2019-04-14

  • Support attachTo option for mount rendering to render into an existing DOM element

[1.10.4] - 2019-04-09

  • Avoid accessing children property of vnodes in Preact 10, as this triggers an error when using preact/debug

[1.10.3] - 2019-04-05

  • Work around issue where component type names are shown incorrectly when using preact-compat (for Preact v8) and document a limitation which is resolved in Preact 10 (#27).

[1.10.2] - 2019-03-29

  • Fix exception when wrapper.text() is called on an Enzyme wrapper around a text node (#15).

[1.10.1] - 2019-03-22

  • Made the Preact 10 adapter compatible with preact/compat by removing an instanceof Component check, which breaks if the Component class comes from the 'preact/compat' bundle
  • Made the adapter the default export of the package. The previous named exports have been kept for backwards compatibility

[1.9.0] - 2019-03-15

  • Changed the name of the package's main export to Adapter. The export is also exported under its previous name (PreactAdapter) for backwards compatibility

[1.8.0] - 2019-03-12

Changed

  • Internal cleanups to make the adapter less reliant on Preact internals and better separate Preact version-specific code

[1.7.1] - 2019-03-05

Fixed

  • Fix repository link in package.json

  • Mark Preact 10 as a dev dependency rather than a runtime dependency and fix the version number

[1.7.0] - 2019-03-05

Changed

  • Support using with production builds of the current version of Preact 10 (10.0.0-alpha0).

[1.6.0] - 2019-02-22

Added

  • Support Enzyme wrapper methods which take an element tree as an argument, such as wrapper.contains(...).

[1.5.0] - 2019-02-21

Added

  • Add support for simulating errors.

Changed

  • Children passed to non-rendered components during shallow-rendering are now present in the output, for consistency with how shallow rendering works in React.

Fixed

  • Shallow rendering now only renders the root element passed to shallow, not any child component elements passed in the call to shallow.

    In other words shallow(<Parent><Child/></Parent>) will render <Parent> but only a stub for <Child>.

[1.4.0] - 2019-02-19

Added

  • Add support for fragments. Children of fragments are presented to Enzyme as if they were children of their nearest non-fragment ancestor. In other words, fragments do not appear in the component tree exposed to Enzyme in the same way that they do not appear in the DOM tree in the browser.

[1.3.0] - 2019-02-18

Added

  • Initial support for Preact 10 and later. Preact 10 has an entirely different rendering implementation and a different VNode shape. The adapter will detect at runtime which version of Preact is in use and use an appropriate method to convert the render tree into the format that Enzyme expects.

  • Support running tests against a custom build of Preact using yarn test --preact-lib <path>.

Fixed

  • Keys and refs of components and DOM nodes are now exposed to Enzyme.

[1.2.0] - 2019-02-15

Changed

  • Calls to setState on fully-rendered components now trigger synchronous updates, for consistency with shallow rendering.

Fixed

  • Components that render only strings are now handled correctly.

  • Work around a bug in Enzyme that caused wrapper.get() to fail when using full rendering.

[1.1.0] - 2019-02-14

  • Map class prop to className so that Enzyme class selectors work.

[1.0.0] - 2019-02-14

  • Initial release.