e2ed
Version:
E2E testing framework over Playwright
50 lines (49 loc) • 2.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getAssertionPromise = void 0;
const internal_1 = require("../../constants/internal");
const object_1 = require("../object");
const promise_1 = require("../promise");
const typeGuards_1 = require("../typeGuards");
const additionalMatchers_1 = require("./additionalMatchers");
const applyAdditionalMatcher_1 = require("./applyAdditionalMatcher");
const test_1 = require("@playwright/test");
/**
* Get internal assertion promise by assertion options.
* @internal
*/
const getAssertionPromise = ({ args, context, key, selectorPropertyRetryData, timeout, timeoutError, }) => {
const runAssertion = (value) => {
const additionalMatcher = additionalMatchers_1.additionalMatchers[key];
const ctx = { actualValue: value, description: context.description };
if (additionalMatcher !== undefined) {
return (0, promise_1.addTimeoutToPromise)((0, applyAdditionalMatcher_1.applyAdditionalMatcher)(additionalMatcher, ctx, args, selectorPropertyRetryData), timeout, timeoutError).catch((assertError) => {
(0, object_1.setReadonlyProperty)(ctx, 'error', assertError);
return ctx;
});
}
const assertion = (0, test_1.expect)(value, ctx.description);
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
return (0, promise_1.addTimeoutToPromise)(assertion[key](...args), timeout, timeoutError).then(() => ctx, (assertError) => {
(0, object_1.setReadonlyProperty)(ctx, 'error', assertError);
return ctx;
});
};
const assertionPromise = internal_1.RESOLVED_PROMISE.then(() => {
if ((0, typeGuards_1.isThenable)(context.actualValue)) {
return (0, promise_1.addTimeoutToPromise)(context.actualValue, timeout, timeoutError)
.then(runAssertion)
.catch((error) => {
const ctx = {
actualValue: '<Thenable>',
description: context.description,
error,
};
return ctx;
});
}
return runAssertion(context.actualValue);
});
return assertionPromise;
};
exports.getAssertionPromise = getAssertionPromise;