-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvitest.setup.ts
More file actions
39 lines (37 loc) · 1.15 KB
/
vitest.setup.ts
File metadata and controls
39 lines (37 loc) · 1.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import * as React from 'react'
import { vi } from 'vitest'
const reactCompat = React as typeof React & {
act?: (callback: () => void | Promise<void>) => Promise<void>
}
// React 19 compatibility: polyfill React.act for react-dom-test-utils
if (!reactCompat.act || typeof reactCompat.act !== 'function') {
const act = (callback: () => void | Promise<void>): Promise<void> => {
const result = callback()
if (result && typeof result === 'object' && 'then' in result) {
return Promise.resolve(result).then(() => {
if (typeof queueMicrotask !== 'undefined') {
return new Promise<void>((resolve) => {
queueMicrotask(() => resolve())
})
}
return Promise.resolve()
})
}
if (typeof queueMicrotask !== 'undefined') {
return new Promise<void>((resolve) => {
queueMicrotask(() => resolve())
})
}
return Promise.resolve()
}
try {
Object.defineProperty(reactCompat, 'act', {
value: act,
writable: true,
configurable: true,
enumerable: false,
})
} catch {
// React.act may already be defined in React 19.2.4 - safe to skip
}
}