mirror of
https://github.com/langgenius/dify.git
synced 2026-11-12 14:21:29 +08:00
29 lines
919 B
TypeScript
29 lines
919 B
TypeScript
import { act, configure, getConfig } from '@testing-library/react'
|
|
import userEvent from '@testing-library/user-event'
|
|
|
|
type User = ReturnType<typeof userEvent.setup>
|
|
|
|
export async function runDebouncedUserInteraction(
|
|
debounceMs: number,
|
|
interaction: (user: User) => Promise<void>,
|
|
) {
|
|
vi.useFakeTimers()
|
|
const originalAsyncWrapper = getConfig().asyncWrapper
|
|
|
|
// RTL's asyncWrapper drains a 0ms timer through Jest globals, which hangs with Vitest fake timers.
|
|
configure({ asyncWrapper: (callback) => callback() })
|
|
|
|
try {
|
|
const user = userEvent.setup({ advanceTimers: vi.advanceTimersByTime })
|
|
await act(async () => interaction(user))
|
|
await act(async () => vi.advanceTimersByTimeAsync(debounceMs + 1))
|
|
await act(async () => vi.advanceTimersByTimeAsync(0))
|
|
} finally {
|
|
try {
|
|
configure({ asyncWrapper: originalAsyncWrapper })
|
|
} finally {
|
|
vi.useRealTimers()
|
|
}
|
|
}
|
|
}
|