33 lines
766 B
TypeScript
Executable file
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`)
|
|
}
|