@@ -24,7 +24,7 @@ import Wedge from 'react-art/Wedge';
2424
2525// Isolate DOM renderer.
2626jest . resetModules ( ) ;
27- const ReactDOM = require ( 'react-dom' ) ;
27+
2828const ReactDOMClient = require ( 'react-dom/client' ) ;
2929const act = require ( 'internal-test-utils' ) . act ;
3030
@@ -178,11 +178,11 @@ describe('ReactART', () => {
178178 testDOMNodeStructure ( realNode , expectedStructure ) ;
179179 } ) ;
180180
181- it ( 'should be able to reorder components' , ( ) => {
182- const instance = ReactDOM . render (
183- < TestComponent flipped = { false } /> ,
184- container ,
185- ) ;
181+ it ( 'should be able to reorder components' , async ( ) => {
182+ const root = ReactDOMClient . createRoot ( container ) ;
183+ await act ( ( ) => {
184+ root . render ( < TestComponent flipped = { false } /> ) ;
185+ } ) ;
186186
187187 const expectedStructure = {
188188 nodeName : 'svg' ,
@@ -200,10 +200,12 @@ describe('ReactART', () => {
200200 ] ,
201201 } ;
202202
203- const realNode = ReactDOM . findDOMNode ( instance ) ;
203+ const realNode = container . firstChild ;
204204 testDOMNodeStructure ( realNode , expectedStructure ) ;
205205
206- ReactDOM . render ( < TestComponent flipped = { true } /> , container ) ;
206+ await act ( ( ) => {
207+ root . render ( < TestComponent flipped = { true } /> ) ;
208+ } ) ;
207209
208210 const expectedNewStructure = {
209211 nodeName : 'svg' ,
@@ -224,7 +226,7 @@ describe('ReactART', () => {
224226 testDOMNodeStructure ( realNode , expectedNewStructure ) ;
225227 } ) ;
226228
227- it ( 'should be able to reorder many components' , ( ) => {
229+ it ( 'should be able to reorder many components' , async ( ) => {
228230 class Component extends React . Component {
229231 render ( ) {
230232 const chars = this . props . chars . split ( '' ) ;
@@ -242,14 +244,17 @@ describe('ReactART', () => {
242244 const before = 'abcdefghijklmnopqrst' ;
243245 const after = 'mxhpgwfralkeoivcstzy' ;
244246
245- let instance = ReactDOM . render ( < Component chars = { before } /> , container ) ;
246- const realNode = ReactDOM . findDOMNode ( instance ) ;
247+ const root = ReactDOMClient . createRoot ( container ) ;
248+ await act ( ( ) => {
249+ root . render ( < Component chars = { before } /> ) ;
250+ } ) ;
251+ const realNode = container . firstChild ;
247252 expect ( realNode . textContent ) . toBe ( before ) ;
248253
249- instance = ReactDOM . render ( < Component chars = { after } /> , container ) ;
254+ await act ( ( ) => {
255+ root . render ( < Component chars = { after } /> ) ;
256+ } ) ;
250257 expect ( realNode . textContent ) . toBe ( after ) ;
251-
252- ReactDOM . unmountComponentAtNode ( container ) ;
253258 } ) ;
254259
255260 it ( 'renders composite with lifecycle inside group' , async ( ) => {
@@ -311,7 +316,7 @@ describe('ReactART', () => {
311316 expect ( ref . constructor ) . toBe ( CustomShape ) ;
312317 } ) ;
313318
314- it ( 'resolves refs before componentDidUpdate' , ( ) => {
319+ it ( 'resolves refs before componentDidUpdate' , async ( ) => {
315320 class CustomShape extends React . Component {
316321 render ( ) {
317322 return < Shape /> ;
@@ -341,24 +346,34 @@ describe('ReactART', () => {
341346 ) ;
342347 }
343348 }
344- ReactDOM . render ( < Outer /> , container ) ;
349+
350+ const root = ReactDOMClient . createRoot ( container ) ;
351+ await act ( ( ) => {
352+ root . render ( < Outer /> ) ;
353+ } ) ;
345354 expect ( ref ) . toBe ( null ) ;
346- ReactDOM . render ( < Outer mountCustomShape = { true } /> , container ) ;
355+
356+ await act ( ( ) => {
357+ root . render ( < Outer mountCustomShape = { true } /> ) ;
358+ } ) ;
347359 expect ( ref . constructor ) . toBe ( CustomShape ) ;
348360 } ) ;
349361
350- it ( 'adds and updates event handlers' , ( ) => {
351- function render ( onClick ) {
352- return ReactDOM . render (
353- < Surface >
354- < Shape onClick = { onClick } />
355- </ Surface > ,
356- container ,
357- ) ;
362+ it ( 'adds and updates event handlers' , async ( ) => {
363+ const root = ReactDOMClient . createRoot ( container ) ;
364+
365+ async function render ( onClick ) {
366+ await act ( ( ) => {
367+ root . render (
368+ < Surface >
369+ < Shape onClick = { onClick } />
370+ </ Surface > ,
371+ ) ;
372+ } ) ;
358373 }
359374
360375 function doClick ( instance ) {
361- const path = ReactDOM . findDOMNode ( instance ) . querySelector ( 'path' ) ;
376+ const path = container . firstChild . querySelector ( 'path' ) ;
362377
363378 path . dispatchEvent (
364379 new MouseEvent ( 'click' , {
@@ -368,12 +383,12 @@ describe('ReactART', () => {
368383 }
369384
370385 const onClick1 = jest . fn ( ) ;
371- let instance = render ( onClick1 ) ;
386+ let instance = await render ( onClick1 ) ;
372387 doClick ( instance ) ;
373388 expect ( onClick1 ) . toBeCalled ( ) ;
374389
375390 const onClick2 = jest . fn ( ) ;
376- instance = render ( onClick2 ) ;
391+ instance = await render ( onClick2 ) ;
377392 doClick ( instance ) ;
378393 expect ( onClick2 ) . toBeCalled ( ) ;
379394 } ) ;
@@ -412,15 +427,17 @@ describe('ReactART', () => {
412427
413428 await waitFor ( [ 'A' ] ) ;
414429
415- ReactDOM . render (
416- < Surface >
417- < LogCurrentRenderer />
418- < CurrentRendererContext . Provider value = "ART" >
430+ const root = ReactDOMClient . createRoot ( container ) ;
431+ await act ( ( ) => {
432+ root . render (
433+ < Surface >
419434 < LogCurrentRenderer />
420- </ CurrentRendererContext . Provider >
421- </ Surface > ,
422- container ,
423- ) ;
435+ < CurrentRendererContext . Provider value = "ART" >
436+ < LogCurrentRenderer />
437+ </ CurrentRendererContext . Provider >
438+ </ Surface > ,
439+ ) ;
440+ } ) ;
424441
425442 expect ( ops ) . toEqual ( [ null , 'ART' ] ) ;
426443
0 commit comments