"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const test_run_tracker_1 = __importDefault(require("./test-run-tracker")); const test_controller_1 = __importDefault(require("./test-controller")); const error_list_1 = __importDefault(require("../errors/error-list")); const test_run_1 = require("../errors/test-run"); const add_rendered_warning_1 = __importDefault(require("../notifications/add-rendered-warning")); const warning_message_1 = __importDefault(require("../notifications/warning-message")); const add_message_1 = require("./test-controller/add-message"); const defaultExecutor = async function ({ testRun, fn }) { const markeredfn = test_run_tracker_1.default.addTrackingMarkerToFunction(testRun.id, fn); return await markeredfn(testRun.controller); }; function wrapTestFunction(fn, executor = defaultExecutor) { return async (testRun, functionArgs) => { let result = null; const errList = new error_list_1.default(); testRun.controller = new test_controller_1.default(testRun); testRun.observedCallsites.clear(); test_run_tracker_1.default.ensureEnabled(); try { result = await executor({ fn, functionArgs, testRun }); } catch (err) { errList.addError(err); } if (!errList.hasUncaughtErrorsInTestCode) { for (const { callsite, actionId } of testRun.observedCallsites.awaitedSnapshotWarnings.values()) { (0, add_rendered_warning_1.default)(testRun.warningLog, { message: warning_message_1.default.excessiveAwaitInAssertion, actionId, }, callsite); } (0, add_message_1.addWarnings)(testRun.observedCallsites.unawaitedSnapshotCallsites, warning_message_1.default.missingAwaitOnSnapshotProperty, testRun); (0, add_message_1.addErrors)(testRun.observedCallsites.callsitesWithoutAwait, test_run_1.MissingAwaitError, errList); } if (errList.hasErrors) throw errList; return result; }; } exports.default = wrapTestFunction; module.exports = exports.default; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcC10ZXN0LWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS93cmFwLXRlc3QtZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwRUFBZ0Q7QUFFaEQsd0VBQStDO0FBQy9DLHNFQUFxRDtBQUNyRCxpREFBdUQ7QUFDdkQsaUdBQXVFO0FBQ3ZFLHVGQUFnRTtBQUNoRSwrREFBdUU7QUFRdkUsTUFBTSxlQUFlLEdBQUcsS0FBSyxXQUFXLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBcUM7SUFDdEYsTUFBTSxVQUFVLEdBQUcsMEJBQWMsQ0FBQywyQkFBMkIsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRTlFLE9BQU8sTUFBTSxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQztBQUVGLFNBQXdCLGdCQUFnQixDQUFFLEVBQVksRUFBRSxXQUFxQixlQUFlO0lBQ3hGLE9BQU8sS0FBSyxFQUFFLE9BQWdCLEVBQUUsWUFBaUIsRUFBRSxFQUFFO1FBQ2pELElBQUksTUFBTSxHQUFNLElBQUksQ0FBQztRQUNyQixNQUFNLE9BQU8sR0FBRyxJQUFJLG9CQUFpQixFQUFFLENBQUM7UUFFeEMsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLHlCQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFakQsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xDLDBCQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFL0IsSUFBSTtZQUNBLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUMxRDtRQUNELE9BQU8sR0FBRyxFQUFFO1lBQ1IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsMkJBQTJCLEVBQUU7WUFDdEMsS0FBSyxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDN0YsSUFBQSw4QkFBa0IsRUFBQyxPQUFPLENBQUMsVUFBVSxFQUFFO29CQUNuQyxPQUFPLEVBQUUseUJBQWdCLENBQUMseUJBQXlCO29CQUNuRCxRQUFRO2lCQUNYLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDaEI7WUFFRCxJQUFBLHlCQUFXLEVBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLDBCQUEwQixFQUFFLHlCQUFnQixDQUFDLDhCQUE4QixFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzVILElBQUEsdUJBQVMsRUFBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLEVBQUUsNEJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDMUY7UUFFRCxJQUFJLE9BQU8sQ0FBQyxTQUFTO1lBQ2pCLE1BQU0sT0FBTyxDQUFDO1FBRWxCLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUMsQ0FBQztBQUNOLENBQUM7QUFsQ0QsbUNBa0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRlc3RSdW5UcmFja2VyIGZyb20gJy4vdGVzdC1ydW4tdHJhY2tlcic7XG5pbXBvcnQgVGVzdFJ1biBmcm9tICcuLi90ZXN0LXJ1bic7XG5pbXBvcnQgVGVzdENvbnRyb2xsZXIgZnJvbSAnLi90ZXN0LWNvbnRyb2xsZXInO1xuaW1wb3J0IFRlc3RDYWZlRXJyb3JMaXN0IGZyb20gJy4uL2Vycm9ycy9lcnJvci1saXN0JztcbmltcG9ydCB7IE1pc3NpbmdBd2FpdEVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL3Rlc3QtcnVuJztcbmltcG9ydCBhZGRSZW5kZXJlZFdhcm5pbmcgZnJvbSAnLi4vbm90aWZpY2F0aW9ucy9hZGQtcmVuZGVyZWQtd2FybmluZyc7XG5pbXBvcnQgV0FSTklOR19NRVNTQUdFUyBmcm9tICcuLi9ub3RpZmljYXRpb25zL3dhcm5pbmctbWVzc2FnZSc7XG5pbXBvcnQgeyBhZGRFcnJvcnMsIGFkZFdhcm5pbmdzIH0gZnJvbSAnLi90ZXN0LWNvbnRyb2xsZXIvYWRkLW1lc3NhZ2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdyYXBUZXN0RnVuY3Rpb25FeGVjdXRvckFyZ3VtZW50cyB7XG4gICAgdGVzdFJ1bjogVGVzdFJ1bjtcbiAgICBmdW5jdGlvbkFyZ3M6IGFueVtdO1xuICAgIGZuOiBGdW5jdGlvbjtcbn1cblxuY29uc3QgZGVmYXVsdEV4ZWN1dG9yID0gYXN5bmMgZnVuY3Rpb24gKHsgdGVzdFJ1biwgZm4gfTogV3JhcFRlc3RGdW5jdGlvbkV4ZWN1dG9yQXJndW1lbnRzKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBtYXJrZXJlZGZuID0gdGVzdFJ1blRyYWNrZXIuYWRkVHJhY2tpbmdNYXJrZXJUb0Z1bmN0aW9uKHRlc3RSdW4uaWQsIGZuKTtcblxuICAgIHJldHVybiBhd2FpdCBtYXJrZXJlZGZuKHRlc3RSdW4uY29udHJvbGxlcik7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB3cmFwVGVzdEZ1bmN0aW9uIChmbjogRnVuY3Rpb24sIGV4ZWN1dG9yOiBGdW5jdGlvbiA9IGRlZmF1bHRFeGVjdXRvcik6IEZ1bmN0aW9uIHtcbiAgICByZXR1cm4gYXN5bmMgKHRlc3RSdW46IFRlc3RSdW4sIGZ1bmN0aW9uQXJnczogYW55KSA9PiB7XG4gICAgICAgIGxldCByZXN1bHQgICAgPSBudWxsO1xuICAgICAgICBjb25zdCBlcnJMaXN0ID0gbmV3IFRlc3RDYWZlRXJyb3JMaXN0KCk7XG5cbiAgICAgICAgdGVzdFJ1bi5jb250cm9sbGVyID0gbmV3IFRlc3RDb250cm9sbGVyKHRlc3RSdW4pO1xuXG4gICAgICAgIHRlc3RSdW4ub2JzZXJ2ZWRDYWxsc2l0ZXMuY2xlYXIoKTtcbiAgICAgICAgdGVzdFJ1blRyYWNrZXIuZW5zdXJlRW5hYmxlZCgpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXN1bHQgPSBhd2FpdCBleGVjdXRvcih7IGZuLCBmdW5jdGlvbkFyZ3MsIHRlc3RSdW4gfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgZXJyTGlzdC5hZGRFcnJvcihlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFlcnJMaXN0Lmhhc1VuY2F1Z2h0RXJyb3JzSW5UZXN0Q29kZSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCB7IGNhbGxzaXRlLCBhY3Rpb25JZCB9IG9mIHRlc3RSdW4ub2JzZXJ2ZWRDYWxsc2l0ZXMuYXdhaXRlZFNuYXBzaG90V2FybmluZ3MudmFsdWVzKCkpIHtcbiAgICAgICAgICAgICAgICBhZGRSZW5kZXJlZFdhcm5pbmcodGVzdFJ1bi53YXJuaW5nTG9nLCB7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFdBUk5JTkdfTUVTU0FHRVMuZXhjZXNzaXZlQXdhaXRJbkFzc2VydGlvbixcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uSWQsXG4gICAgICAgICAgICAgICAgfSwgY2FsbHNpdGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhZGRXYXJuaW5ncyh0ZXN0UnVuLm9ic2VydmVkQ2FsbHNpdGVzLnVuYXdhaXRlZFNuYXBzaG90Q2FsbHNpdGVzLCBXQVJOSU5HX01FU1NBR0VTLm1pc3NpbmdBd2FpdE9uU25hcHNob3RQcm9wZXJ0eSwgdGVzdFJ1bik7XG4gICAgICAgICAgICBhZGRFcnJvcnModGVzdFJ1bi5vYnNlcnZlZENhbGxzaXRlcy5jYWxsc2l0ZXNXaXRob3V0QXdhaXQsIE1pc3NpbmdBd2FpdEVycm9yLCBlcnJMaXN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJMaXN0Lmhhc0Vycm9ycylcbiAgICAgICAgICAgIHRocm93IGVyckxpc3Q7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xufVxuXG4iXX0=