1234567891011121314151617181920212223242526272829303132333435363738 |
- import {renderOnDomReady} from 'sentry/bootstrap/renderOnDomReady';
- describe('renderOnDomReady', function () {
- it('immediately runs callback if `document.readyState` is not loading', function () {
- const cb = jest.fn();
- renderOnDomReady(cb);
- expect(cb).toHaveBeenCalledTimes(1);
- });
- it('runs callbacks after `DOMContentLoaded` is fired', function () {
- const cb = jest.fn();
- const cb2 = jest.fn();
- Object.defineProperty(document, 'readyState', {
- configurable: true,
- get() {
- return 'loading';
- },
- });
- renderOnDomReady(cb);
- renderOnDomReady(cb2);
- expect(cb).toHaveBeenCalledTimes(0);
- // Dispatch `DOMContentLoaded` event
- const event = document.createEvent('Event');
- event.initEvent('DOMContentLoaded', true, true);
- document.dispatchEvent(event);
- expect(cb).toHaveBeenCalledTimes(1);
- expect(cb2).toHaveBeenCalledTimes(1);
- // Reset `readyState`
- Object.defineProperty(document, 'readyState', {
- get() {
- return 'complete';
- },
- });
- });
- });
|