Change Log

3.11.0

New Stuff

  • render: handle Fiber strings and numbers (#2221)

Fixes

  • shallow: Share child context logic between shallow and dive (#2296)
  • mount: children: include text nodes ($2269)
  • mount: invoke: use adapter’s wrapInvoke if present (#2158)

Docs

  • mount/shallow: closest/parent: Add missing arguments description (#2264)
  • mount/shallow: fix pluralization of “exist” (#2262)
  • shallow/mount: simulate: added functional component example to simulate doc (#2248)
  • mount: debug: add missing verbose option flag (#2184)
  • mount/shallow: update: fix semantics description (#2194)
  • add missing backticks to linked method names (#2170)
  • invoke: Add missing backticks to end of codeblock (#2160)
  • invoke: Fix typo (#2167)
  • Explicit React CSS selector syntax description (#2178)

Meta Stuff

  • [meta] add funding field
  • [meta] Update airbnb.io URLs to use https (#2222)
  • [deps] update is-boolean-object, is-callable, is-number-object, is-string, enzyme-shallow-equal, array.prototype.flat, function.prototype.name, html-element-map, is-regex, object-inspect, object-is, object.entries, object.vales, raf, string.prototype.trim
  • [dev deps] update eslint, eslint-plugin-import, eslint-plugin-markdown, eslint-plugin-react, safe-publish-latest, eslint-config-airbnb, rimraf, safe-publish-latest, karma-firefox-launcher, babel-preset-airbnb, glob-gitignore, semver, eslint-plugin-jsx-a11y

3.10.0

New Stuff

  • shallow add suspenseFallback option; support Suspense/Lazy (#1975)
  • shallow/mount: add invoke(propName)(...args) (#1856, #945)
  • shallow: Support rendering and dive()ing createContext() providers and consumers (#1966)
  • mount/shallow: add getWrappingComponent (#1960)
  • Utils: add isCustomComponent (#1960)
  • Utils: add stub argument to spyMethod
  • EnzymeAdapter: add matchesElementType (#2146)
  • RSTTraversal: add getHTMLFromHostNodes

Fixes

  • selectors: unwrap memo elements - in both directions (#2146)
  • shallow: properly determine "should render" for PureComponents (#2096)
  • mount/shallow: renderProp: improve error messages (#2070)
  • mount: setContext: use proper wrapper name in error message
  • shallow: .contains(): clean up error message
  • shallow/mount: hasClass: avoid a crash with a non-string argument (#2057)
  • mount: properly handle HTML of multiple nodes (#2052)
  • shallow: ensure that if gDSFP exists, cDU is called. (#2027)
  • shallow: Mock sCU if gDSFP defined in shallow renderer rerender (#1981)
  • mount: .state(): allow getting state from stateful children of a stateless root (#2043)
  • mount: .text(): properly recurse through fragments and arrays (#2028)

Refactors

  • ReactWrapper/ShallowWrapper: ensure calling an adapter‘s nodeToElement preserves the receiver
  • mount: use getHTMLFromHostNodes

Docs

  • explain why need to re-call .find() after update (#2140)
  • shallow: fix childAt (#2134)
  • Update v2 -> v3 migration guide re props after a stage change (#1300)
  • debug: Added documentation for verbose flag (#2104)
  • Add on the fly JSDOM include example (#2072)
  • reduce/reduceRight: fix example code (#2066, #2065, #2064)
  • update simulateError with getDerivedStateFromError (#2036)
  • shallow: .hasClass: fix use of mount
  • add link to Cheerio API and another example (#756)
  • jest: Update deprecated jest config key (#2024)

3.9.0

New Stuff

  • shallow: isEmptyRender: allow on multiple elements (#1924)
  • mount: support :focus selector (#1965)
  • shallow: Support getChildContext() (#1971)
  • shallow/mount: .find: find HTML elements by their constructor (#1933)
  • shallow/mount: selectors: support universal selector (#1945)
  • mount/shallow: add regex support to .hasClass (#1987)

Fixes

  • mount/shallow: .text/.html: handle an array of nodes properly (#2001)
  • shallow: .setProps(): only call cDU once (#2007)
  • mount: ensure findWhere doesn‘t abort early on an empty string (#1995)
  • mount: findWhere: avoid passing empty wrappers to predicate
  • mount: text() via findWhere: return the string for a wrapper around a string
  • mount/shallow: Fix .exists not accepting any EnzymeSelector (#1934)
  • mount: Recursive isEmptyRender (#1924)
  • mount: setState: allow setting state on a class child of an SFC root

Documentation

  • [jest] update Jest to setupFilesAfterEnv (#2015)
  • [jest] Change deprecated setupTestFrameworkScriptFile to setupFilesAfterEnv (#2013)
  • mount: setState: note that you can now call it on "not the root" (#2010)
  • general improvements (#1947)
  • Fix typos (#1992)
  • Added missing pages: isEmptyRender, renderProp, equals, SystemJS guide (#1984, #1985)
  • Fix link to .shallow() (#1951)
  • update jsdoc to use "EnzymeSelector" where applicable

Meta Stuff

  • add "directory" field to package.json

3.8.0

New Stuff

  • shallow/mount: add renderProp (#1863, #1891)

Fixes

  • shallow/mount: improve error message for "single node" assertion (#1904)
  • shallow: shallow compare, not deep compare, state and props to determine rerendering (#1915)

Documentation

  • shallow: dive: add a note about throwing an error (#1905)
  • selectors: update redisplayName` (#1932)
  • shallow: get: fixed wrong props() usage (#1921)
  • shallow: html: shallow renders full tree (#1912)
  • Updated broken link for “.hostNodes()” in migration guide from enzyme 2 to 3 (#1909)
  • Add tape example project link (#1898)
  • prop: fix typo (#1883)
  • Document full support for attribute selectors (#1881)
  • Documentation update for testing React Native with jsdom (#1873)
  • Update JSDOM docs to include {request|cancel}AnimationFrame polyfills (#1867)
  • mount: ref: use correct type (#1865)

3.7.0

New Stuff

  • mount: .state()/.setState(): allow calling on children (#1802, @ljharb)
  • configuration: add reset (commit)

Fixes

  • makeOptions: ensure that config-level attachTo/hydrateIn are inherited into wrapper options (#1836, @ljharb)
  • shallow/Utils: call into adapter’s isCustomComponentElement if present (#1832, @SinHouse)
  • shallow/mount: throw an explicit error when state is null/undefined (commit)
  • freeze ROOT_NODES for child wrappers (#1811, @jgzuke)
  • shallow: .parents: ensure that one .find call does not affect another (#1781, @ljharb)
  • mount: update after simulateError (#1812, @jgzuke)

Refactors

  • mount/shallow: getElement: use this.single (commit)

3.6.0

New Stuff

  • shallow/mount: add simulateError (#1797, @ljharb)

3.5.1

Fixes

  • shallow/mount: containsMatchingElement: trim whitespace (commit, #636)
  • debug: inspect objects instead of showing them as <Component /> (commit)

Documentation

  • mount: ref: Update docs to be consistent with v3 (#1242, @adam-golab)

Refactors

  • shallow/mount: make tests and method ordering more consistent (commit)
  • RSTTraversal: remove unnecessary adapter truthiness check (commit)

3.5.0

New Stuff

Fixes

  • preemptively fix compat with React v16.4.3 (#1790, #1778, @gaearon, @aweary)
  • shallow: prevent rerenders with PureComponents (#1786, @koba04)
  • shallow: skip updates when nextState is null or undefined (#1785, @koba04)
  • shallow: setState after setProps calls componentWillReceiveProps (#1779, @peanutenthusiast)
  • mount/shallow: be stricter on the wrapper’s setState/setProps callback (commit)
  • shallow/mount: improve error message when wrapping invalid elements (#1759, @jgzuke)

Refactors

  • remove most uses of lodash (commit)

Meta Stuff

  • ensure a license and readme is present in all packages when published

3.4.4

Fixes

  • @koba04: shallow: fix unexpected call to componentDidMount (#1768)

3.4.3

Fixes

  • @ljharb/@koba04: shallow: .setState(): stub out setState on non-root code paths as well (#1763)
  • @ljharb: shallow/mount: restore fallback when adapter lacks invokeSetStateCallback (commit)
  • @ljharb: mount: setState: invoke callback with the proper receiver (commit)
  • @ljharb: mount: state and setState should throw an explicit error message when called on an SFC (commit)

3.4.2

Fixes

  • @koba04: shallow: call cDU when an instance calls setState (#1742)
  • @ReactiveRaven: selectors: fix descendant selector (#1680)

3.4.1

Fixes

  • @ljharb: shallow: setProps: merge instead of replace props (commit)

Documentation

  • @koba04: Fix an adapter table style in README.md and a migration guide (#1734)

3.4.0

New Stuff

  • @madicap: shallow/mount: account for React.Fragment nodes (#1733)
  • @jquense: Debug: debugNode now returns [function] for function children (commit)
  • @ljharb: mount: add hydrateIn option (#1707)
  • @ljharb: shallow: add “lifecycles” adapter option (#1696)
  • @krawaller: shallow/mount: allow .exists() to take an optional selector (#1695)
  • @koba04: shallow: Add getSnapshotBeforeUpdate support (#1657)
  • @jquense: shallow/mount: Add support for some pseudo selectors (#1537)
  • @blainekasten: debug: Implement verbose debug output (#1547)
  • @jquense/@ljharb: Debug: typeName now calls the adapter’s displayNameOfNode if available (#1701)
  • @jquense/@ljharb: mount/shallow: .name(): call into adapter’s displayNameOfNode, if present (#1701)
  • @jquense/@ljharb: Utils: nodeHasType: call into adapter’s displayNameOfNode, if present (#1701)
  • @jquense/@ljharb: selectors: buildPredicate: call into adapter’s isValidElementType, if present (#1701)
  • @emuraton/@ljharb: shallow: setProps(): Add callback argument (#1721)
  • @ljharb: mount: add .equals() (commit)
  • @madicap: Extract getAdapter from Utils into its own file (#1732)

Fixes

  • @ljharb: shallow/mount: matchesElement/containsMatchingElement: get adapter with options (commit)
  • @ljharb: RSTTraversal: remove nodeHasProperty export; broken since #1157 (commit)
  • @ljharb/@KordonDev: shallow: .at(): return an empty wrapper when an index does not exist (#1478)
  • @ljharb: shallow: .equals(): flatten children when comparing (commit)
  • @ljharb: mount/shallow: do not dedupe in flatMap (commit)
  • @ljharb: shallow: .closest(): ensure an empty wrapper is returned for no match (commit)
  • @krawaller: selectors: make general sibling not throw on root (#1698)
  • @ljharb/@angelikatyborska : mount: text(): null nodes return null (#1582)
  • @ljharb: shallow: simulate: ensure it returns itself (commit)
  • @koba04: shallow: ShallowWrapper calls update() automatically (#1499)
  • @bdwain: mount/shallow: return null for missing keys (#1536)
  • @vsiao: Fix ShallowWrapper for array-rendering components (#1498)
  • @koba04: Call setState callback after finishing the render (#1453)
  • @eddyerburgh: Convert nodes to RST nodes before comparing (#1423)
  • @ljharb: improve "bad adapter" error message (#1477)
  • @ljharb: shallow/mount: default iterator should be iterable (commit)

Refactors

  • @ReactiveRaven: selectors: fix typos; avoid reusing variable unnecessarily (#1681)
  • @koba04/@ljharb: shallow: Use spyMethod to inspect the result of shouldComponentUpdate/getSnapshotBeforeUpdate (#1192)
  • @ljharb: Utils: configuration: change to named exports. (commit)
  • @ljharb: use array.prototype.flat (commit)

Documentation

  • @jack-lewin: Clarify dev workflow in CONTRIBUTING.md (#1207)
  • @robrichard: Provide migration instructions for ref(refName) (#1470)
  • @DannyDelott: shallow/mount: Add callback arg to setProps header (#1361)
  • @conor-cafferkey-sociomantic: mount: Updated docs for ReactWrapper.instance(); remove docs for v2's getNode()/getNodes() (#1714)
  • @koba04: Make clearer the docs for .mount() (#1540)
  • @ialexryan: Update signature of .type() in shallow.md (#1492]([https://github.com/enzymejs/enzyme/pull/1492))

Meta Stuff

  • @ljharb: ensure a license and readme is present in all packages when published
  • @ljharb: [meta] fix package.json scripts

3.3.0

New Stuff

  • @ljharb/@joeldenning: debug: handle boxed primitives (#1450)

Refactors

  • @eddyerburgh: Use RSTTraversal childrenOfNode in Utils (#1381)

Fixes

  • @nicoder: Fix typo in error message (#1379)

3.2.0

New Stuff

  • @aweary: Support all attribute selector operators (#1157)

Fixes

  • @idanilt: Change ShallowWrapper.text() trim spaces with same behavior as ReactWrapper.text() (#1350)

3.1.1

Fixes

  • @koba04: Fix to call componentDidUpdate on setState of React v16 (#1261)

3.1.0

New Stuff

  • @FezVrasta: Added hostNodes method to ReactWrapper (#1179)

Fixes

  • @lelandrichardson: Add an npmignore file to all packages (#1204)

  • @neoziro: Fix node resolving in React 16 adapter (#100)

  • @graingert: upgrade to rst-selector-parser@^2.2.2 (#1146)

Documentation

  • @lelandrichardson: Symlink readme to all packages (#1205)

  • @AndersDJohnson: fix some typos (#1165)

  • @dubbha: ES5 setup file correction (#1194)

  • @morrowr08: updated component name being used in example (#1180)

  • @apandichi: Fixing a few typos... (#1171)

  • @nuc: Fix typo (#1142)

3.0.0

Breaking Changes

Enzyme has several breaking changes from v2 to v3. Please check out our migration guide for more info. Since there was a rewrite of the core library from v2 to v3, it is hard to categorize changes in terms of sem

  • @lelandrichardson: Refactor enzyme to use Adapters, initial React 16 support (#1007)

  • @lelandrichardson: Make private properties more private and harder to use (#1083)

  • @ljharb: [breaking] update cheerio to v1 (#1093)

  • @aweary: Integrate with a CSS parser for selector parsing (#1086)

  • @vadimdemedes: Skip undefined props when comparing nodes (#662)

  • @koba04: Breaking: lifecycleExperimental by default (#1140)

New Stuff

  • @lelandrichardson: Move to lerna repo structure, multiple modules (#1074)

  • @lelandrichardson: Remove all React dependencies from enzyme (#1084)

  • @lelandrichardson: Add public root method (#1127)

Fixes

  • @aweary: Remove isFunctionalComponent, use nodeType instead (#1076)

  • @LarsHassler: props not merged when shallow rendering in lifecycleExperimental (#1088)

  • @ljharb: [Fix] mount: do not mutate Component.contextTypes (#1099)

  • @ljharb: [Fix] reduce/reduceRight: follow Array#reduce when omitting initialValue (#673)

  • @koba04: Fix componentDidUpdate when updating by setState on v16 (#1133)

  • @koba04: Fix componentDidUpdate no longer receives prevContext on React v16 (#1139)

Documentation

  • @ghost: added sinon to mocha guide (#1075)

  • @samit4me: Update to GitBook 3 (#1039)

  • @therewillbecode: Removed extraneous brackets from example in readme (#1117)

  • @silvenon: Add note that mount() requires cleanup (#1043)

  • @lelandrichardson: Add docs reflecting v3 (#1121)

2.9.1

Fixes

  • [Deps] Require uuid at least 3.0.1 (#1001)

2.9.0

New Stuff

  • mount/shallow: debug: add ignoreProps option (#960)

Fixes

  • shallow: debug: fix indentation (#926)
  • react-compat: Make sure dependency error reporting always work (#929)
  • react-compat: correct error message (#904)

Documentation

  • lint our markdown (#988)
  • correct nvm install instructions (never install it with homebrew) (#988)
  • fix typos (#979), (#983)
  • Added missing isEmptyRender() docs
  • update jsdom guides for v10 and later (#921)

Refactors

  • shallow/mount: Make all references to the wrapper class call into this.wrap
  • update uuid from v2 to v3 (#998)

2.8.2

Fixes

  • Loosen react-compat implicit dependency logic for React 15.4 (#896)

Documentation

  • Update docs to use prop-types (#894, #890)

2.8.1

Fixes

  • support React@15.5 (#876)
  • no longer depend on React.createClass (#877)
  • Throw for malformed compound selectors (#868)

2.8.0

New Stuff

  • add disableLifecycleMethods for shallow (#789)
  • Match children before and after interpolation (#512)
  • Supporting passing context to static rendering (#429)

Fixes

  • Fix an issue w/ cleaning up global.document (#855)
  • Update props when shouldComponentUpdate returns false and lifecycleExperimental is on (#807)
  • Properly pass along options in dive (#771)

2.7.1 (January 22, 2017)

Fixes

  • mount: Fix bug from (#677 (#680)
  • mount: ignore text nodes in childrenOfInst (#604)

Documentation

  • Update Docs for .getNode and .getNodes (#743)
  • Add a link for ShallowWrapper#dive() (#759
  • Fix alphabetical order of API lists (#761)

2.7.0 (December 21, 2016)

New Stuff

  • shallow/mount: Add .slice() method (#661)
  • mount: implement ReactWrapper#getDOMNode (#679)
  • shallow/mount: Add exists; deprecate isEmpty() (#722)

Fixes

  • mount: extract MountedTraversal.hasClassName from MountedTraversal.instHasClassName, which allows ReactWrapper.hasClass to bypass the !isDOMComponent(inst) call (#677)
  • withDom: Display a useful error when withDom fails to find "jsdom" (#686)
  • mount: ensure that react-text comment nodes don’t break .find (#691)
  • mount: .parents() now filters out sibling path trees (#713)

2.6.0 (November 9, 2016)

New Stuff

  • ensure ShallowWrapper render output can't get stale (#490)

Fixes

  • Use shim to detect constructor function name (#659)
  • mount/shallow: fix ID selectors (#670)

2.5.2 (November 9, 2016)

Fixes

  • Use shim to detect constructor function name (#659)
  • mount/shallow: fix ID selectors (#670)

2.5.1 (October 17, 2016)

Patches

  • continue to support one-argument single (#632)

2.5.0 (October 17, 2016)

Minor Changes

  • pass callback on setState and setProps (#617)

  • Make ReactWrapper and ShallowWrapper iterable (#594)

  • add .dive() method to shallow (#618)

Patches

  • Warn if selector contains a pseudo-class (#591)

  • change isCompoundSelector to not match prop selector (#595)

  • fixed hasClassName in case className is not a string and has toString method (#518)

  • Throw if some() is called on a root wrapper (#523)

  • Fix valid + falsy propvalues (#563)

2.4.2 (November 9, 2016)

Fixes

  • Use shim to detect constructor function name (#659)
  • mount/shallow: fix ID selectors (#670)

2.4.1 (July 8, 2016)

Patches

  • Fix backwards incompatible shouldComponentUpdate call (#491)

2.4.0 (July 7, 2016)

Minor Changes

  • Support all Component Lifecycle methods in ShallowRenderer (behind an experimental flag) (#318)

  • Add an isEmptyRender() method to both ShallowWrapper and ReactWrapper (#339)

  • Add support for batched updates with ShallowRender.simulate (#342)

Patches

  • Switch to using classList instead of className (#448)

  • fixes mount().debug() output with mixed children (#476)

  • Support additional characters in attribute selectors (#412)

  • fix id selector not working when combined with a tag selector (#387)

  • Support spaces in attribute selector values (#427)

2.3.0 (May 9, 2016)

Minor Changes

  • add .tap() method to ShallowWrapper and ReactWrapper (#299)

  • add .key() method to ShallowWrapper and ReactWrapper (#327)

  • add support for descendent selectors, >, ~ and + (#217)

  • new containsMatchingElement, containsAllMatchingElements, and containsAnyMatchingElements APIs (#362)

  • new .name() method (#335)

Patches

  • add dblclick to eventType map for simulate (#317)

  • fix pathToNode bug with child-containing children (#296)

  • prioritize displayName over name for consistency in .debug() (#332)

  • handle insignificant whitespace in className (#348)

  • fix handling of SFC components and .instance() (#359)

  • reduce false positives by using argument validation for .contains (#259)

  • fix equality algorithm so that non-renderable nodes are equivalent (#192)

  • add better error handling for state, setState, and context (#373)

2.2.0 (March 21, 2016)

Minor Changes

  • add options param to ShallowWrapper::shallow (#275)

Patches

  • make enzyme compatible with all React 15 RCs (#272)

  • increase coverage for Stateless Functional Components (#267)

  • improve context support for Stateless Functional Components (#256)

  • fix tree traversal for Stateless Functional Components (#257)

  • fix .find for nested Stateless Functional Components (#274)

  • fix .props() and .debug() methods for Stateless Functional Components (#255)

  • prevent falsy nodes from being counted as children (#251)

2.1.0 (March 10, 2016)

Minor Changes

  • add support for React 15.0.0-rc.1 (#240)

  • add .unmount() method for ShallowWrapper (#215)

  • add direct imports for mount, shallow, and render (#198)

  • add a .childAt(n) shorthand method (#187)

Patches

  • fix bug in .contains() for matching sub-arrays (#226)

  • fix bug in matching by type displayName (#230)

  • add more useful warnings for missing implicit dependencies (#228)

  • improve SFC support for .type() (#196)

  • fix null handling for .html() and .render() (#196)

  • moved from underscore to lodash (#189)

2.0.0 (February 10, 2016)

Major Changes (breaking)

  • removed describeWithDOM utility (#159)

  • removed useSinon, spyPrototype and spyLifecycle utilities (#159)

  • removed sinon dependency (#159)

  • removed jsdom dependency (#159)

1.6.0 (February 10, 2016)

Minor Changes

  • add option for childContextTypes of ReactWrapper (#171)

Patches

  • Prevent null or false nodes from being passed into tree traversal (#174)

  • setProps no longer swallows exceptions (#170)

  • .type() and .props() should not fail on null now (#162)

1.5.0 (February 2, 2016)

Minor Changes

  • Add attachTo option to mount to mount to a specific element (#160)

  • Add .debug() method to ReactWrapper (#158)

  • Add .mount() and .unmount() APIs to ReactWrapper (#155)

  • Add .render() method to ReactWrapper (#156)

  • Allow .contains() to accept an array of nodes (#154)

  • Add .context() method to ReactWrapper and ShallowWrapper (#152)

Patches

  • Fixed some behavior with .contains() matching on strings (#148)

  • Fixed .debug()'s output for numeric children (#149)

  • Documentation fixes

  • Update versions of dependencies

1.4.1 (January 24, 2016)

Patches

  • Upgrade to babel 6 (#81)

  • Fix event naming bug in ShallowWrapper (#135)

  • Documentation fixes

1.4.0 (January 21, 2016)

Minor Changes

  • describeWithDOM enhancement (#126)

  • add .equals() method to ShallowWrapper (#124)

  • add object selector syntax (#110)

Patches

  • Fixed confusing behavior of prop selector syntax (#130)

  • Documentation fixes

1.3.1 (January 15, 2016)

Patches

  • Fix setProps not passing old context (#121)

  • Map lowercase mouse events in simulate (#77)

1.3.0 (January 13, 2016)

Minor Changes

  • Added .html() method to ReactWrapper (#71)

  • Support property selector (i.e. [prop="foo"]) (#70)

  • jsdom dependency now allows a range of supported versions (#95)

Patches

  • Normalized setProps() behavior between mount/shallow to merge props (#103)

  • Exclude _book from published package (#85)

  • Various documentation, tests, and style changes

1.2.0 (December 10, 2015)

Minor Changes

  • Support for context (#62)

Patches

  • nodeHasId fix for some 0.14 corner cases (#65)

1.1.0 (December 7, 2015)

Minor Changes

  • Support for Stateless Functional Components (#53)

Patches

  • Tweak describeWithDOM messaging (#48)
  • Documentation Fixes

1.0.0 (December 3, 2015)

  • Official Release!