1
1
/* eslint-disable @typescript-eslint/no-use-before-define */
2
2
import { 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'
5
8
import * as React from 'react'
6
9
import { ErrorBoundary } from 'react-error-boundary'
7
10
import { getExpectErrorMessage } from '../../__testHelpers__/getCleanedErrorMessage.js'
8
11
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 )
19
13
20
14
function CounterForm ( {
21
15
value,
@@ -49,15 +43,15 @@ describe('snapshotDOM', () => {
49
43
const { takeRender, render} = createRenderStream ( {
50
44
snapshotDOM : true ,
51
45
} )
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 )
53
50
{
54
51
const { withinDOM} = await takeRender ( )
55
52
const input = withinDOM ( ) . getByLabelText < HTMLInputElement > ( 'Value' )
56
53
expect ( input . value ) . toBe ( '0' )
57
54
}
58
- const incrementButton = utils . getByText ( 'Increment' ) as HTMLElement // TODO
59
- await click ( incrementButton )
60
- await click ( incrementButton )
61
55
{
62
56
const { withinDOM} = await takeRender ( )
63
57
// a one-off to test that `queryBy` works and accepts a type argument
@@ -82,12 +76,12 @@ describe('snapshotDOM', () => {
82
76
const { takeRender, render} = createRenderStream ( {
83
77
snapshotDOM : true ,
84
78
} )
85
- render ( < Counter /> )
79
+ await render ( < Counter /> )
86
80
{
87
81
const { withinDOM} = await takeRender ( )
88
82
const snapshotIncrementButton = withinDOM ( ) . getByText ( 'Increment' )
89
83
try {
90
- await click ( snapshotIncrementButton )
84
+ await userEvent . click ( snapshotIncrementButton )
91
85
} catch ( error ) {
92
86
expect ( error ) . toMatchInlineSnapshot ( `
93
87
[Error: Uncaught [Error:
@@ -114,7 +108,7 @@ describe('snapshotDOM', () => {
114
108
snapshotDOM : true ,
115
109
queries,
116
110
} )
117
- render ( < Component /> )
111
+ await render ( < Component /> )
118
112
119
113
const { withinDOM} = await takeRender ( )
120
114
expect ( withinDOM ( ) . foo ( ) ) . toBe ( null )
@@ -140,14 +134,14 @@ describe('replaceSnapshot', () => {
140
134
const { takeRender, replaceSnapshot, render} = createRenderStream < {
141
135
value : number
142
136
} > ( )
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 )
144
141
{
145
142
const { snapshot} = await takeRender ( )
146
143
expect ( snapshot ) . toEqual ( { value : 0 } )
147
144
}
148
- const incrementButton = utils . getByText ( 'Increment' ) as HTMLElement // TODO
149
- await click ( incrementButton )
150
- await click ( incrementButton )
151
145
{
152
146
const { snapshot} = await takeRender ( )
153
147
expect ( snapshot ) . toEqual ( { value : 1 } )
@@ -170,15 +164,14 @@ describe('replaceSnapshot', () => {
170
164
const { takeRender, replaceSnapshot, render} = createRenderStream ( {
171
165
initialSnapshot : { unrelatedValue : 'unrelated' , value : - 1 } ,
172
166
} )
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 )
174
171
{
175
172
const { snapshot} = await takeRender ( )
176
173
expect ( snapshot ) . toEqual ( { unrelatedValue : 'unrelated' , value : 0 } )
177
174
}
178
-
179
- const incrementButton = utils . getByText ( 'Increment' ) as HTMLElement // TODO
180
- await click ( incrementButton )
181
- await click ( incrementButton )
182
175
{
183
176
const { snapshot} = await takeRender ( )
184
177
expect ( snapshot ) . toEqual ( { unrelatedValue : 'unrelated' , value : 1 } )
@@ -204,7 +197,7 @@ describe('replaceSnapshot', () => {
204
197
205
198
const spy = jest . spyOn ( console , 'error' )
206
199
spy . mockImplementation ( ( ) => { } )
207
- render (
200
+ await render (
208
201
< ErrorBoundary
209
202
fallbackRender = { ( { error} ) => {
210
203
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
@@ -215,8 +208,6 @@ describe('replaceSnapshot', () => {
215
208
< Counter />
216
209
</ ErrorBoundary > ,
217
210
)
218
- await new Promise ( r => setTimeout ( r , 10 ) )
219
-
220
211
spy . mockRestore ( )
221
212
222
213
expect ( caughtError ! ) . toMatchInlineSnapshot (
@@ -244,12 +235,11 @@ describe('onRender', () => {
244
235
expect ( info . count ) . toBe ( info . snapshot . value + 1 )
245
236
} ,
246
237
} )
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 )
248
242
await takeRender ( )
249
-
250
- const incrementButton = utils . getByText ( 'Increment' ) as HTMLElement // TODO
251
- await click ( incrementButton )
252
- await click ( incrementButton )
253
243
await takeRender ( )
254
244
await takeRender ( )
255
245
} )
@@ -268,11 +258,11 @@ describe('onRender', () => {
268
258
} ,
269
259
} )
270
260
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 )
272
265
await takeRender ( )
273
- const incrementButton = utils . getByText ( 'Increment' ) as HTMLElement // TODO
274
- await click ( incrementButton )
275
- await click ( incrementButton )
276
266
const error = await getExpectErrorMessage ( takeRender ( ) )
277
267
278
268
expect ( error ) . toMatchInlineSnapshot ( `
0 commit comments