authelia/test/helpers/utils/WaitUntil.ts
Clement Michaud 76fa325f08 [BREAKING] Create a suite for kubernetes tests.
Authelia client uses hash router instead of browser router in order to work
with Kubernetes nginx-ingress-controller. This is also better for users having
old browsers.

This commit is breaking because it requires to change the configuration of the
proxy to include the # in the URL of the login portal.
2019-03-16 00:13:27 +01:00

28 lines
683 B
TypeScript

import sleep from "./sleep";
export default function WaitUntil(
fn: () => Promise<boolean>, timeout: number = 15000,
interval: number = 1000, waitAfter: number = 0): Promise<void> {
return new Promise(async (resolve, reject) => {
const timer = setTimeout(() => { throw new Error('Timeout') }, timeout);
while (true) {
try {
const res = await fn();
if (res && res === true) {
clearTimeout(timer);
break;
}
await sleep(interval);
} catch (err) {
console.error(err);
reject(err);
return;
}
}
if (waitAfter > 0)
await sleep(waitAfter);
resolve();
});
}