UNPKG

e2ed

Version:

E2E testing framework over Playwright

50 lines (49 loc) 2.32 kB
"use strict"; 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;