aboutsummaryrefslogtreecommitdiffstats
path: root/packages/e2e_tests/utils/general.ts
blob: 417a7cd5183dc79ab5f3be21a62f1a545768ee1d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
export async function waitUntil(
  f: () => Promise<boolean>,
  description: string,
  timeoutMs = 60000,
): Promise<void> {
  const startTime = Date.now();

  while (Date.now() - startTime < timeoutMs) {
    console.log(`Waiting for ${description}...`);
    try {
      const res = await f();
      if (res) {
        console.log(`${description}: success`);
        return;
      }
    } catch (error) {
      // Ignore errors and retry
      console.log(`${description}: error, retrying...: ${error}`);
    }
    await new Promise((resolve) => setTimeout(resolve, 1000));
  }

  throw new Error(`${description}: timeout after ${timeoutMs}ms`);
}