UNPKG

reshow-unit

Version:
182 lines (172 loc) 6.11 kB
"use strict"; var _interopRequireWildcard = require("reshow-runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("reshow-runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.simulateEvent = exports.screen = exports.render = exports.getRoleHtml = exports.cleanIt = exports.act = void 0; var _objectSpread2 = _interopRequireDefault(require("reshow-runtime/helpers/objectSpread2")); var _regeneratorRuntime2 = _interopRequireDefault(require("reshow-runtime/helpers/regeneratorRuntime")); var _asyncToGenerator2 = _interopRequireDefault(require("reshow-runtime/helpers/asyncToGenerator")); var _react = _interopRequireWildcard(require("react")); var React = _react; var _reshowUnitDom = require("reshow-unit-dom"); exports.jsdom = _reshowUnitDom.jsdom; exports.hideConsoleError = _reshowUnitDom.hideConsoleError; exports.getSinon = _reshowUnitDom.getSinon; exports.sleep = _reshowUnitDom.sleep; var _winDoc = require("win-doc"); var _getRandomId = require("get-random-id"); var _getObjectValue = require("get-object-value"); var _dom = require("@testing-library/dom"); exports.waitFor = _dom.waitFor; exports.waitForElementToBeRemoved = _dom.waitForElementToBeRemoved; var _react2 = require("@testing-library/react"); var _userEvent = _interopRequireDefault(require("@testing-library/user-event")); var _process = require("process"); var _reshowBuild = _interopRequireDefault(require("reshow-build")); //@ts-check var envStrictMode = /** @type string*/_process.env.STRICT_MODE; var STRICT_MODE = -1 !== "|true|false|null|0|".indexOf(envStrictMode) ? JSON.parse(envStrictMode) : envStrictMode; if (STRICT_MODE) { console.log("STRICT_MODE: on"); } /** * Fix!! * `The current testing environment is not configured to support act(…)` * * @see https://github.com/testing-library/react-testing-library/issues/1025 * @see https://reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html */ globalThis.IS_REACT_ACT_ENVIRONMENT = true; // https://testing-library.com/docs/queries/about/#screen var screen = exports.screen = function screen() { var _doc; return (0, _react2.getQueriesForElement)((_doc = (0, _winDoc.doc)()) === null || _doc === void 0 ? void 0 : _doc.body, _react2.queries); }; /** * @param {string} role * @returns {string} */ var getRoleHtml = exports.getRoleHtml = function getRoleHtml(role) { return screen().getByRole(role).outerHTML; }; /** * @param {Object} [props] */ var cleanIt = exports.cleanIt = function cleanIt(props) { var _ref = props || {}, withoutJsdom = _ref.withoutJsdom; if (!withoutJsdom) { (0, _reshowUnitDom.cleanIt)(props); } (0, _react2.cleanup)(); }; /** * @param {function} cb */ var act = exports.act = /*#__PURE__*/function () { var _ref2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee(cb, milliseconds, debug) { var start, timer; return (0, _regeneratorRuntime2["default"])().wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: if (cb === void 0) { cb = function cb() {}; } if (milliseconds === void 0) { milliseconds = 1; } if (debug === void 0) { debug = false; } start = (0, _getRandomId.getTimestamp)(); _context.next = 6; return (0, _react.act)(function () { return new Promise(function (resolve) { cb(); /** * @param {function} resolve */ var _wait = function wait(resolve) { var now = (0, _getRandomId.getTimestamp)(); debug && console.log({ during: now - start, debug: debug, start: start, now: now }); if (milliseconds + start > now) { clearTimeout(timer); timer = setTimeout(function () { return _wait(resolve); }, 1); } else { resolve(); } }; _wait(resolve); }); }); case 6: case "end": return _context.stop(); } }, _callee); })); return function act(_x, _x2, _x3) { return _ref2.apply(this, arguments); }; }(); /** * @typedef {Object} RenderResult * @property {function} html * @property {function} instance */ /** * rtl-render: https://github.com/testing-library/react-testing-library/blob/main/src/pure.js * * @param {React.ReactElement} OrigDom * @param {object} options * @returns {import("@testing-library/react").RenderResult & RenderResult} */ var render = exports.render = function render(OrigDom, options) { var _options; if (options === void 0) { options = {}; } var instance = (_options = options) === null || _options === void 0 ? void 0 : _options.instance; var Dom = OrigDom; var uInstance; if (instance) { if (true === instance) { /** * @param {React.ReactElement} el */ instance = function instance(el) { return uInstance = el; }; } Dom = /** @type React.ReactElement*/(0, _reshowBuild["default"])(OrigDom)({ ref: instance }); } if (STRICT_MODE) { Dom = /** @type React.ReactElement*/(0, _reshowBuild["default"])(_react.StrictMode)(undefined, Dom); } var result = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, (0, _react2.render)(Dom, options)), {}, { html: function html() { return result.container.innerHTML; }, instance: function instance() { return uInstance; } }); return result; }; // https://testing-library.com/docs/user-event/intro /** * @param {ConstructorParameters<any>} p */ var simulateEvent = exports.simulateEvent = function simulateEvent() { var _getDefault; return (_getDefault = (0, _getObjectValue.getDefault)(_userEvent["default"])).setup.apply(_getDefault, arguments); };