@@ -13,7 +13,6 @@ import {createEventTarget, setPointerEvent} from 'dom-event-testing-library';
1313
1414let React ;
1515let ReactFeatureFlags ;
16- let ReactDOM ;
1716let ReactDOMClient ;
1817let useFocusWithin ;
1918let act ;
@@ -25,7 +24,6 @@ function initializeModules(hasPointerEvents) {
2524 ReactFeatureFlags . enableScopeAPI = true ;
2625 ReactFeatureFlags . enableCreateEventHandleAPI = true ;
2726 React = require ( 'react' ) ;
28- ReactDOM = require ( 'react-dom' ) ;
2927 ReactDOMClient = require ( 'react-dom/client' ) ;
3028 act = require ( 'internal-test-utils' ) . act ;
3129
@@ -42,17 +40,22 @@ const table = [[forcePointerEvents], [!forcePointerEvents]];
4240describe . each ( table ) ( `useFocus` , hasPointerEvents => {
4341 let container ;
4442 let container2 ;
43+ let root ;
4544
4645 beforeEach ( ( ) => {
4746 initializeModules ( hasPointerEvents ) ;
4847 container = document . createElement ( 'div' ) ;
4948 document . body . appendChild ( container ) ;
5049 container2 = document . createElement ( 'div' ) ;
5150 document . body . appendChild ( container2 ) ;
51+ root = ReactDOMClient . createRoot ( container ) ;
5252 } ) ;
5353
54- afterEach ( ( ) => {
55- ReactDOM . render ( null , container ) ;
54+ afterEach ( async ( ) => {
55+ await act ( ( ) => {
56+ root . render ( null ) ;
57+ } ) ;
58+
5659 document . body . removeChild ( container ) ;
5760 document . body . removeChild ( container2 ) ;
5861 container = null ;
@@ -75,7 +78,7 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
7578 return < div ref = { focusWithinRef } /> ;
7679 } ;
7780 await act ( ( ) => {
78- ReactDOM . render ( < Component /> , container ) ;
81+ root . render ( < Component /> ) ;
7982 } ) ;
8083 } ;
8184
@@ -111,7 +114,7 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
111114 innerRef = React . createRef ( ) ;
112115 innerRef2 = React . createRef ( ) ;
113116 await act ( ( ) => {
114- ReactDOM . render ( < Component show = { true } /> , container ) ;
117+ root . render ( < Component show = { true } /> ) ;
115118 } ) ;
116119 } ;
117120
@@ -188,7 +191,7 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
188191 innerRef = React . createRef ( ) ;
189192 innerRef2 = React . createRef ( ) ;
190193 await act ( ( ) => {
191- ReactDOM . render ( < Component show = { true } /> , container ) ;
194+ root . render ( < Component show = { true } /> ) ;
192195 } ) ;
193196 } ;
194197
@@ -314,7 +317,7 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
314317 ) ;
315318 } ;
316319 await act ( ( ) => {
317- ReactDOM . render ( < Component /> , container ) ;
320+ root . render ( < Component /> ) ;
318321 } ) ;
319322
320323 const target = createEventTarget ( inputRef . current ) ;
@@ -354,7 +357,7 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
354357 } ;
355358
356359 await act ( ( ) => {
357- ReactDOM . render ( < Component show = { true } /> , container ) ;
360+ root . render ( < Component show = { true } /> ) ;
358361 } ) ;
359362
360363 const inner = innerRef . current ;
@@ -363,7 +366,10 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
363366 target . focus ( ) ;
364367 expect ( onBeforeBlurWithin ) . toHaveBeenCalledTimes ( 0 ) ;
365368 expect ( onAfterBlurWithin ) . toHaveBeenCalledTimes ( 0 ) ;
366- ReactDOM . render ( < Component show = { false } /> , container ) ;
369+ await act ( ( ) => {
370+ root . render ( < Component show = { false } /> ) ;
371+ } ) ;
372+
367373 expect ( onBeforeBlurWithin ) . toHaveBeenCalledTimes ( 1 ) ;
368374 expect ( onAfterBlurWithin ) . toHaveBeenCalledTimes ( 1 ) ;
369375 expect ( onAfterBlurWithin ) . toHaveBeenCalledWith (
@@ -391,7 +397,7 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
391397 } ;
392398
393399 await act ( ( ) => {
394- ReactDOM . render ( < Component show = { true } /> , container ) ;
400+ root . render ( < Component show = { true } /> ) ;
395401 } ) ;
396402
397403 const inner = innerRef . current ;
@@ -400,7 +406,11 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
400406 target . focus ( ) ;
401407 expect ( onBeforeBlurWithin ) . toHaveBeenCalledTimes ( 0 ) ;
402408 expect ( onAfterBlurWithin ) . toHaveBeenCalledTimes ( 0 ) ;
403- ReactDOM . render ( < Component show = { false } /> , container ) ;
409+
410+ await act ( ( ) => {
411+ root . render ( < Component show = { false } /> ) ;
412+ } ) ;
413+
404414 expect ( onBeforeBlurWithin ) . toHaveBeenCalledTimes ( 1 ) ;
405415 expect ( onAfterBlurWithin ) . toHaveBeenCalledTimes ( 1 ) ;
406416 expect ( onAfterBlurWithin ) . toHaveBeenCalledWith (
@@ -433,13 +443,16 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
433443 } ;
434444
435445 await act ( ( ) => {
436- ReactDOM . render ( < Component show = { true } /> , container ) ;
446+ root . render ( < Component show = { true } /> ) ;
437447 } ) ;
438448
439449 inputRef . current . focus ( ) ;
440450 expect ( onBeforeBlurWithin ) . toHaveBeenCalledTimes ( 0 ) ;
441451 expect ( onAfterBlurWithin ) . toHaveBeenCalledTimes ( 0 ) ;
442- ReactDOM . render ( < Component show = { false } /> , container ) ;
452+ await act ( ( ) => {
453+ root . render ( < Component show = { false } /> ) ;
454+ } ) ;
455+
443456 expect ( onBeforeBlurWithin ) . toHaveBeenCalledTimes ( 1 ) ;
444457 expect ( onAfterBlurWithin ) . toHaveBeenCalledTimes ( 1 ) ;
445458 } ) ;
@@ -469,15 +482,15 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
469482 } ;
470483
471484 await act ( ( ) => {
472- ReactDOM . render ( < Component show = { true } /> , container ) ;
485+ root . render ( < Component show = { true } /> ) ;
473486 } ) ;
474487
475488 const inner = innerRef . current ;
476489 const target = createEventTarget ( inner ) ;
477490 target . keydown ( { key : 'Tab' } ) ;
478491 target . focus ( ) ;
479492 await act ( ( ) => {
480- ReactDOM . render ( < Component show = { false } /> , container ) ;
493+ root . render ( < Component show = { false } /> ) ;
481494 } ) ;
482495 expect ( targetNodes ) . toEqual ( [ targetNode ] ) ;
483496 } ) ;
@@ -512,10 +525,10 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
512525 ) ;
513526 } ;
514527
515- const root = ReactDOMClient . createRoot ( container2 ) ;
528+ const root2 = ReactDOMClient . createRoot ( container2 ) ;
516529
517530 await act ( ( ) => {
518- root . render ( < Component /> ) ;
531+ root2 . render ( < Component /> ) ;
519532 } ) ;
520533 expect ( container2 . innerHTML ) . toBe ( '<div><input></div>' ) ;
521534
@@ -528,14 +541,18 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
528541
529542 suspend = true ;
530543 await act ( ( ) => {
531- root . render ( < Component /> ) ;
544+ root2 . render ( < Component /> ) ;
532545 } ) ;
533546 expect ( container2 . innerHTML ) . toBe (
534547 '<div><input style="display: none;">Loading...</div>' ,
535548 ) ;
536549 expect ( onBeforeBlurWithin ) . toHaveBeenCalledTimes ( 1 ) ;
537550 expect ( onAfterBlurWithin ) . toHaveBeenCalledTimes ( 1 ) ;
538- resolve ( ) ;
551+ await act ( ( ) => {
552+ suspend = false ;
553+ resolve ( ) ;
554+ } ) ;
555+ expect ( container2 . innerHTML ) . toBe ( '<div><input style=""></div>' ) ;
539556 } ) ;
540557
541558 // @gate www
@@ -569,37 +586,41 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
569586 ) ;
570587 } ;
571588
572- const root = ReactDOMClient . createRoot ( container2 ) ;
589+ const root2 = ReactDOMClient . createRoot ( container2 ) ;
573590
574591 await act ( ( ) => {
575- root . render ( < Component /> ) ;
592+ root2 . render ( < Component /> ) ;
576593 } ) ;
577594
578595 expect ( onBeforeBlurWithin ) . toHaveBeenCalledTimes ( 0 ) ;
579596 expect ( onAfterBlurWithin ) . toHaveBeenCalledTimes ( 0 ) ;
580597
581598 suspend = true ;
582599 await act ( ( ) => {
583- root . render ( < Component /> ) ;
600+ root2 . render ( < Component /> ) ;
584601 } ) ;
585602 expect ( onBeforeBlurWithin ) . toHaveBeenCalledTimes ( 0 ) ;
586603 expect ( onAfterBlurWithin ) . toHaveBeenCalledTimes ( 0 ) ;
587604
588605 await act ( ( ) => {
589- root . render ( < Component /> ) ;
606+ root2 . render ( < Component /> ) ;
590607 } ) ;
591608 expect ( onBeforeBlurWithin ) . toHaveBeenCalledTimes ( 0 ) ;
592609 expect ( onAfterBlurWithin ) . toHaveBeenCalledTimes ( 0 ) ;
593610
594611 buttonRef . current . focus ( ) ;
595612 suspend = false ;
596613 await act ( ( ) => {
597- root . render ( < Component /> ) ;
614+ root2 . render ( < Component /> ) ;
598615 } ) ;
599616 expect ( onBeforeBlurWithin ) . toHaveBeenCalledTimes ( 1 ) ;
600617 expect ( onAfterBlurWithin ) . toHaveBeenCalledTimes ( 1 ) ;
601618
602- resolve ( ) ;
619+ await act ( ( ) => {
620+ suspend = false ;
621+ resolve ( ) ;
622+ } ) ;
623+ expect ( container2 . innerHTML ) . toBe ( '<div><input style=""></div>' ) ;
603624 } ) ;
604625 } ) ;
605626} ) ;
0 commit comments