Files
callstack__react-native-tes…/src/waitForElement.js
T

27 lines
627 B
JavaScript
Raw Normal View History

// @flow
export default function waitForExpect<T: ReactTestInstance>(
expectation: () => T,
timeout: number = 4500,
interval: number = 50
) {
const startTime = Date.now();
return new Promise<T>((resolve, reject) => {
const rejectOrRerun = error => {
if (Date.now() - startTime >= timeout) {
reject(error);
return;
}
setTimeout(runExpectation, interval);
};
function runExpectation() {
try {
const result = expectation();
resolve(result);
} catch (error) {
rejectOrRerun(error);
}
}
setTimeout(runExpectation, 0);
});
}