cybernaut
Version:
Reliable, automated web UI testing in BDD-style.
42 lines • 1.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const utils_1 = require("./utils");
function createVerifier(accessor, predicate) {
const description = `${accessor.description} ${predicate.description}`;
return (driver, attempt, retries) => tslib_1.__awaiter(this, void 0, void 0, function* () {
try {
const actualValue = yield accessor.get(driver);
const result = predicate.test(actualValue);
if (!result) {
return {
description: `${description} (${predicate.compare(actualValue)})`,
result: 'invalid'
};
}
const attempts = ` (attempt ${attempt} of ${retries + 1})`;
return {
description: description + (attempt > 1 ? attempts : ''),
result: 'valid'
};
}
catch (e) {
const message = e && e.message ? String(e.message) : 'unknown error';
return { description: `${description} (${message})`, result: 'error' };
}
});
}
exports.createVerifier = createVerifier;
function verify(verifier, driver, options, _attempt = 1) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const { retries, retryDelay } = options;
const verification = yield verifier(driver, _attempt, retries);
if (verification.result === 'valid' || retries < _attempt) {
return verification;
}
yield utils_1.sleep(retryDelay);
return verify(verifier, driver, options, _attempt + 1);
});
}
exports.verify = verify;
//# sourceMappingURL=verification.js.map