Socket
Socket
Sign inDemoInstall

@testing-library/react

Package Overview
Dependencies
Maintainers
13
Versions
117
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@testing-library/react - npm Package Compare versions

Comparing version 13.3.0 to 13.4.0

318

dist/@testing-library/react.cjs.js

@@ -6,5 +6,2 @@ 'use strict';

var testUtils = require('react-dom/test-utils');
var _extends = require('@babel/runtime/helpers/extends');
var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
var _regeneratorRuntime = require('@babel/runtime/regenerator');
var React = require('react');

@@ -36,5 +33,2 @@ var ReactDOM = require('react-dom');

var testUtils__namespace = /*#__PURE__*/_interopNamespace(testUtils);
var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
var _asyncToGenerator__default = /*#__PURE__*/_interopDefaultLegacy(_asyncToGenerator);
var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
var React__namespace = /*#__PURE__*/_interopNamespace(React);

@@ -44,3 +38,3 @@ var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);

var domAct = testUtils__namespace.act;
const domAct = testUtils__namespace.act;

@@ -85,4 +79,4 @@ function getGlobalThis() {

function withGlobalActEnvironment(actImplementation) {
return function (callback) {
var previousActEnvironment = getIsReactActEnvironment();
return callback => {
const previousActEnvironment = getIsReactActEnvironment();
setIsReactActEnvironment(true);

@@ -92,5 +86,5 @@

// The return value of `act` is always a thenable.
var callbackNeedsToBeAwaited = false;
var actResult = actImplementation(function () {
var result = callback();
let callbackNeedsToBeAwaited = false;
const actResult = actImplementation(() => {
const result = callback();

@@ -105,9 +99,9 @@ if (result !== null && typeof result === 'object' && typeof result.then === 'function') {

if (callbackNeedsToBeAwaited) {
var thenable = actResult;
const thenable = actResult;
return {
then: function then(resolve, reject) {
thenable.then(function (returnValue) {
then: (resolve, reject) => {
thenable.then(returnValue => {
setIsReactActEnvironment(previousActEnvironment);
resolve(returnValue);
}, function (error) {
}, error => {
setIsReactActEnvironment(previousActEnvironment);

@@ -131,3 +125,3 @@ reject(error);

var act = withGlobalActEnvironment(domAct);
const act = withGlobalActEnvironment(domAct);
/* eslint no-console:0 */

@@ -139,9 +133,9 @@

var fireEvent = function fireEvent() {
return dom.fireEvent.apply(void 0, arguments);
const fireEvent = function () {
return dom.fireEvent(...arguments);
};
Object.keys(dom.fireEvent).forEach(function (key) {
Object.keys(dom.fireEvent).forEach(key => {
fireEvent[key] = function () {
return dom.fireEvent[key].apply(dom.fireEvent, arguments);
return dom.fireEvent[key](...arguments);
};

@@ -152,31 +146,31 @@ }); // React event system tracks native mouseOver/mouseOut events for

var mouseEnter = fireEvent.mouseEnter;
var mouseLeave = fireEvent.mouseLeave;
const mouseEnter = fireEvent.mouseEnter;
const mouseLeave = fireEvent.mouseLeave;
fireEvent.mouseEnter = function () {
mouseEnter.apply(void 0, arguments);
return fireEvent.mouseOver.apply(fireEvent, arguments);
mouseEnter(...arguments);
return fireEvent.mouseOver(...arguments);
};
fireEvent.mouseLeave = function () {
mouseLeave.apply(void 0, arguments);
return fireEvent.mouseOut.apply(fireEvent, arguments);
mouseLeave(...arguments);
return fireEvent.mouseOut(...arguments);
};
var pointerEnter = fireEvent.pointerEnter;
var pointerLeave = fireEvent.pointerLeave;
const pointerEnter = fireEvent.pointerEnter;
const pointerLeave = fireEvent.pointerLeave;
fireEvent.pointerEnter = function () {
pointerEnter.apply(void 0, arguments);
return fireEvent.pointerOver.apply(fireEvent, arguments);
pointerEnter(...arguments);
return fireEvent.pointerOver(...arguments);
};
fireEvent.pointerLeave = function () {
pointerLeave.apply(void 0, arguments);
return fireEvent.pointerOut.apply(fireEvent, arguments);
pointerLeave(...arguments);
return fireEvent.pointerOut(...arguments);
};
var select = fireEvent.select;
const select = fireEvent.select;
fireEvent.select = function (node, init) {
fireEvent.select = (node, init) => {
select(node, init); // React tracks this event only on focused inputs

@@ -199,17 +193,17 @@

var blur = fireEvent.blur;
var focus = fireEvent.focus;
const blur = fireEvent.blur;
const focus = fireEvent.focus;
fireEvent.blur = function () {
fireEvent.focusOut.apply(fireEvent, arguments);
return blur.apply(void 0, arguments);
fireEvent.focusOut(...arguments);
return blur(...arguments);
};
fireEvent.focus = function () {
fireEvent.focusIn.apply(fireEvent, arguments);
return focus.apply(void 0, arguments);
fireEvent.focusIn(...arguments);
return focus(...arguments);
};
dom.configure({
unstable_advanceTimersWrapper: function unstable_advanceTimersWrapper(cb) {
unstable_advanceTimersWrapper: cb => {
return act(cb);

@@ -220,40 +214,15 @@ },

// Let's just hope nobody else is using it.
asyncWrapper: function () {
var _asyncWrapper = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(cb) {
var previousActEnvironment;
return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
previousActEnvironment = getIsReactActEnvironment();
setIsReactActEnvironment(false);
_context.prev = 2;
_context.next = 5;
return cb();
asyncWrapper: async cb => {
const previousActEnvironment = getIsReactActEnvironment();
setIsReactActEnvironment(false);
case 5:
return _context.abrupt("return", _context.sent);
case 6:
_context.prev = 6;
setIsReactActEnvironment(previousActEnvironment);
return _context.finish(6);
case 9:
case "end":
return _context.stop();
}
}
}, _callee, null, [[2,, 6, 9]]);
}));
function asyncWrapper(_x) {
return _asyncWrapper.apply(this, arguments);
try {
return await cb();
} finally {
setIsReactActEnvironment(previousActEnvironment);
}
return asyncWrapper;
}(),
eventWrapper: function eventWrapper(cb) {
var result;
act(function () {
},
eventWrapper: cb => {
let result;
act(() => {
result = cb();

@@ -270,3 +239,3 @@ });

var mountedContainers = new Set();
const mountedContainers = new Set();
/**

@@ -276,12 +245,14 @@ * @type Array<{container: import('react-dom').Container, root: ReturnType<typeof createConcurrentRoot>}>

var mountedRootEntries = [];
const mountedRootEntries = [];
function createConcurrentRoot(container, _ref) {
var _hydrate = _ref.hydrate,
ui = _ref.ui,
WrapperComponent = _ref.wrapper;
var root;
let {
hydrate,
ui,
wrapper: WrapperComponent
} = _ref;
let root;
if (_hydrate) {
act(function () {
if (hydrate) {
act(() => {
root = ReactDOMClient__namespace.hydrateRoot(container, WrapperComponent ? /*#__PURE__*/React__namespace.createElement(WrapperComponent, null, ui) : ui);

@@ -294,5 +265,5 @@ });

return {
hydrate: function hydrate() {
hydrate() {
/* istanbul ignore if */
if (!_hydrate) {
if (!hydrate) {
throw new Error('Attempted to hydrate a non-hydrateable root. This is a bug in `@testing-library/react`.');

@@ -302,8 +273,11 @@ } // Nothing to do since hydration happens when creating the root object.

},
render: function render(element) {
render(element) {
root.render(element);
},
unmount: function unmount() {
unmount() {
root.unmount();
}
};

@@ -314,11 +288,14 @@ }

return {
hydrate: function hydrate(element) {
hydrate(element) {
ReactDOM__default["default"].hydrate(element, container);
},
render: function render(element) {
render(element) {
ReactDOM__default["default"].render(element, container);
},
unmount: function unmount() {
unmount() {
ReactDOM__default["default"].unmountComponentAtNode(container);
}
};

@@ -328,14 +305,14 @@ }

function renderRoot(ui, _ref2) {
var baseElement = _ref2.baseElement,
container = _ref2.container,
hydrate = _ref2.hydrate,
queries = _ref2.queries,
root = _ref2.root,
WrapperComponent = _ref2.wrapper;
let {
baseElement,
container,
hydrate,
queries,
root,
wrapper: WrapperComponent
} = _ref2;
var wrapUiIfNeeded = function wrapUiIfNeeded(innerElement) {
return WrapperComponent ? /*#__PURE__*/React__namespace.createElement(WrapperComponent, null, innerElement) : innerElement;
};
const wrapUiIfNeeded = innerElement => WrapperComponent ? /*#__PURE__*/React__namespace.createElement(WrapperComponent, null, innerElement) : innerElement;
act(function () {
act(() => {
if (hydrate) {

@@ -347,6 +324,6 @@ root.hydrate(wrapUiIfNeeded(ui), container);

});
return _extends__default["default"]({
container: container,
baseElement: baseElement,
debug: function debug(el, maxLength, options) {
return {
container,
baseElement,
debug: function (el, maxLength, options) {
if (el === void 0) {

@@ -357,21 +334,19 @@ el = baseElement;

return Array.isArray(el) ? // eslint-disable-next-line no-console
el.forEach(function (e) {
return console.log(dom.prettyDOM(e, maxLength, options));
}) : // eslint-disable-next-line no-console,
el.forEach(e => console.log(dom.prettyDOM(e, maxLength, options))) : // eslint-disable-next-line no-console,
console.log(dom.prettyDOM(el, maxLength, options));
},
unmount: function unmount() {
act(function () {
unmount: () => {
act(() => {
root.unmount();
});
},
rerender: function rerender(rerenderUi) {
rerender: rerenderUi => {
renderRoot(wrapUiIfNeeded(rerenderUi), {
container: container,
baseElement: baseElement,
root: root
container,
baseElement,
root
}); // Intentionally do not return anything to avoid unnecessarily complicating the API.
// folks can use all the same utilities we return in the first place that are bound to the container
},
asFragment: function asFragment() {
asFragment: () => {
/* istanbul ignore else (old jsdom limitation) */

@@ -381,21 +356,20 @@ if (typeof document.createRange === 'function') {

} else {
var template = document.createElement('template');
const template = document.createElement('template');
template.innerHTML = container.innerHTML;
return template.content;
}
}
}, dom.getQueriesForElement(baseElement, queries));
},
...dom.getQueriesForElement(baseElement, queries)
};
}
function render(ui, _temp) {
var _ref3 = _temp === void 0 ? {} : _temp,
container = _ref3.container,
_ref3$baseElement = _ref3.baseElement,
baseElement = _ref3$baseElement === void 0 ? container : _ref3$baseElement,
_ref3$legacyRoot = _ref3.legacyRoot,
legacyRoot = _ref3$legacyRoot === void 0 ? false : _ref3$legacyRoot,
queries = _ref3.queries,
_ref3$hydrate = _ref3.hydrate,
hydrate = _ref3$hydrate === void 0 ? false : _ref3$hydrate,
wrapper = _ref3.wrapper;
let {
container,
baseElement = container,
legacyRoot = false,
queries,
hydrate = false,
wrapper
} = _temp === void 0 ? {} : _temp;

@@ -412,14 +386,14 @@ if (!baseElement) {

var root; // eslint-disable-next-line no-negated-condition -- we want to map the evolution of this over time. The root is created first. Only later is it re-used so we don't want to read the case that happens later first.
let root; // eslint-disable-next-line no-negated-condition -- we want to map the evolution of this over time. The root is created first. Only later is it re-used so we don't want to read the case that happens later first.
if (!mountedContainers.has(container)) {
var createRootImpl = legacyRoot ? createLegacyRoot : createConcurrentRoot;
const createRootImpl = legacyRoot ? createLegacyRoot : createConcurrentRoot;
root = createRootImpl(container, {
hydrate: hydrate,
ui: ui,
wrapper: wrapper
hydrate,
ui,
wrapper
});
mountedRootEntries.push({
container: container,
root: root
container,
root
}); // we'll add it to the mounted containers regardless of whether it's actually

@@ -431,3 +405,3 @@ // added to document.body so the cleanup method works regardless of whether

} else {
mountedRootEntries.forEach(function (rootEntry) {
mountedRootEntries.forEach(rootEntry => {
// Else is unreachable since `mountedContainers` has the `container`.

@@ -444,8 +418,8 @@ // Only reachable if one would accidentally add the container to `mountedContainers` but not the root to `mountedRootEntries`

return renderRoot(ui, {
container: container,
baseElement: baseElement,
queries: queries,
hydrate: hydrate,
wrapper: wrapper,
root: root
container,
baseElement,
queries,
hydrate,
wrapper,
root
});

@@ -455,6 +429,8 @@ }

function cleanup() {
mountedRootEntries.forEach(function (_ref4) {
var root = _ref4.root,
container = _ref4.container;
act(function () {
mountedRootEntries.forEach(_ref3 => {
let {
root,
container
} = _ref3;
act(() => {
root.unmount();

@@ -476,11 +452,14 @@ });

var _options = options,
initialProps = _options.initialProps,
wrapper = _options.wrapper;
var result = /*#__PURE__*/React__namespace.createRef();
const {
initialProps,
...renderOptions
} = options;
const result = /*#__PURE__*/React__namespace.createRef();
function TestComponent(_ref5) {
var renderCallbackProps = _ref5.renderCallbackProps;
var pendingResult = renderCallback(renderCallbackProps);
React__namespace.useEffect(function () {
function TestComponent(_ref4) {
let {
renderCallbackProps
} = _ref4;
const pendingResult = renderCallback(renderCallbackProps);
React__namespace.useEffect(() => {
result.current = pendingResult;

@@ -491,9 +470,8 @@ });

var _render = render( /*#__PURE__*/React__namespace.createElement(TestComponent, {
const {
rerender: baseRerender,
unmount
} = render( /*#__PURE__*/React__namespace.createElement(TestComponent, {
renderCallbackProps: initialProps
}), {
wrapper: wrapper
}),
baseRerender = _render.rerender,
unmount = _render.unmount;
}), renderOptions);

@@ -507,5 +485,5 @@ function rerender(rerenderCallbackProps) {

return {
result: result,
rerender: rerender,
unmount: unmount
result,
rerender,
unmount
};

@@ -526,3 +504,3 @@ } // just re-export everything from dom-testing-library

if (typeof afterEach === 'function') {
afterEach(function () {
afterEach(() => {
cleanup();

@@ -534,3 +512,3 @@ });

// eslint-disable-next-line no-undef
teardown(function () {
teardown(() => {
cleanup();

@@ -545,8 +523,8 @@ });

// This matches the behavior of React < 18.
var previousIsReactActEnvironment = getIsReactActEnvironment();
beforeAll(function () {
let previousIsReactActEnvironment = getIsReactActEnvironment();
beforeAll(() => {
previousIsReactActEnvironment = getIsReactActEnvironment();
setIsReactActEnvironment(true);
});
afterAll(function () {
afterAll(() => {
setIsReactActEnvironment(previousIsReactActEnvironment);

@@ -553,0 +531,0 @@ });

import * as testUtils from 'react-dom/test-utils';
import _extends from '@babel/runtime/helpers/esm/extends';
import _asyncToGenerator from '@babel/runtime/helpers/esm/asyncToGenerator';
import _regeneratorRuntime from '@babel/runtime/regenerator';
import * as React from 'react';

@@ -11,3 +8,3 @@ import ReactDOM from 'react-dom';

var domAct = testUtils.act;
const domAct = testUtils.act;

@@ -52,4 +49,4 @@ function getGlobalThis() {

function withGlobalActEnvironment(actImplementation) {
return function (callback) {
var previousActEnvironment = getIsReactActEnvironment();
return callback => {
const previousActEnvironment = getIsReactActEnvironment();
setIsReactActEnvironment(true);

@@ -59,5 +56,5 @@

// The return value of `act` is always a thenable.
var callbackNeedsToBeAwaited = false;
var actResult = actImplementation(function () {
var result = callback();
let callbackNeedsToBeAwaited = false;
const actResult = actImplementation(() => {
const result = callback();

@@ -72,9 +69,9 @@ if (result !== null && typeof result === 'object' && typeof result.then === 'function') {

if (callbackNeedsToBeAwaited) {
var thenable = actResult;
const thenable = actResult;
return {
then: function then(resolve, reject) {
thenable.then(function (returnValue) {
then: (resolve, reject) => {
thenable.then(returnValue => {
setIsReactActEnvironment(previousActEnvironment);
resolve(returnValue);
}, function (error) {
}, error => {
setIsReactActEnvironment(previousActEnvironment);

@@ -98,3 +95,3 @@ reject(error);

var act = withGlobalActEnvironment(domAct);
const act = withGlobalActEnvironment(domAct);
/* eslint no-console:0 */

@@ -106,9 +103,9 @@

var fireEvent = function fireEvent() {
return fireEvent$1.apply(void 0, arguments);
const fireEvent = function () {
return fireEvent$1(...arguments);
};
Object.keys(fireEvent$1).forEach(function (key) {
Object.keys(fireEvent$1).forEach(key => {
fireEvent[key] = function () {
return fireEvent$1[key].apply(fireEvent$1, arguments);
return fireEvent$1[key](...arguments);
};

@@ -119,31 +116,31 @@ }); // React event system tracks native mouseOver/mouseOut events for

var mouseEnter = fireEvent.mouseEnter;
var mouseLeave = fireEvent.mouseLeave;
const mouseEnter = fireEvent.mouseEnter;
const mouseLeave = fireEvent.mouseLeave;
fireEvent.mouseEnter = function () {
mouseEnter.apply(void 0, arguments);
return fireEvent.mouseOver.apply(fireEvent, arguments);
mouseEnter(...arguments);
return fireEvent.mouseOver(...arguments);
};
fireEvent.mouseLeave = function () {
mouseLeave.apply(void 0, arguments);
return fireEvent.mouseOut.apply(fireEvent, arguments);
mouseLeave(...arguments);
return fireEvent.mouseOut(...arguments);
};
var pointerEnter = fireEvent.pointerEnter;
var pointerLeave = fireEvent.pointerLeave;
const pointerEnter = fireEvent.pointerEnter;
const pointerLeave = fireEvent.pointerLeave;
fireEvent.pointerEnter = function () {
pointerEnter.apply(void 0, arguments);
return fireEvent.pointerOver.apply(fireEvent, arguments);
pointerEnter(...arguments);
return fireEvent.pointerOver(...arguments);
};
fireEvent.pointerLeave = function () {
pointerLeave.apply(void 0, arguments);
return fireEvent.pointerOut.apply(fireEvent, arguments);
pointerLeave(...arguments);
return fireEvent.pointerOut(...arguments);
};
var select = fireEvent.select;
const select = fireEvent.select;
fireEvent.select = function (node, init) {
fireEvent.select = (node, init) => {
select(node, init); // React tracks this event only on focused inputs

@@ -166,17 +163,17 @@

var blur = fireEvent.blur;
var focus = fireEvent.focus;
const blur = fireEvent.blur;
const focus = fireEvent.focus;
fireEvent.blur = function () {
fireEvent.focusOut.apply(fireEvent, arguments);
return blur.apply(void 0, arguments);
fireEvent.focusOut(...arguments);
return blur(...arguments);
};
fireEvent.focus = function () {
fireEvent.focusIn.apply(fireEvent, arguments);
return focus.apply(void 0, arguments);
fireEvent.focusIn(...arguments);
return focus(...arguments);
};
configure({
unstable_advanceTimersWrapper: function unstable_advanceTimersWrapper(cb) {
unstable_advanceTimersWrapper: cb => {
return act(cb);

@@ -187,40 +184,15 @@ },

// Let's just hope nobody else is using it.
asyncWrapper: function () {
var _asyncWrapper = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(cb) {
var previousActEnvironment;
return _regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
previousActEnvironment = getIsReactActEnvironment();
setIsReactActEnvironment(false);
_context.prev = 2;
_context.next = 5;
return cb();
asyncWrapper: async cb => {
const previousActEnvironment = getIsReactActEnvironment();
setIsReactActEnvironment(false);
case 5:
return _context.abrupt("return", _context.sent);
case 6:
_context.prev = 6;
setIsReactActEnvironment(previousActEnvironment);
return _context.finish(6);
case 9:
case "end":
return _context.stop();
}
}
}, _callee, null, [[2,, 6, 9]]);
}));
function asyncWrapper(_x) {
return _asyncWrapper.apply(this, arguments);
try {
return await cb();
} finally {
setIsReactActEnvironment(previousActEnvironment);
}
return asyncWrapper;
}(),
eventWrapper: function eventWrapper(cb) {
var result;
act(function () {
},
eventWrapper: cb => {
let result;
act(() => {
result = cb();

@@ -237,3 +209,3 @@ });

var mountedContainers = new Set();
const mountedContainers = new Set();
/**

@@ -243,12 +215,14 @@ * @type Array<{container: import('react-dom').Container, root: ReturnType<typeof createConcurrentRoot>}>

var mountedRootEntries = [];
const mountedRootEntries = [];
function createConcurrentRoot(container, _ref) {
var _hydrate = _ref.hydrate,
ui = _ref.ui,
WrapperComponent = _ref.wrapper;
var root;
let {
hydrate,
ui,
wrapper: WrapperComponent
} = _ref;
let root;
if (_hydrate) {
act(function () {
if (hydrate) {
act(() => {
root = ReactDOMClient.hydrateRoot(container, WrapperComponent ? /*#__PURE__*/React.createElement(WrapperComponent, null, ui) : ui);

@@ -261,5 +235,5 @@ });

return {
hydrate: function hydrate() {
hydrate() {
/* istanbul ignore if */
if (!_hydrate) {
if (!hydrate) {
throw new Error('Attempted to hydrate a non-hydrateable root. This is a bug in `@testing-library/react`.');

@@ -269,8 +243,11 @@ } // Nothing to do since hydration happens when creating the root object.

},
render: function render(element) {
render(element) {
root.render(element);
},
unmount: function unmount() {
unmount() {
root.unmount();
}
};

@@ -281,11 +258,14 @@ }

return {
hydrate: function hydrate(element) {
hydrate(element) {
ReactDOM.hydrate(element, container);
},
render: function render(element) {
render(element) {
ReactDOM.render(element, container);
},
unmount: function unmount() {
unmount() {
ReactDOM.unmountComponentAtNode(container);
}
};

@@ -295,14 +275,14 @@ }

function renderRoot(ui, _ref2) {
var baseElement = _ref2.baseElement,
container = _ref2.container,
hydrate = _ref2.hydrate,
queries = _ref2.queries,
root = _ref2.root,
WrapperComponent = _ref2.wrapper;
let {
baseElement,
container,
hydrate,
queries,
root,
wrapper: WrapperComponent
} = _ref2;
var wrapUiIfNeeded = function wrapUiIfNeeded(innerElement) {
return WrapperComponent ? /*#__PURE__*/React.createElement(WrapperComponent, null, innerElement) : innerElement;
};
const wrapUiIfNeeded = innerElement => WrapperComponent ? /*#__PURE__*/React.createElement(WrapperComponent, null, innerElement) : innerElement;
act(function () {
act(() => {
if (hydrate) {

@@ -314,6 +294,6 @@ root.hydrate(wrapUiIfNeeded(ui), container);

});
return _extends({
container: container,
baseElement: baseElement,
debug: function debug(el, maxLength, options) {
return {
container,
baseElement,
debug: function (el, maxLength, options) {
if (el === void 0) {

@@ -324,21 +304,19 @@ el = baseElement;

return Array.isArray(el) ? // eslint-disable-next-line no-console
el.forEach(function (e) {
return console.log(prettyDOM(e, maxLength, options));
}) : // eslint-disable-next-line no-console,
el.forEach(e => console.log(prettyDOM(e, maxLength, options))) : // eslint-disable-next-line no-console,
console.log(prettyDOM(el, maxLength, options));
},
unmount: function unmount() {
act(function () {
unmount: () => {
act(() => {
root.unmount();
});
},
rerender: function rerender(rerenderUi) {
rerender: rerenderUi => {
renderRoot(wrapUiIfNeeded(rerenderUi), {
container: container,
baseElement: baseElement,
root: root
container,
baseElement,
root
}); // Intentionally do not return anything to avoid unnecessarily complicating the API.
// folks can use all the same utilities we return in the first place that are bound to the container
},
asFragment: function asFragment() {
asFragment: () => {
/* istanbul ignore else (old jsdom limitation) */

@@ -348,21 +326,20 @@ if (typeof document.createRange === 'function') {

} else {
var template = document.createElement('template');
const template = document.createElement('template');
template.innerHTML = container.innerHTML;
return template.content;
}
}
}, getQueriesForElement(baseElement, queries));
},
...getQueriesForElement(baseElement, queries)
};
}
function render(ui, _temp) {
var _ref3 = _temp === void 0 ? {} : _temp,
container = _ref3.container,
_ref3$baseElement = _ref3.baseElement,
baseElement = _ref3$baseElement === void 0 ? container : _ref3$baseElement,
_ref3$legacyRoot = _ref3.legacyRoot,
legacyRoot = _ref3$legacyRoot === void 0 ? false : _ref3$legacyRoot,
queries = _ref3.queries,
_ref3$hydrate = _ref3.hydrate,
hydrate = _ref3$hydrate === void 0 ? false : _ref3$hydrate,
wrapper = _ref3.wrapper;
let {
container,
baseElement = container,
legacyRoot = false,
queries,
hydrate = false,
wrapper
} = _temp === void 0 ? {} : _temp;

@@ -379,14 +356,14 @@ if (!baseElement) {

var root; // eslint-disable-next-line no-negated-condition -- we want to map the evolution of this over time. The root is created first. Only later is it re-used so we don't want to read the case that happens later first.
let root; // eslint-disable-next-line no-negated-condition -- we want to map the evolution of this over time. The root is created first. Only later is it re-used so we don't want to read the case that happens later first.
if (!mountedContainers.has(container)) {
var createRootImpl = legacyRoot ? createLegacyRoot : createConcurrentRoot;
const createRootImpl = legacyRoot ? createLegacyRoot : createConcurrentRoot;
root = createRootImpl(container, {
hydrate: hydrate,
ui: ui,
wrapper: wrapper
hydrate,
ui,
wrapper
});
mountedRootEntries.push({
container: container,
root: root
container,
root
}); // we'll add it to the mounted containers regardless of whether it's actually

@@ -398,3 +375,3 @@ // added to document.body so the cleanup method works regardless of whether

} else {
mountedRootEntries.forEach(function (rootEntry) {
mountedRootEntries.forEach(rootEntry => {
// Else is unreachable since `mountedContainers` has the `container`.

@@ -411,8 +388,8 @@ // Only reachable if one would accidentally add the container to `mountedContainers` but not the root to `mountedRootEntries`

return renderRoot(ui, {
container: container,
baseElement: baseElement,
queries: queries,
hydrate: hydrate,
wrapper: wrapper,
root: root
container,
baseElement,
queries,
hydrate,
wrapper,
root
});

@@ -422,6 +399,8 @@ }

function cleanup() {
mountedRootEntries.forEach(function (_ref4) {
var root = _ref4.root,
container = _ref4.container;
act(function () {
mountedRootEntries.forEach(_ref3 => {
let {
root,
container
} = _ref3;
act(() => {
root.unmount();

@@ -443,11 +422,14 @@ });

var _options = options,
initialProps = _options.initialProps,
wrapper = _options.wrapper;
var result = /*#__PURE__*/React.createRef();
const {
initialProps,
...renderOptions
} = options;
const result = /*#__PURE__*/React.createRef();
function TestComponent(_ref5) {
var renderCallbackProps = _ref5.renderCallbackProps;
var pendingResult = renderCallback(renderCallbackProps);
React.useEffect(function () {
function TestComponent(_ref4) {
let {
renderCallbackProps
} = _ref4;
const pendingResult = renderCallback(renderCallbackProps);
React.useEffect(() => {
result.current = pendingResult;

@@ -458,9 +440,8 @@ });

var _render = render( /*#__PURE__*/React.createElement(TestComponent, {
const {
rerender: baseRerender,
unmount
} = render( /*#__PURE__*/React.createElement(TestComponent, {
renderCallbackProps: initialProps
}), {
wrapper: wrapper
}),
baseRerender = _render.rerender,
unmount = _render.unmount;
}), renderOptions);

@@ -474,5 +455,5 @@ function rerender(rerenderCallbackProps) {

return {
result: result,
rerender: rerender,
unmount: unmount
result,
rerender,
unmount
};

@@ -493,3 +474,3 @@ } // just re-export everything from dom-testing-library

if (typeof afterEach === 'function') {
afterEach(function () {
afterEach(() => {
cleanup();

@@ -501,3 +482,3 @@ });

// eslint-disable-next-line no-undef
teardown(function () {
teardown(() => {
cleanup();

@@ -512,8 +493,8 @@ });

// This matches the behavior of React < 18.
var previousIsReactActEnvironment = getIsReactActEnvironment();
beforeAll(function () {
let previousIsReactActEnvironment = getIsReactActEnvironment();
beforeAll(() => {
previousIsReactActEnvironment = getIsReactActEnvironment();
setIsReactActEnvironment(true);
});
afterAll(function () {
afterAll(() => {
setIsReactActEnvironment(previousIsReactActEnvironment);

@@ -520,0 +501,0 @@ });

@@ -5,5 +5,2 @@ 'use strict';

var _extends = require('@babel/runtime/helpers/extends');
var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
var _regeneratorRuntime = require('@babel/runtime/regenerator');
var React = require('react');

@@ -35,5 +32,2 @@ var ReactDOM = require('react-dom');

var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
var _asyncToGenerator__default = /*#__PURE__*/_interopDefaultLegacy(_asyncToGenerator);
var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
var React__namespace = /*#__PURE__*/_interopNamespace(React);

@@ -44,3 +38,3 @@ var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);

var domAct = testUtils__namespace.act;
const domAct = testUtils__namespace.act;

@@ -85,4 +79,4 @@ function getGlobalThis() {

function withGlobalActEnvironment(actImplementation) {
return function (callback) {
var previousActEnvironment = getIsReactActEnvironment();
return callback => {
const previousActEnvironment = getIsReactActEnvironment();
setIsReactActEnvironment(true);

@@ -92,5 +86,5 @@

// The return value of `act` is always a thenable.
var callbackNeedsToBeAwaited = false;
var actResult = actImplementation(function () {
var result = callback();
let callbackNeedsToBeAwaited = false;
const actResult = actImplementation(() => {
const result = callback();

@@ -105,9 +99,9 @@ if (result !== null && typeof result === 'object' && typeof result.then === 'function') {

if (callbackNeedsToBeAwaited) {
var thenable = actResult;
const thenable = actResult;
return {
then: function then(resolve, reject) {
thenable.then(function (returnValue) {
then: (resolve, reject) => {
thenable.then(returnValue => {
setIsReactActEnvironment(previousActEnvironment);
resolve(returnValue);
}, function (error) {
}, error => {
setIsReactActEnvironment(previousActEnvironment);

@@ -131,3 +125,3 @@ reject(error);

var act = withGlobalActEnvironment(domAct);
const act = withGlobalActEnvironment(domAct);
/* eslint no-console:0 */

@@ -139,9 +133,9 @@

var fireEvent = function fireEvent() {
return dom.fireEvent.apply(void 0, arguments);
const fireEvent = function () {
return dom.fireEvent(...arguments);
};
Object.keys(dom.fireEvent).forEach(function (key) {
Object.keys(dom.fireEvent).forEach(key => {
fireEvent[key] = function () {
return dom.fireEvent[key].apply(dom.fireEvent, arguments);
return dom.fireEvent[key](...arguments);
};

@@ -152,31 +146,31 @@ }); // React event system tracks native mouseOver/mouseOut events for

var mouseEnter = fireEvent.mouseEnter;
var mouseLeave = fireEvent.mouseLeave;
const mouseEnter = fireEvent.mouseEnter;
const mouseLeave = fireEvent.mouseLeave;
fireEvent.mouseEnter = function () {
mouseEnter.apply(void 0, arguments);
return fireEvent.mouseOver.apply(fireEvent, arguments);
mouseEnter(...arguments);
return fireEvent.mouseOver(...arguments);
};
fireEvent.mouseLeave = function () {
mouseLeave.apply(void 0, arguments);
return fireEvent.mouseOut.apply(fireEvent, arguments);
mouseLeave(...arguments);
return fireEvent.mouseOut(...arguments);
};
var pointerEnter = fireEvent.pointerEnter;
var pointerLeave = fireEvent.pointerLeave;
const pointerEnter = fireEvent.pointerEnter;
const pointerLeave = fireEvent.pointerLeave;
fireEvent.pointerEnter = function () {
pointerEnter.apply(void 0, arguments);
return fireEvent.pointerOver.apply(fireEvent, arguments);
pointerEnter(...arguments);
return fireEvent.pointerOver(...arguments);
};
fireEvent.pointerLeave = function () {
pointerLeave.apply(void 0, arguments);
return fireEvent.pointerOut.apply(fireEvent, arguments);
pointerLeave(...arguments);
return fireEvent.pointerOut(...arguments);
};
var select = fireEvent.select;
const select = fireEvent.select;
fireEvent.select = function (node, init) {
fireEvent.select = (node, init) => {
select(node, init); // React tracks this event only on focused inputs

@@ -199,17 +193,17 @@

var blur = fireEvent.blur;
var focus = fireEvent.focus;
const blur = fireEvent.blur;
const focus = fireEvent.focus;
fireEvent.blur = function () {
fireEvent.focusOut.apply(fireEvent, arguments);
return blur.apply(void 0, arguments);
fireEvent.focusOut(...arguments);
return blur(...arguments);
};
fireEvent.focus = function () {
fireEvent.focusIn.apply(fireEvent, arguments);
return focus.apply(void 0, arguments);
fireEvent.focusIn(...arguments);
return focus(...arguments);
};
dom.configure({
unstable_advanceTimersWrapper: function unstable_advanceTimersWrapper(cb) {
unstable_advanceTimersWrapper: cb => {
return act(cb);

@@ -220,40 +214,15 @@ },

// Let's just hope nobody else is using it.
asyncWrapper: function () {
var _asyncWrapper = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(cb) {
var previousActEnvironment;
return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
previousActEnvironment = getIsReactActEnvironment();
setIsReactActEnvironment(false);
_context.prev = 2;
_context.next = 5;
return cb();
asyncWrapper: async cb => {
const previousActEnvironment = getIsReactActEnvironment();
setIsReactActEnvironment(false);
case 5:
return _context.abrupt("return", _context.sent);
case 6:
_context.prev = 6;
setIsReactActEnvironment(previousActEnvironment);
return _context.finish(6);
case 9:
case "end":
return _context.stop();
}
}
}, _callee, null, [[2,, 6, 9]]);
}));
function asyncWrapper(_x) {
return _asyncWrapper.apply(this, arguments);
try {
return await cb();
} finally {
setIsReactActEnvironment(previousActEnvironment);
}
return asyncWrapper;
}(),
eventWrapper: function eventWrapper(cb) {
var result;
act(function () {
},
eventWrapper: cb => {
let result;
act(() => {
result = cb();

@@ -270,3 +239,3 @@ });

var mountedContainers = new Set();
const mountedContainers = new Set();
/**

@@ -276,12 +245,14 @@ * @type Array<{container: import('react-dom').Container, root: ReturnType<typeof createConcurrentRoot>}>

var mountedRootEntries = [];
const mountedRootEntries = [];
function createConcurrentRoot(container, _ref) {
var _hydrate = _ref.hydrate,
ui = _ref.ui,
WrapperComponent = _ref.wrapper;
var root;
let {
hydrate,
ui,
wrapper: WrapperComponent
} = _ref;
let root;
if (_hydrate) {
act(function () {
if (hydrate) {
act(() => {
root = ReactDOMClient__namespace.hydrateRoot(container, WrapperComponent ? /*#__PURE__*/React__namespace.createElement(WrapperComponent, null, ui) : ui);

@@ -294,5 +265,5 @@ });

return {
hydrate: function hydrate() {
hydrate() {
/* istanbul ignore if */
if (!_hydrate) {
if (!hydrate) {
throw new Error('Attempted to hydrate a non-hydrateable root. This is a bug in `@testing-library/react`.');

@@ -302,8 +273,11 @@ } // Nothing to do since hydration happens when creating the root object.

},
render: function render(element) {
render(element) {
root.render(element);
},
unmount: function unmount() {
unmount() {
root.unmount();
}
};

@@ -314,11 +288,14 @@ }

return {
hydrate: function hydrate(element) {
hydrate(element) {
ReactDOM__default["default"].hydrate(element, container);
},
render: function render(element) {
render(element) {
ReactDOM__default["default"].render(element, container);
},
unmount: function unmount() {
unmount() {
ReactDOM__default["default"].unmountComponentAtNode(container);
}
};

@@ -328,14 +305,14 @@ }

function renderRoot(ui, _ref2) {
var baseElement = _ref2.baseElement,
container = _ref2.container,
hydrate = _ref2.hydrate,
queries = _ref2.queries,
root = _ref2.root,
WrapperComponent = _ref2.wrapper;
let {
baseElement,
container,
hydrate,
queries,
root,
wrapper: WrapperComponent
} = _ref2;
var wrapUiIfNeeded = function wrapUiIfNeeded(innerElement) {
return WrapperComponent ? /*#__PURE__*/React__namespace.createElement(WrapperComponent, null, innerElement) : innerElement;
};
const wrapUiIfNeeded = innerElement => WrapperComponent ? /*#__PURE__*/React__namespace.createElement(WrapperComponent, null, innerElement) : innerElement;
act(function () {
act(() => {
if (hydrate) {

@@ -347,6 +324,6 @@ root.hydrate(wrapUiIfNeeded(ui), container);

});
return _extends__default["default"]({
container: container,
baseElement: baseElement,
debug: function debug(el, maxLength, options) {
return {
container,
baseElement,
debug: function (el, maxLength, options) {
if (el === void 0) {

@@ -357,21 +334,19 @@ el = baseElement;

return Array.isArray(el) ? // eslint-disable-next-line no-console
el.forEach(function (e) {
return console.log(dom.prettyDOM(e, maxLength, options));
}) : // eslint-disable-next-line no-console,
el.forEach(e => console.log(dom.prettyDOM(e, maxLength, options))) : // eslint-disable-next-line no-console,
console.log(dom.prettyDOM(el, maxLength, options));
},
unmount: function unmount() {
act(function () {
unmount: () => {
act(() => {
root.unmount();
});
},
rerender: function rerender(rerenderUi) {
rerender: rerenderUi => {
renderRoot(wrapUiIfNeeded(rerenderUi), {
container: container,
baseElement: baseElement,
root: root
container,
baseElement,
root
}); // Intentionally do not return anything to avoid unnecessarily complicating the API.
// folks can use all the same utilities we return in the first place that are bound to the container
},
asFragment: function asFragment() {
asFragment: () => {
/* istanbul ignore else (old jsdom limitation) */

@@ -381,21 +356,20 @@ if (typeof document.createRange === 'function') {

} else {
var template = document.createElement('template');
const template = document.createElement('template');
template.innerHTML = container.innerHTML;
return template.content;
}
}
}, dom.getQueriesForElement(baseElement, queries));
},
...dom.getQueriesForElement(baseElement, queries)
};
}
function render(ui, _temp) {
var _ref3 = _temp === void 0 ? {} : _temp,
container = _ref3.container,
_ref3$baseElement = _ref3.baseElement,
baseElement = _ref3$baseElement === void 0 ? container : _ref3$baseElement,
_ref3$legacyRoot = _ref3.legacyRoot,
legacyRoot = _ref3$legacyRoot === void 0 ? false : _ref3$legacyRoot,
queries = _ref3.queries,
_ref3$hydrate = _ref3.hydrate,
hydrate = _ref3$hydrate === void 0 ? false : _ref3$hydrate,
wrapper = _ref3.wrapper;
let {
container,
baseElement = container,
legacyRoot = false,
queries,
hydrate = false,
wrapper
} = _temp === void 0 ? {} : _temp;

@@ -412,14 +386,14 @@ if (!baseElement) {

var root; // eslint-disable-next-line no-negated-condition -- we want to map the evolution of this over time. The root is created first. Only later is it re-used so we don't want to read the case that happens later first.
let root; // eslint-disable-next-line no-negated-condition -- we want to map the evolution of this over time. The root is created first. Only later is it re-used so we don't want to read the case that happens later first.
if (!mountedContainers.has(container)) {
var createRootImpl = legacyRoot ? createLegacyRoot : createConcurrentRoot;
const createRootImpl = legacyRoot ? createLegacyRoot : createConcurrentRoot;
root = createRootImpl(container, {
hydrate: hydrate,
ui: ui,
wrapper: wrapper
hydrate,
ui,
wrapper
});
mountedRootEntries.push({
container: container,
root: root
container,
root
}); // we'll add it to the mounted containers regardless of whether it's actually

@@ -431,3 +405,3 @@ // added to document.body so the cleanup method works regardless of whether

} else {
mountedRootEntries.forEach(function (rootEntry) {
mountedRootEntries.forEach(rootEntry => {
// Else is unreachable since `mountedContainers` has the `container`.

@@ -444,8 +418,8 @@ // Only reachable if one would accidentally add the container to `mountedContainers` but not the root to `mountedRootEntries`

return renderRoot(ui, {
container: container,
baseElement: baseElement,
queries: queries,
hydrate: hydrate,
wrapper: wrapper,
root: root
container,
baseElement,
queries,
hydrate,
wrapper,
root
});

@@ -455,6 +429,8 @@ }

function cleanup() {
mountedRootEntries.forEach(function (_ref4) {
var root = _ref4.root,
container = _ref4.container;
act(function () {
mountedRootEntries.forEach(_ref3 => {
let {
root,
container
} = _ref3;
act(() => {
root.unmount();

@@ -476,11 +452,14 @@ });

var _options = options,
initialProps = _options.initialProps,
wrapper = _options.wrapper;
var result = /*#__PURE__*/React__namespace.createRef();
const {
initialProps,
...renderOptions
} = options;
const result = /*#__PURE__*/React__namespace.createRef();
function TestComponent(_ref5) {
var renderCallbackProps = _ref5.renderCallbackProps;
var pendingResult = renderCallback(renderCallbackProps);
React__namespace.useEffect(function () {
function TestComponent(_ref4) {
let {
renderCallbackProps
} = _ref4;
const pendingResult = renderCallback(renderCallbackProps);
React__namespace.useEffect(() => {
result.current = pendingResult;

@@ -491,9 +470,8 @@ });

var _render = render( /*#__PURE__*/React__namespace.createElement(TestComponent, {
const {
rerender: baseRerender,
unmount
} = render( /*#__PURE__*/React__namespace.createElement(TestComponent, {
renderCallbackProps: initialProps
}), {
wrapper: wrapper
}),
baseRerender = _render.rerender,
unmount = _render.unmount;
}), renderOptions);

@@ -507,5 +485,5 @@ function rerender(rerenderCallbackProps) {

return {
result: result,
rerender: rerender,
unmount: unmount
result,
rerender,
unmount
};

@@ -512,0 +490,0 @@ } // just re-export everything from dom-testing-library

@@ -1,4 +0,1 @@

import _extends from '@babel/runtime/helpers/esm/extends';
import _asyncToGenerator from '@babel/runtime/helpers/esm/asyncToGenerator';
import _regeneratorRuntime from '@babel/runtime/regenerator';
import * as React from 'react';

@@ -11,3 +8,3 @@ import ReactDOM from 'react-dom';

var domAct = testUtils.act;
const domAct = testUtils.act;

@@ -52,4 +49,4 @@ function getGlobalThis() {

function withGlobalActEnvironment(actImplementation) {
return function (callback) {
var previousActEnvironment = getIsReactActEnvironment();
return callback => {
const previousActEnvironment = getIsReactActEnvironment();
setIsReactActEnvironment(true);

@@ -59,5 +56,5 @@

// The return value of `act` is always a thenable.
var callbackNeedsToBeAwaited = false;
var actResult = actImplementation(function () {
var result = callback();
let callbackNeedsToBeAwaited = false;
const actResult = actImplementation(() => {
const result = callback();

@@ -72,9 +69,9 @@ if (result !== null && typeof result === 'object' && typeof result.then === 'function') {

if (callbackNeedsToBeAwaited) {
var thenable = actResult;
const thenable = actResult;
return {
then: function then(resolve, reject) {
thenable.then(function (returnValue) {
then: (resolve, reject) => {
thenable.then(returnValue => {
setIsReactActEnvironment(previousActEnvironment);
resolve(returnValue);
}, function (error) {
}, error => {
setIsReactActEnvironment(previousActEnvironment);

@@ -98,3 +95,3 @@ reject(error);

var act = withGlobalActEnvironment(domAct);
const act = withGlobalActEnvironment(domAct);
/* eslint no-console:0 */

@@ -106,9 +103,9 @@

var fireEvent = function fireEvent() {
return fireEvent$1.apply(void 0, arguments);
const fireEvent = function () {
return fireEvent$1(...arguments);
};
Object.keys(fireEvent$1).forEach(function (key) {
Object.keys(fireEvent$1).forEach(key => {
fireEvent[key] = function () {
return fireEvent$1[key].apply(fireEvent$1, arguments);
return fireEvent$1[key](...arguments);
};

@@ -119,31 +116,31 @@ }); // React event system tracks native mouseOver/mouseOut events for

var mouseEnter = fireEvent.mouseEnter;
var mouseLeave = fireEvent.mouseLeave;
const mouseEnter = fireEvent.mouseEnter;
const mouseLeave = fireEvent.mouseLeave;
fireEvent.mouseEnter = function () {
mouseEnter.apply(void 0, arguments);
return fireEvent.mouseOver.apply(fireEvent, arguments);
mouseEnter(...arguments);
return fireEvent.mouseOver(...arguments);
};
fireEvent.mouseLeave = function () {
mouseLeave.apply(void 0, arguments);
return fireEvent.mouseOut.apply(fireEvent, arguments);
mouseLeave(...arguments);
return fireEvent.mouseOut(...arguments);
};
var pointerEnter = fireEvent.pointerEnter;
var pointerLeave = fireEvent.pointerLeave;
const pointerEnter = fireEvent.pointerEnter;
const pointerLeave = fireEvent.pointerLeave;
fireEvent.pointerEnter = function () {
pointerEnter.apply(void 0, arguments);
return fireEvent.pointerOver.apply(fireEvent, arguments);
pointerEnter(...arguments);
return fireEvent.pointerOver(...arguments);
};
fireEvent.pointerLeave = function () {
pointerLeave.apply(void 0, arguments);
return fireEvent.pointerOut.apply(fireEvent, arguments);
pointerLeave(...arguments);
return fireEvent.pointerOut(...arguments);
};
var select = fireEvent.select;
const select = fireEvent.select;
fireEvent.select = function (node, init) {
fireEvent.select = (node, init) => {
select(node, init); // React tracks this event only on focused inputs

@@ -166,17 +163,17 @@

var blur = fireEvent.blur;
var focus = fireEvent.focus;
const blur = fireEvent.blur;
const focus = fireEvent.focus;
fireEvent.blur = function () {
fireEvent.focusOut.apply(fireEvent, arguments);
return blur.apply(void 0, arguments);
fireEvent.focusOut(...arguments);
return blur(...arguments);
};
fireEvent.focus = function () {
fireEvent.focusIn.apply(fireEvent, arguments);
return focus.apply(void 0, arguments);
fireEvent.focusIn(...arguments);
return focus(...arguments);
};
configure({
unstable_advanceTimersWrapper: function unstable_advanceTimersWrapper(cb) {
unstable_advanceTimersWrapper: cb => {
return act(cb);

@@ -187,40 +184,15 @@ },

// Let's just hope nobody else is using it.
asyncWrapper: function () {
var _asyncWrapper = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(cb) {
var previousActEnvironment;
return _regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
previousActEnvironment = getIsReactActEnvironment();
setIsReactActEnvironment(false);
_context.prev = 2;
_context.next = 5;
return cb();
asyncWrapper: async cb => {
const previousActEnvironment = getIsReactActEnvironment();
setIsReactActEnvironment(false);
case 5:
return _context.abrupt("return", _context.sent);
case 6:
_context.prev = 6;
setIsReactActEnvironment(previousActEnvironment);
return _context.finish(6);
case 9:
case "end":
return _context.stop();
}
}
}, _callee, null, [[2,, 6, 9]]);
}));
function asyncWrapper(_x) {
return _asyncWrapper.apply(this, arguments);
try {
return await cb();
} finally {
setIsReactActEnvironment(previousActEnvironment);
}
return asyncWrapper;
}(),
eventWrapper: function eventWrapper(cb) {
var result;
act(function () {
},
eventWrapper: cb => {
let result;
act(() => {
result = cb();

@@ -237,3 +209,3 @@ });

var mountedContainers = new Set();
const mountedContainers = new Set();
/**

@@ -243,12 +215,14 @@ * @type Array<{container: import('react-dom').Container, root: ReturnType<typeof createConcurrentRoot>}>

var mountedRootEntries = [];
const mountedRootEntries = [];
function createConcurrentRoot(container, _ref) {
var _hydrate = _ref.hydrate,
ui = _ref.ui,
WrapperComponent = _ref.wrapper;
var root;
let {
hydrate,
ui,
wrapper: WrapperComponent
} = _ref;
let root;
if (_hydrate) {
act(function () {
if (hydrate) {
act(() => {
root = ReactDOMClient.hydrateRoot(container, WrapperComponent ? /*#__PURE__*/React.createElement(WrapperComponent, null, ui) : ui);

@@ -261,5 +235,5 @@ });

return {
hydrate: function hydrate() {
hydrate() {
/* istanbul ignore if */
if (!_hydrate) {
if (!hydrate) {
throw new Error('Attempted to hydrate a non-hydrateable root. This is a bug in `@testing-library/react`.');

@@ -269,8 +243,11 @@ } // Nothing to do since hydration happens when creating the root object.

},
render: function render(element) {
render(element) {
root.render(element);
},
unmount: function unmount() {
unmount() {
root.unmount();
}
};

@@ -281,11 +258,14 @@ }

return {
hydrate: function hydrate(element) {
hydrate(element) {
ReactDOM.hydrate(element, container);
},
render: function render(element) {
render(element) {
ReactDOM.render(element, container);
},
unmount: function unmount() {
unmount() {
ReactDOM.unmountComponentAtNode(container);
}
};

@@ -295,14 +275,14 @@ }

function renderRoot(ui, _ref2) {
var baseElement = _ref2.baseElement,
container = _ref2.container,
hydrate = _ref2.hydrate,
queries = _ref2.queries,
root = _ref2.root,
WrapperComponent = _ref2.wrapper;
let {
baseElement,
container,
hydrate,
queries,
root,
wrapper: WrapperComponent
} = _ref2;
var wrapUiIfNeeded = function wrapUiIfNeeded(innerElement) {
return WrapperComponent ? /*#__PURE__*/React.createElement(WrapperComponent, null, innerElement) : innerElement;
};
const wrapUiIfNeeded = innerElement => WrapperComponent ? /*#__PURE__*/React.createElement(WrapperComponent, null, innerElement) : innerElement;
act(function () {
act(() => {
if (hydrate) {

@@ -314,6 +294,6 @@ root.hydrate(wrapUiIfNeeded(ui), container);

});
return _extends({
container: container,
baseElement: baseElement,
debug: function debug(el, maxLength, options) {
return {
container,
baseElement,
debug: function (el, maxLength, options) {
if (el === void 0) {

@@ -324,21 +304,19 @@ el = baseElement;

return Array.isArray(el) ? // eslint-disable-next-line no-console
el.forEach(function (e) {
return console.log(prettyDOM(e, maxLength, options));
}) : // eslint-disable-next-line no-console,
el.forEach(e => console.log(prettyDOM(e, maxLength, options))) : // eslint-disable-next-line no-console,
console.log(prettyDOM(el, maxLength, options));
},
unmount: function unmount() {
act(function () {
unmount: () => {
act(() => {
root.unmount();
});
},
rerender: function rerender(rerenderUi) {
rerender: rerenderUi => {
renderRoot(wrapUiIfNeeded(rerenderUi), {
container: container,
baseElement: baseElement,
root: root
container,
baseElement,
root
}); // Intentionally do not return anything to avoid unnecessarily complicating the API.
// folks can use all the same utilities we return in the first place that are bound to the container
},
asFragment: function asFragment() {
asFragment: () => {
/* istanbul ignore else (old jsdom limitation) */

@@ -348,21 +326,20 @@ if (typeof document.createRange === 'function') {

} else {
var template = document.createElement('template');
const template = document.createElement('template');
template.innerHTML = container.innerHTML;
return template.content;
}
}
}, getQueriesForElement(baseElement, queries));
},
...getQueriesForElement(baseElement, queries)
};
}
function render(ui, _temp) {
var _ref3 = _temp === void 0 ? {} : _temp,
container = _ref3.container,
_ref3$baseElement = _ref3.baseElement,
baseElement = _ref3$baseElement === void 0 ? container : _ref3$baseElement,
_ref3$legacyRoot = _ref3.legacyRoot,
legacyRoot = _ref3$legacyRoot === void 0 ? false : _ref3$legacyRoot,
queries = _ref3.queries,
_ref3$hydrate = _ref3.hydrate,
hydrate = _ref3$hydrate === void 0 ? false : _ref3$hydrate,
wrapper = _ref3.wrapper;
let {
container,
baseElement = container,
legacyRoot = false,
queries,
hydrate = false,
wrapper
} = _temp === void 0 ? {} : _temp;

@@ -379,14 +356,14 @@ if (!baseElement) {

var root; // eslint-disable-next-line no-negated-condition -- we want to map the evolution of this over time. The root is created first. Only later is it re-used so we don't want to read the case that happens later first.
let root; // eslint-disable-next-line no-negated-condition -- we want to map the evolution of this over time. The root is created first. Only later is it re-used so we don't want to read the case that happens later first.
if (!mountedContainers.has(container)) {
var createRootImpl = legacyRoot ? createLegacyRoot : createConcurrentRoot;
const createRootImpl = legacyRoot ? createLegacyRoot : createConcurrentRoot;
root = createRootImpl(container, {
hydrate: hydrate,
ui: ui,
wrapper: wrapper
hydrate,
ui,
wrapper
});
mountedRootEntries.push({
container: container,
root: root
container,
root
}); // we'll add it to the mounted containers regardless of whether it's actually

@@ -398,3 +375,3 @@ // added to document.body so the cleanup method works regardless of whether

} else {
mountedRootEntries.forEach(function (rootEntry) {
mountedRootEntries.forEach(rootEntry => {
// Else is unreachable since `mountedContainers` has the `container`.

@@ -411,8 +388,8 @@ // Only reachable if one would accidentally add the container to `mountedContainers` but not the root to `mountedRootEntries`

return renderRoot(ui, {
container: container,
baseElement: baseElement,
queries: queries,
hydrate: hydrate,
wrapper: wrapper,
root: root
container,
baseElement,
queries,
hydrate,
wrapper,
root
});

@@ -422,6 +399,8 @@ }

function cleanup() {
mountedRootEntries.forEach(function (_ref4) {
var root = _ref4.root,
container = _ref4.container;
act(function () {
mountedRootEntries.forEach(_ref3 => {
let {
root,
container
} = _ref3;
act(() => {
root.unmount();

@@ -443,11 +422,14 @@ });

var _options = options,
initialProps = _options.initialProps,
wrapper = _options.wrapper;
var result = /*#__PURE__*/React.createRef();
const {
initialProps,
...renderOptions
} = options;
const result = /*#__PURE__*/React.createRef();
function TestComponent(_ref5) {
var renderCallbackProps = _ref5.renderCallbackProps;
var pendingResult = renderCallback(renderCallbackProps);
React.useEffect(function () {
function TestComponent(_ref4) {
let {
renderCallbackProps
} = _ref4;
const pendingResult = renderCallback(renderCallbackProps);
React.useEffect(() => {
result.current = pendingResult;

@@ -458,9 +440,8 @@ });

var _render = render( /*#__PURE__*/React.createElement(TestComponent, {
const {
rerender: baseRerender,
unmount
} = render( /*#__PURE__*/React.createElement(TestComponent, {
renderCallbackProps: initialProps
}), {
wrapper: wrapper
}),
baseRerender = _render.rerender,
unmount = _render.unmount;
}), renderOptions);

@@ -474,5 +455,5 @@ function rerender(rerenderCallbackProps) {

return {
result: result,
rerender: rerender,
unmount: unmount
result,
rerender,
unmount
};

@@ -479,0 +460,0 @@ } // just re-export everything from dom-testing-library

@@ -276,3 +276,3 @@ "use strict";

initialProps,
wrapper
...renderOptions
} = options;

@@ -296,5 +296,3 @@ const result = /*#__PURE__*/React.createRef();

renderCallbackProps: initialProps
}), {
wrapper
});
}), renderOptions);

@@ -301,0 +299,0 @@ function rerender(rerenderCallbackProps) {

{
"name": "@testing-library/react",
"version": "13.3.0",
"version": "13.4.0",
"description": "Simple and complete React DOM testing utilities that encourage good testing practices.",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

@@ -123,3 +123,8 @@ // TypeScript Version: 3.8

export interface RenderHookOptions<Props> {
export interface RenderHookOptions<
Props,
Q extends Queries = typeof queries,
Container extends Element | DocumentFragment = HTMLElement,
BaseElement extends Element | DocumentFragment = Container,
> extends RenderOptions<Q, Container, BaseElement> {
/**

@@ -130,9 +135,2 @@ * The argument passed to the renderHook callback. Can be useful if you plan

initialProps?: Props
/**
* Pass a React Component as the wrapper option to have it rendered around the inner element. This is most useful for creating
* reusable custom render functions for common data providers. See setup for examples.
*
* @see https://testing-library.com/docs/react-testing-library/api/#wrapper
*/
wrapper?: React.JSXElementConstructor<{children: React.ReactElement}>
}

@@ -144,5 +142,11 @@

*/
export function renderHook<Result, Props>(
export function renderHook<
Result,
Props,
Q extends Queries = typeof queries,
Container extends Element | DocumentFragment = HTMLElement,
BaseElement extends Element | DocumentFragment = Container,
>(
render: (initialProps: Props) => Result,
options?: RenderHookOptions<Props>,
options?: RenderHookOptions<Props, Q, Container, BaseElement>,
): RenderHookResult<Result, Props>

@@ -149,0 +153,0 @@

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc