UNPKG

testcafe

Version:

Automated browser testing for the modern web development stack.

40 lines 4.5 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const pinkie_1 = __importDefault(require("pinkie")); const lodash_1 = require("lodash"); const test_run_tracker_1 = __importDefault(require("../api/test-run-tracker")); class ReExecutablePromise extends pinkie_1.default { constructor(executorFn) { super(lodash_1.noop); this._fn = executorFn; this._taskPromise = null; } _ensureExecuting() { if (!this._taskPromise) this._taskPromise = new pinkie_1.default(this._fn); } _reExecute() { this._taskPromise = null; return this; } then(onFulfilled, onRejected) { this._ensureExecuting(); return this._taskPromise.then(onFulfilled, onRejected); } catch(onRejected) { this._ensureExecuting(); return this._taskPromise.catch(onRejected); } static fromFn(asyncExecutorFn) { const testRunId = test_run_tracker_1.default.getContextTestRunId(); if (testRunId) asyncExecutorFn = test_run_tracker_1.default.addTrackingMarkerToFunction(testRunId, asyncExecutorFn); return new ReExecutablePromise(resolve => resolve(asyncExecutorFn())); } } exports.default = ReExecutablePromise; module.exports = exports.default; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmUtZXhlY3V0YWJsZS1wcm9taXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3JlLWV4ZWN1dGFibGUtcHJvbWlzZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE2QjtBQUM3QixtQ0FBOEI7QUFDOUIsK0VBQXFEO0FBRXJELE1BQXFCLG1CQUFvQixTQUFRLGdCQUFPO0lBQ3BELFlBQWEsVUFBVTtRQUNuQixLQUFLLENBQUMsYUFBSSxDQUFDLENBQUM7UUFFWixJQUFJLENBQUMsR0FBRyxHQUFZLFVBQVUsQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxnQkFBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXpCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLENBQUUsV0FBVyxFQUFFLFVBQVU7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELEtBQUssQ0FBRSxVQUFVO1FBQ2IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBRSxlQUFlO1FBQzFCLE1BQU0sU0FBUyxHQUFHLDBCQUFjLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUV2RCxJQUFJLFNBQVM7WUFDVCxlQUFlLEdBQUcsMEJBQWMsQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFFN0YsT0FBTyxJQUFJLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDO0NBQ0o7QUF2Q0Qsc0NBdUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb21pc2UgZnJvbSAncGlua2llJztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHRlc3RSdW5UcmFja2VyIGZyb20gJy4uL2FwaS90ZXN0LXJ1bi10cmFja2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVFeGVjdXRhYmxlUHJvbWlzZSBleHRlbmRzIFByb21pc2Uge1xuICAgIGNvbnN0cnVjdG9yIChleGVjdXRvckZuKSB7XG4gICAgICAgIHN1cGVyKG5vb3ApO1xuXG4gICAgICAgIHRoaXMuX2ZuICAgICAgICAgID0gZXhlY3V0b3JGbjtcbiAgICAgICAgdGhpcy5fdGFza1Byb21pc2UgPSBudWxsO1xuICAgIH1cblxuICAgIF9lbnN1cmVFeGVjdXRpbmcgKCkge1xuICAgICAgICBpZiAoIXRoaXMuX3Rhc2tQcm9taXNlKVxuICAgICAgICAgICAgdGhpcy5fdGFza1Byb21pc2UgPSBuZXcgUHJvbWlzZSh0aGlzLl9mbik7XG4gICAgfVxuXG4gICAgX3JlRXhlY3V0ZSAoKSB7XG4gICAgICAgIHRoaXMuX3Rhc2tQcm9taXNlID0gbnVsbDtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGVuIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICB0aGlzLl9lbnN1cmVFeGVjdXRpbmcoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fdGFza1Byb21pc2UudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgfVxuXG4gICAgY2F0Y2ggKG9uUmVqZWN0ZWQpIHtcbiAgICAgICAgdGhpcy5fZW5zdXJlRXhlY3V0aW5nKCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rhc2tQcm9taXNlLmNhdGNoKG9uUmVqZWN0ZWQpO1xuICAgIH1cblxuICAgIHN0YXRpYyBmcm9tRm4gKGFzeW5jRXhlY3V0b3JGbikge1xuICAgICAgICBjb25zdCB0ZXN0UnVuSWQgPSB0ZXN0UnVuVHJhY2tlci5nZXRDb250ZXh0VGVzdFJ1bklkKCk7XG5cbiAgICAgICAgaWYgKHRlc3RSdW5JZClcbiAgICAgICAgICAgIGFzeW5jRXhlY3V0b3JGbiA9IHRlc3RSdW5UcmFja2VyLmFkZFRyYWNraW5nTWFya2VyVG9GdW5jdGlvbih0ZXN0UnVuSWQsIGFzeW5jRXhlY3V0b3JGbik7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBSZUV4ZWN1dGFibGVQcm9taXNlKHJlc29sdmUgPT4gcmVzb2x2ZShhc3luY0V4ZWN1dG9yRm4oKSkpO1xuICAgIH1cbn1cbiJdfQ==