@atlaskit/tooltip
Version:
A tooltip briefly describes an interactive element on mouse hover or keyboard focus.
49 lines (48 loc) • 1.78 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.waitForTooltipToHide = waitForTooltipToHide;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _flushPopoverExit = require("@atlaskit/top-layer/testing/flush-popover-exit");
/**
* Waits for a tooltip that has started hiding to finish hiding in jsdom.
*
* Requires React 18.3 or newer.
*
* With `platform-dst-top-layer-tooltip` on, the tooltip hides through a top-layer
* `Popover`, which jest fake timers alone cannot flush - see
* `@atlaskit/top-layer/testing/flush-popover-exit`, which this delegates to.
*
* Call this after the hide `delay` has been flushed.
*
* @example
* await user.unhover(trigger);
* // flush the hide delay
* act(() => {
* jest.runOnlyPendingTimers();
* });
* await waitForTooltipToHide();
* expect(screen.queryByTestId('tooltip')).not.toBeInTheDocument();
* expect(onHide).toHaveBeenCalledTimes(1);
*/
function waitForTooltipToHide() {
return _waitForTooltipToHide.apply(this, arguments);
}
function _waitForTooltipToHide() {
_waitForTooltipToHide = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
return _regenerator.default.wrap(function (_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_context.next = 1;
return (0, _flushPopoverExit.flushPopoverExit)();
case 1:
case "end":
return _context.stop();
}
}, _callee);
}));
return _waitForTooltipToHide.apply(this, arguments);
}