@@ -3,10 +3,10 @@ import ReactDOM from 'react-dom'
33import {
44 getQueriesForElement ,
55 prettyDOM ,
6- fireEvent as dtlFireEvent ,
76 configure as configureDTL ,
87} from '@testing-library/dom'
98import act , { asyncAct } from './act-compat'
9+ import { fireEvent } from './fire-event'
1010import flush from './flush-microtasks'
1111
1212configureDTL ( {
@@ -17,6 +17,13 @@ configureDTL({
1717 } )
1818 return result
1919 } ,
20+ eventWrapper : cb => {
21+ let result
22+ act ( ( ) => {
23+ result = cb ( )
24+ } )
25+ return result
26+ } ,
2027} )
2128
2229const mountedContainers = new Set ( )
@@ -104,63 +111,9 @@ function cleanupAtContainer(container) {
104111 mountedContainers . delete ( container )
105112}
106113
107- // react-testing-library's version of fireEvent will call
108- // dom-testing-library's version of fireEvent wrapped inside
109- // an "act" call so that after all event callbacks have been
110- // called, the resulting useEffect callbacks will also be
111- // called.
112- function fireEvent ( ...args ) {
113- let returnValue
114- act ( ( ) => {
115- returnValue = dtlFireEvent ( ...args )
116- } )
117- return returnValue
118- }
119-
120- Object . keys ( dtlFireEvent ) . forEach ( key => {
121- fireEvent [ key ] = ( ...args ) => {
122- let returnValue
123- act ( ( ) => {
124- returnValue = dtlFireEvent [ key ] ( ...args )
125- } )
126- return returnValue
127- }
128- } )
129-
130- // React event system tracks native mouseOver/mouseOut events for
131- // running onMouseEnter/onMouseLeave handlers
132- // @link https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/events/EnterLeaveEventPlugin.js#L24-L31
133- const mouseEnter = fireEvent . mouseEnter
134- const mouseLeave = fireEvent . mouseLeave
135- fireEvent . mouseEnter = ( ...args ) => {
136- mouseEnter ( ...args )
137- return fireEvent . mouseOver ( ...args )
138- }
139- fireEvent . mouseLeave = ( ...args ) => {
140- mouseLeave ( ...args )
141- return fireEvent . mouseOut ( ...args )
142- }
143-
144- const select = fireEvent . select
145- fireEvent . select = ( node , init ) => {
146- select ( node , init )
147- // React tracks this event only on focused inputs
148- node . focus ( )
149-
150- // React creates this event when one of the following native events happens
151- // - contextMenu
152- // - mouseUp
153- // - dragEnd
154- // - keyUp
155- // - keyDown
156- // so we can use any here
157- // @link https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/events/SelectEventPlugin.js#L203-L224
158- fireEvent . keyUp ( node , init )
159- }
160-
161114// just re-export everything from dom-testing-library
162115export * from '@testing-library/dom'
163- export { render , cleanup , fireEvent , act }
116+ export { render , cleanup , act , fireEvent }
164117
165118// NOTE: we're not going to export asyncAct because that's our own compatibility
166119// thing for people using react-dom@16.8.0. Anyone else doesn't need it and
0 commit comments