@@ -3,10 +3,10 @@ import ReactDOM from 'react-dom'
3
3
import {
4
4
getQueriesForElement ,
5
5
prettyDOM ,
6
- fireEvent as dtlFireEvent ,
7
6
configure as configureDTL ,
8
7
} from '@testing-library/dom'
9
8
import act , { asyncAct } from './act-compat'
9
+ import { fireEvent } from './fire-event'
10
10
import flush from './flush-microtasks'
11
11
12
12
configureDTL ( {
@@ -17,6 +17,13 @@ configureDTL({
17
17
} )
18
18
return result
19
19
} ,
20
+ eventWrapper : cb => {
21
+ let result
22
+ act ( ( ) => {
23
+ result = cb ( )
24
+ } )
25
+ return result
26
+ } ,
20
27
} )
21
28
22
29
const mountedContainers = new Set ( )
@@ -104,63 +111,9 @@ function cleanupAtContainer(container) {
104
111
mountedContainers . delete ( container )
105
112
}
106
113
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
-
161
114
// just re-export everything from dom-testing-library
162
115
export * from '@testing-library/dom'
163
- export { render , cleanup , fireEvent , act }
116
+ export { render , cleanup , act , fireEvent }
164
117
165
118
// NOTE: we're not going to export asyncAct because that's our own compatibility
166
119
// thing for people using [email protected] . Anyone else doesn't need it and
0 commit comments