|  | 
| 1 | 1 | import ReactDOM from 'react-dom' | 
| 2 |  | -import {Simulate} from 'react-dom/test-utils' | 
| 3 |  | -import {getQueriesForElement, prettyDOM} from 'dom-testing-library' | 
|  | 2 | +import {getQueriesForElement, prettyDOM, fireEvent} from 'dom-testing-library' | 
| 4 | 3 | 
 | 
| 5 | 4 | const mountedContainers = new Set() | 
| 6 | 5 | 
 | 
| @@ -59,14 +58,29 @@ function cleanupAtContainer(container) { | 
| 59 | 58 |   mountedContainers.delete(container) | 
| 60 | 59 | } | 
| 61 | 60 | 
 | 
| 62 |  | -// fallback to synthetic events for React events that the DOM doesn't support | 
| 63 |  | -const syntheticEvents = ['select', 'mouseEnter', 'mouseLeave'] | 
| 64 |  | -syntheticEvents.forEach(eventName => { | 
| 65 |  | -  document.addEventListener(eventName.toLowerCase(), e => { | 
| 66 |  | -    Simulate[eventName](e.target, e) | 
| 67 |  | -  }) | 
| 68 |  | -}) | 
|  | 61 | +// React event system tracks native mouseOver/mouseOut events for | 
|  | 62 | +// running onMouseEnter/onMouseLeave handlers | 
|  | 63 | +// @link https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/events/EnterLeaveEventPlugin.js#L24-L31 | 
|  | 64 | +fireEvent.mouseEnter = fireEvent.mouseOver | 
|  | 65 | +fireEvent.mouseLeave = fireEvent.mouseOut | 
|  | 66 | + | 
|  | 67 | +fireEvent.select = (node, init) => { | 
|  | 68 | +  // React tracks this event only on focused inputs | 
|  | 69 | +  node.focus() | 
|  | 70 | + | 
|  | 71 | +  // React creates this event when one of the following native events happens | 
|  | 72 | +  // - contextMenu | 
|  | 73 | +  // - mouseUp | 
|  | 74 | +  // - dragEnd | 
|  | 75 | +  // - keyUp | 
|  | 76 | +  // - keyDown | 
|  | 77 | +  // so we can use any here | 
|  | 78 | +  // @link https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/events/SelectEventPlugin.js#L203-L224 | 
|  | 79 | +  fireEvent.keyUp(node, init) | 
|  | 80 | +} | 
| 69 | 81 | 
 | 
| 70 | 82 | // just re-export everything from dom-testing-library | 
| 71 | 83 | export * from 'dom-testing-library' | 
| 72 | 84 | export {render, cleanup} | 
|  | 85 | + | 
|  | 86 | +/* eslint func-name-matching:0 */ | 
0 commit comments