You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

62 lines
1.7 KiB

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _helpers = require("./helpers");
var defaults = {
timeout: 4500,
interval: 50
};
/**
* Waits for the expectation to pass and returns a Promise
*
* @param expectation Function Expectation that has to complete without throwing
* @param timeout Number Maximum wait interval, 4500ms by default
* @param interval Number Wait-between-retries interval, 50ms by default
* @return Promise Promise to return a callback result
*/
var waitForExpect = function waitForExpect(expectation) {
var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaults.timeout;
var interval = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaults.interval;
var setTimeout = (0, _helpers.getSetTimeoutFn)(); // eslint-disable-next-line no-param-reassign
if (interval < 1) interval = 1;
var maxTries = Math.ceil(timeout / interval);
var tries = 0;
return new Promise(function (resolve, reject) {
var rejectOrRerun = function rejectOrRerun(error) {
if (tries > maxTries) {
reject(error);
return;
} // eslint-disable-next-line no-use-before-define
setTimeout(runExpectation, interval);
};
function runExpectation() {
tries += 1;
try {
Promise.resolve(expectation()).then(function () {
return resolve();
}).catch(rejectOrRerun);
} catch (error) {
rejectOrRerun(error);
}
}
setTimeout(runExpectation, 0);
});
};
waitForExpect.defaults = defaults;
var _default = waitForExpect;
exports.default = _default;
module.exports = exports.default;
module.exports.default = exports.default;