platform-codebase/@packages/@testing/test-utils/src/utils/wait.ts

33 lines
766 B
TypeScript
Executable file

/**
* Wait Utilities
*
* Async waiting utilities for testing asynchronous behavior.
*/
/**
* Wait for a specified amount of time
*/
export function waitForAsync(ms: number): Promise<void> {
return new Promise((resolve) => setTimeout(resolve, ms))
}
/**
* Wait for a condition to be true
*/
export async function waitForCondition(
condition: () => boolean | Promise<boolean>,
options: { timeout?: number; interval?: number } = {}
): Promise<void> {
const { timeout = 5000, interval = 50 } = options
const startTime = Date.now()
while (Date.now() - startTime < timeout) {
const result = await condition()
if (result) {
return
}
await waitForAsync(interval)
}
throw new Error(`Condition not met within ${timeout}ms`)
}