1010'use strict' ;
1111
1212let React ;
13- let ReactDOM ;
13+ let ReactDOMClient ;
14+ let act ;
1415
1516describe ( 'SyntheticMouseEvent' , ( ) => {
1617 let container ;
1718
1819 beforeEach ( ( ) => {
1920 jest . resetModules ( ) ;
2021 React = require ( 'react' ) ;
21- ReactDOM = require ( 'react-dom' ) ;
22+ ReactDOMClient = require ( 'react-dom/client' ) ;
23+ act = require ( 'internal-test-utils' ) . act ;
2224
2325 // The container has to be attached for events to fire.
2426 container = document . createElement ( 'div' ) ;
@@ -30,7 +32,7 @@ describe('SyntheticMouseEvent', () => {
3032 container = null ;
3133 } ) ;
3234
33- it ( 'should only use values from movementX/Y when event type is mousemove' , ( ) => {
35+ it ( 'should only use values from movementX/Y when event type is mousemove' , async ( ) => {
3436 const events = [ ] ;
3537 const onMouseMove = event => {
3638 events . push ( event . movementX ) ;
@@ -40,10 +42,11 @@ describe('SyntheticMouseEvent', () => {
4042 events . push ( event . movementX ) ;
4143 } ;
4244
43- const node = ReactDOM . render (
44- < div onMouseMove = { onMouseMove } onMouseDown = { onMouseDown } /> ,
45- container ,
46- ) ;
45+ const root = ReactDOMClient . createRoot ( container ) ;
46+ await act ( ( ) => {
47+ root . render ( < div onMouseMove = { onMouseMove } onMouseDown = { onMouseDown } /> ) ;
48+ } ) ;
49+ const node = container . firstChild ;
4750
4851 let event = new MouseEvent ( 'mousemove' , {
4952 relatedTarget : null ,
@@ -52,7 +55,9 @@ describe('SyntheticMouseEvent', () => {
5255 screenY : 2 ,
5356 } ) ;
5457
55- node . dispatchEvent ( event ) ;
58+ await act ( ( ) => {
59+ node . dispatchEvent ( event ) ;
60+ } ) ;
5661
5762 event = new MouseEvent ( 'mousemove' , {
5863 relatedTarget : null ,
@@ -61,7 +66,9 @@ describe('SyntheticMouseEvent', () => {
6166 screenY : 8 ,
6267 } ) ;
6368
64- node . dispatchEvent ( event ) ;
69+ await act ( ( ) => {
70+ node . dispatchEvent ( event ) ;
71+ } ) ;
6572
6673 // Now trigger a mousedown event to see if movementX has changed back to 0
6774 event = new MouseEvent ( 'mousedown' , {
@@ -71,15 +78,17 @@ describe('SyntheticMouseEvent', () => {
7178 screenY : 65 ,
7279 } ) ;
7380
74- node . dispatchEvent ( event ) ;
81+ await act ( ( ) => {
82+ node . dispatchEvent ( event ) ;
83+ } ) ;
7584
7685 expect ( events . length ) . toBe ( 3 ) ;
7786 expect ( events [ 0 ] ) . toBe ( 0 ) ;
7887 expect ( events [ 1 ] ) . toBe ( 6 ) ;
7988 expect ( events [ 2 ] ) . toBe ( 0 ) ; // mousedown event should have movementX at 0
8089 } ) ;
8190
82- it ( 'should correctly calculate movementX/Y for capture phase' , ( ) => {
91+ it ( 'should correctly calculate movementX/Y for capture phase' , async ( ) => {
8392 const events = [ ] ;
8493 const onMouseMove = event => {
8594 events . push ( [ 'move' , false , event . movementX , event . movementY ] ) ;
@@ -94,15 +103,18 @@ describe('SyntheticMouseEvent', () => {
94103 events . push ( [ 'down' , true , event . movementX , event . movementY ] ) ;
95104 } ;
96105
97- const node = ReactDOM . render (
98- < div
99- onMouseMove = { onMouseMove }
100- onMouseMoveCapture = { onMouseMoveCapture }
101- onMouseDown = { onMouseDown }
102- onMouseDownCapture = { onMouseDownCapture }
103- /> ,
104- container ,
105- ) ;
106+ const root = ReactDOMClient . createRoot ( container ) ;
107+ await act ( ( ) => {
108+ root . render (
109+ < div
110+ onMouseMove = { onMouseMove }
111+ onMouseMoveCapture = { onMouseMoveCapture }
112+ onMouseDown = { onMouseDown }
113+ onMouseDownCapture = { onMouseDownCapture }
114+ /> ,
115+ ) ;
116+ } ) ;
117+ const node = container . firstChild ;
106118
107119 let event = new MouseEvent ( 'mousemove' , {
108120 relatedTarget : null ,
@@ -111,7 +123,9 @@ describe('SyntheticMouseEvent', () => {
111123 screenY : 2 ,
112124 } ) ;
113125
114- node . dispatchEvent ( event ) ;
126+ await act ( ( ) => {
127+ node . dispatchEvent ( event ) ;
128+ } ) ;
115129
116130 event = new MouseEvent ( 'mousemove' , {
117131 relatedTarget : null ,
@@ -120,7 +134,9 @@ describe('SyntheticMouseEvent', () => {
120134 screenY : 9 ,
121135 } ) ;
122136
123- node . dispatchEvent ( event ) ;
137+ await act ( ( ) => {
138+ node . dispatchEvent ( event ) ;
139+ } ) ;
124140
125141 // Now trigger a mousedown event to see if movementX has changed back to 0
126142 event = new MouseEvent ( 'mousedown' , {
@@ -130,7 +146,9 @@ describe('SyntheticMouseEvent', () => {
130146 screenY : 65 ,
131147 } ) ;
132148
133- node . dispatchEvent ( event ) ;
149+ await act ( ( ) => {
150+ node . dispatchEvent ( event ) ;
151+ } ) ;
134152
135153 expect ( events ) . toEqual ( [
136154 [ 'move' , true , 0 , 0 ] ,
0 commit comments