UNPKG

testcafe

Version:

Automated browser testing for the modern web development stack.

57 lines 8.19 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 test_run_1 = __importDefault(require("../test-run")); const test_run_state_1 = __importDefault(require("./test-run-state")); const type_1 = __importDefault(require("../test-run/commands/type")); const service_1 = require("../test-run/commands/service"); const TEST_RUN_ABORTED_MESSAGE = 'The test run has been aborted.'; exports.TestRunCtorFactory = function (callbacks) { const { created, done, readyToNext } = callbacks; return class LiveModeTestRun extends test_run_1.default { constructor(test, browserConnection, screenshotCapturer, warningLog, opts) { super(test, browserConnection, screenshotCapturer, warningLog, opts); created(this, test); this.state = test_run_state_1.default.created; this.finish = null; this.stopping = false; this.isInRoleInitializing = false; this.stopped = false; } stop() { this.stopped = true; } _useRole(...args) { this.isInRoleInitializing = true; return super._useRole.apply(this, args) .then(res => { this.isInRoleInitializing = false; return res; }) .catch(err => { this.isInRoleInitializing = false; throw err; }); } executeCommand(commandToExec, callsite, forced) { // NOTE: don't close the page and the session when the last test in the queue is done if (commandToExec.type === type_1.default.testDone && !forced) { done(this, this.stopped) .then(() => this.executeCommand(commandToExec, callsite, true)) .then(() => readyToNext(this)); this.executeCommand(new service_1.UnlockPageCommand(), null); return pinkie_1.default.resolve(); } if (this.stopped && !this.stopping && !this.isInRoleInitializing) { this.stopping = true; return pinkie_1.default.reject(new Error(TEST_RUN_ABORTED_MESSAGE)); } return super.executeCommand(commandToExec, callsite); } }; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1ydW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGl2ZS90ZXN0LXJ1bi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE2QjtBQUM3QiwyREFBa0M7QUFDbEMsc0VBQThDO0FBQzlDLHFFQUFxRDtBQUNyRCwwREFBaUU7QUFFakUsTUFBTSx3QkFBd0IsR0FBRyxnQ0FBZ0MsQ0FBQztBQUVyRCxRQUFBLGtCQUFrQixHQUFHLFVBQVUsU0FBUztJQUNqRCxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxTQUFTLENBQUM7SUFFakQsT0FBTyxNQUFNLGVBQWdCLFNBQVEsa0JBQU87UUFDeEMsWUFBYSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLElBQUk7WUFDdEUsS0FBSyxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFckUsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUVwQixJQUFJLENBQUMsS0FBSyxHQUFrQix3QkFBYyxDQUFDLE9BQU8sQ0FBQztZQUNuRCxJQUFJLENBQUMsTUFBTSxHQUFpQixJQUFJLENBQUM7WUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBZSxLQUFLLENBQUM7WUFDbEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztZQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFnQixLQUFLLENBQUM7UUFDdEMsQ0FBQztRQUVELElBQUk7WUFDQSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUN4QixDQUFDO1FBRUQsUUFBUSxDQUFFLEdBQUcsSUFBSTtZQUNiLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7WUFFakMsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO2lCQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztnQkFFbEMsT0FBTyxHQUFHLENBQUM7WUFDZixDQUFDLENBQUM7aUJBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNULElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7Z0JBRWxDLE1BQU0sR0FBRyxDQUFDO1lBQ2QsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBRUQsY0FBYyxDQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsTUFBTTtZQUMzQyxxRkFBcUY7WUFDckYsSUFBSSxhQUFhLENBQUMsSUFBSSxLQUFLLGNBQVksQ0FBQyxRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ3pELElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQztxQkFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztxQkFDOUQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUVuQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksMkJBQWlCLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFFbkQsT0FBTyxnQkFBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQzVCO1lBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7Z0JBQzlCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO2dCQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFFckIsT0FBTyxnQkFBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7YUFDOUQ7WUFFRCxPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3pELENBQUM7S0FDSixDQUFDO0FBQ04sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb21pc2UgZnJvbSAncGlua2llJztcbmltcG9ydCBUZXN0UnVuIGZyb20gJy4uL3Rlc3QtcnVuJztcbmltcG9ydCBURVNUX1JVTl9TVEFURSBmcm9tICcuL3Rlc3QtcnVuLXN0YXRlJztcbmltcG9ydCBDT01NQU5EX1RZUEUgZnJvbSAnLi4vdGVzdC1ydW4vY29tbWFuZHMvdHlwZSc7XG5pbXBvcnQgeyBVbmxvY2tQYWdlQ29tbWFuZCB9IGZyb20gJy4uL3Rlc3QtcnVuL2NvbW1hbmRzL3NlcnZpY2UnO1xuXG5jb25zdCBURVNUX1JVTl9BQk9SVEVEX01FU1NBR0UgPSAnVGhlIHRlc3QgcnVuIGhhcyBiZWVuIGFib3J0ZWQuJztcblxuZXhwb3J0IGNvbnN0IFRlc3RSdW5DdG9yRmFjdG9yeSA9IGZ1bmN0aW9uIChjYWxsYmFja3MpIHtcbiAgICBjb25zdCB7IGNyZWF0ZWQsIGRvbmUsIHJlYWR5VG9OZXh0IH0gPSBjYWxsYmFja3M7XG5cbiAgICByZXR1cm4gY2xhc3MgTGl2ZU1vZGVUZXN0UnVuIGV4dGVuZHMgVGVzdFJ1biB7XG4gICAgICAgIGNvbnN0cnVjdG9yICh0ZXN0LCBicm93c2VyQ29ubmVjdGlvbiwgc2NyZWVuc2hvdENhcHR1cmVyLCB3YXJuaW5nTG9nLCBvcHRzKSB7XG4gICAgICAgICAgICBzdXBlcih0ZXN0LCBicm93c2VyQ29ubmVjdGlvbiwgc2NyZWVuc2hvdENhcHR1cmVyLCB3YXJuaW5nTG9nLCBvcHRzKTtcblxuICAgICAgICAgICAgY3JlYXRlZCh0aGlzLCB0ZXN0KTtcblxuICAgICAgICAgICAgdGhpcy5zdGF0ZSAgICAgICAgICAgICAgICA9IFRFU1RfUlVOX1NUQVRFLmNyZWF0ZWQ7XG4gICAgICAgICAgICB0aGlzLmZpbmlzaCAgICAgICAgICAgICAgID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuc3RvcHBpbmcgICAgICAgICAgICAgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuaXNJblJvbGVJbml0aWFsaXppbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3RvcHBlZCAgICAgICAgICAgICAgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0b3AgKCkge1xuICAgICAgICAgICAgdGhpcy5zdG9wcGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIF91c2VSb2xlICguLi5hcmdzKSB7XG4gICAgICAgICAgICB0aGlzLmlzSW5Sb2xlSW5pdGlhbGl6aW5nID0gdHJ1ZTtcblxuICAgICAgICAgICAgcmV0dXJuIHN1cGVyLl91c2VSb2xlLmFwcGx5KHRoaXMsIGFyZ3MpXG4gICAgICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0luUm9sZUluaXRpYWxpemluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0luUm9sZUluaXRpYWxpemluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV4ZWN1dGVDb21tYW5kIChjb21tYW5kVG9FeGVjLCBjYWxsc2l0ZSwgZm9yY2VkKSB7XG4gICAgICAgICAgICAvLyBOT1RFOiBkb24ndCBjbG9zZSB0aGUgcGFnZSBhbmQgdGhlIHNlc3Npb24gd2hlbiB0aGUgbGFzdCB0ZXN0IGluIHRoZSBxdWV1ZSBpcyBkb25lXG4gICAgICAgICAgICBpZiAoY29tbWFuZFRvRXhlYy50eXBlID09PSBDT01NQU5EX1RZUEUudGVzdERvbmUgJiYgIWZvcmNlZCkge1xuICAgICAgICAgICAgICAgIGRvbmUodGhpcywgdGhpcy5zdG9wcGVkKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB0aGlzLmV4ZWN1dGVDb21tYW5kKGNvbW1hbmRUb0V4ZWMsIGNhbGxzaXRlLCB0cnVlKSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gcmVhZHlUb05leHQodGhpcykpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlQ29tbWFuZChuZXcgVW5sb2NrUGFnZUNvbW1hbmQoKSwgbnVsbCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnN0b3BwZWQgJiYgIXRoaXMuc3RvcHBpbmcgJiZcbiAgICAgICAgICAgICAgICAhdGhpcy5pc0luUm9sZUluaXRpYWxpemluZykge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcHBpbmcgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihURVNUX1JVTl9BQk9SVEVEX01FU1NBR0UpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmV4ZWN1dGVDb21tYW5kKGNvbW1hbmRUb0V4ZWMsIGNhbGxzaXRlKTtcbiAgICAgICAgfVxuICAgIH07XG59O1xuIl19