11/* eslint-disable @typescript-eslint/no-use-before-define */
22import { jest , describe , test , expect } from '@jest/globals'
3- import { createRenderStream } from '@testing-library/react-render-stream'
4- //import {userEvent} from '@testing-library/user-event'
3+ import {
4+ createRenderStream ,
5+ userEventWithoutAct ,
6+ } from '@testing-library/react-render-stream'
7+ import { userEvent as baseUserEvent } from '@testing-library/user-event'
58import * as React from 'react'
69import { ErrorBoundary } from 'react-error-boundary'
710import { getExpectErrorMessage } from '../../__testHelpers__/getCleanedErrorMessage.js'
811
9- // @ts -expect-error this is not defined anywhere
10- globalThis . IS_REACT_ACT_ENVIRONMENT = false
11-
12- async function click ( element : HTMLElement ) {
13- const opts = { bubbles : true , cancelable : true , buttons : 1 }
14- element . dispatchEvent ( new Event ( 'mousedown' , opts ) )
15- await new Promise ( r => setTimeout ( r , 50 ) )
16- element . dispatchEvent ( new Event ( 'mouseup' , opts ) )
17- element . dispatchEvent ( new Event ( 'click' , opts ) )
18- }
12+ const userEvent = userEventWithoutAct ( baseUserEvent )
1913
2014function CounterForm ( {
2115 value,
@@ -49,15 +43,15 @@ describe('snapshotDOM', () => {
4943 const { takeRender, render} = createRenderStream ( {
5044 snapshotDOM : true ,
5145 } )
52- const utils = render ( < Counter /> )
46+ const utils = await render ( < Counter /> )
47+ const incrementButton = utils . getByText ( 'Increment' )
48+ await userEvent . click ( incrementButton )
49+ await userEvent . click ( incrementButton )
5350 {
5451 const { withinDOM} = await takeRender ( )
5552 const input = withinDOM ( ) . getByLabelText < HTMLInputElement > ( 'Value' )
5653 expect ( input . value ) . toBe ( '0' )
5754 }
58- const incrementButton = utils . getByText ( 'Increment' ) as HTMLElement // TODO
59- await click ( incrementButton )
60- await click ( incrementButton )
6155 {
6256 const { withinDOM} = await takeRender ( )
6357 // a one-off to test that `queryBy` works and accepts a type argument
@@ -82,12 +76,12 @@ describe('snapshotDOM', () => {
8276 const { takeRender, render} = createRenderStream ( {
8377 snapshotDOM : true ,
8478 } )
85- render ( < Counter /> )
79+ await render ( < Counter /> )
8680 {
8781 const { withinDOM} = await takeRender ( )
8882 const snapshotIncrementButton = withinDOM ( ) . getByText ( 'Increment' )
8983 try {
90- await click ( snapshotIncrementButton )
84+ await userEvent . click ( snapshotIncrementButton )
9185 } catch ( error ) {
9286 expect ( error ) . toMatchInlineSnapshot ( `
9387[Error: Uncaught [Error:
@@ -114,7 +108,7 @@ describe('snapshotDOM', () => {
114108 snapshotDOM : true ,
115109 queries,
116110 } )
117- render ( < Component /> )
111+ await render ( < Component /> )
118112
119113 const { withinDOM} = await takeRender ( )
120114 expect ( withinDOM ( ) . foo ( ) ) . toBe ( null )
@@ -140,14 +134,14 @@ describe('replaceSnapshot', () => {
140134 const { takeRender, replaceSnapshot, render} = createRenderStream < {
141135 value : number
142136 } > ( )
143- const utils = render ( < Counter /> )
137+ const utils = await render ( < Counter /> )
138+ const incrementButton = utils . getByText ( 'Increment' )
139+ await userEvent . click ( incrementButton )
140+ await userEvent . click ( incrementButton )
144141 {
145142 const { snapshot} = await takeRender ( )
146143 expect ( snapshot ) . toEqual ( { value : 0 } )
147144 }
148- const incrementButton = utils . getByText ( 'Increment' ) as HTMLElement // TODO
149- await click ( incrementButton )
150- await click ( incrementButton )
151145 {
152146 const { snapshot} = await takeRender ( )
153147 expect ( snapshot ) . toEqual ( { value : 1 } )
@@ -170,15 +164,14 @@ describe('replaceSnapshot', () => {
170164 const { takeRender, replaceSnapshot, render} = createRenderStream ( {
171165 initialSnapshot : { unrelatedValue : 'unrelated' , value : - 1 } ,
172166 } )
173- const utils = render ( < Counter /> )
167+ const utils = await render ( < Counter /> )
168+ const incrementButton = utils . getByText ( 'Increment' )
169+ await userEvent . click ( incrementButton )
170+ await userEvent . click ( incrementButton )
174171 {
175172 const { snapshot} = await takeRender ( )
176173 expect ( snapshot ) . toEqual ( { unrelatedValue : 'unrelated' , value : 0 } )
177174 }
178-
179- const incrementButton = utils . getByText ( 'Increment' ) as HTMLElement // TODO
180- await click ( incrementButton )
181- await click ( incrementButton )
182175 {
183176 const { snapshot} = await takeRender ( )
184177 expect ( snapshot ) . toEqual ( { unrelatedValue : 'unrelated' , value : 1 } )
@@ -204,7 +197,7 @@ describe('replaceSnapshot', () => {
204197
205198 const spy = jest . spyOn ( console , 'error' )
206199 spy . mockImplementation ( ( ) => { } )
207- render (
200+ await render (
208201 < ErrorBoundary
209202 fallbackRender = { ( { error} ) => {
210203 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
@@ -215,8 +208,6 @@ describe('replaceSnapshot', () => {
215208 < Counter />
216209 </ ErrorBoundary > ,
217210 )
218- await new Promise ( r => setTimeout ( r , 10 ) )
219-
220211 spy . mockRestore ( )
221212
222213 expect ( caughtError ! ) . toMatchInlineSnapshot (
@@ -244,12 +235,11 @@ describe('onRender', () => {
244235 expect ( info . count ) . toBe ( info . snapshot . value + 1 )
245236 } ,
246237 } )
247- const utils = render ( < Counter /> )
238+ const utils = await render ( < Counter /> )
239+ const incrementButton = utils . getByText ( 'Increment' )
240+ await userEvent . click ( incrementButton )
241+ await userEvent . click ( incrementButton )
248242 await takeRender ( )
249-
250- const incrementButton = utils . getByText ( 'Increment' ) as HTMLElement // TODO
251- await click ( incrementButton )
252- await click ( incrementButton )
253243 await takeRender ( )
254244 await takeRender ( )
255245 } )
@@ -268,11 +258,11 @@ describe('onRender', () => {
268258 } ,
269259 } )
270260
271- const utils = render ( < Counter /> )
261+ const utils = await render ( < Counter /> )
262+ const incrementButton = utils . getByText ( 'Increment' )
263+ await userEvent . click ( incrementButton )
264+ await userEvent . click ( incrementButton )
272265 await takeRender ( )
273- const incrementButton = utils . getByText ( 'Increment' ) as HTMLElement // TODO
274- await click ( incrementButton )
275- await click ( incrementButton )
276266 const error = await getExpectErrorMessage ( takeRender ( ) )
277267
278268 expect ( error ) . toMatchInlineSnapshot ( `
0 commit comments