Some checks failed
build / lint (22) (push) Failing after 17s
build / test (22) (push) Failing after 8s
build / lint (23) (push) Failing after 2s
build / build (22) (push) Has been skipped
build / build (23) (push) Has been skipped
build / test (23) (push) Failing after 4s
docsearch / docsearch (push) Failing after 1s
19 lines
468 B
TypeScript
19 lines
468 B
TypeScript
import type { ExecutionContext } from 'ava'
|
|
import { sleep } from './sleep.ts'
|
|
|
|
/* eslint-disable no-await-in-loop */
|
|
export const retryableAssertion = async (t: ExecutionContext, recoverableTry: (tt: ExecutionContext) => void) => {
|
|
// eslint-disable-next-line no-constant-condition
|
|
while (true) {
|
|
const lastTry = await t.try(recoverableTry)
|
|
|
|
if (lastTry.passed) {
|
|
lastTry.commit()
|
|
break
|
|
}
|
|
lastTry.discard()
|
|
|
|
await sleep(100)
|
|
}
|
|
}
|