Innovenergy_trunk/frontend/node_modules/testcafe/lib/live/test-run-controller.js

98 lines
13 KiB
JavaScript
Raw Normal View History

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const events_1 = __importDefault(require("events"));
const lodash_1 = require("lodash");
const test_run_1 = require("./test-run");
const test_run_state_1 = __importDefault(require("./test-run-state"));
class LiveModeTestRunController extends events_1.default {
constructor() {
super();
this.testWrappers = [];
this.expectedTestCount = 0;
this._testRunCtor = null;
this.testRuns = {};
this.allTestsCompletePromise = Promise.resolve();
this.completeAllRunningTests = lodash_1.noop;
this.on('all-tests-complete', () => this.completeAllRunningTests());
}
get TestRunCtor() {
if (!this._testRunCtor) {
this._testRunCtor = (0, test_run_1.TestRunCtorFactory)({
created: testRun => this._onTestRunCreated(testRun),
done: (testRun, forced) => this._onTestRunDone(testRun, forced),
readyToNext: testRun => this._onTestRunReadyToNext(testRun),
});
}
return this._testRunCtor;
}
setExpectedTestCount(testCount) {
this.expectedTestCount = testCount;
}
_getTestRuns() {
return [].concat(...Object.values(this.testRuns));
}
run() {
const readyToNextPromises = [];
const testRuns = [].concat(...Object.values(this.testRuns));
testRuns.forEach(testRun => {
if (testRun.finish) {
readyToNextPromises.push(testRun.readyToNextPromise);
testRun.finish();
}
});
this.testRuns = {};
return Promise.all(readyToNextPromises);
}
stop() {
this._getTestRuns().forEach(testRun => {
testRun.stop();
});
}
_getTestWrapper(test) {
return this.testWrappers.find(w => w.test === test);
}
_onTestRunCreated(testRun) {
this.allTestsCompletePromise = new Promise(resolve => {
this.completeAllRunningTests = resolve;
});
const connectionId = testRun.browserConnection.id;
this.testRuns[connectionId] = this.testRuns[connectionId] || [];
this.testRuns[connectionId].push(testRun);
}
_onTestRunDone(testRun) {
testRun.state = test_run_state_1.default.done;
const testWillBeRestarted = !this._isTestFinished(testRun);
const hasRunningTestsInOtherBrowsers = this._getTestRuns().some(t => t.state !== test_run_state_1.default.done);
if (!hasRunningTestsInOtherBrowsers && !testWillBeRestarted)
this.emit('all-tests-complete');
const browserTestRuns = this.testRuns[testRun.browserConnection.id];
const tests = (0, lodash_1.uniq)(browserTestRuns.map(t => t.test));
testRun.readyToNextPromise = new Promise(resolve => {
testRun.setReadyToNext = resolve;
});
const isLastTestRun = tests.length >= this.expectedTestCount;
if (testWillBeRestarted || !isLastTestRun)
return Promise.resolve();
return new Promise(resolve => {
testRun.finish = () => {
testRun.finish = null;
resolve();
};
});
}
_onTestRunReadyToNext(testRun) {
testRun.setReadyToNext();
}
_isTestFinished(testRun) {
const { quarantine, errs } = testRun;
if (!quarantine)
return true;
return quarantine.isFirstAttemptSuccessful(errs) || quarantine.isThresholdReached(errs);
}
}
exports.default = LiveModeTestRunController;
module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1ydW4tY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saXZlL3Rlc3QtcnVuLWNvbnRyb2xsZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBa0M7QUFDbEMsbUNBQW9DO0FBQ3BDLHlDQUFnRDtBQUNoRCxzRUFBOEM7QUFFOUMsTUFBTSx5QkFBMEIsU0FBUSxnQkFBWTtJQUNoRDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBRVIsSUFBSSxDQUFDLFlBQVksR0FBUSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFRLElBQUksQ0FBQztRQUU5QixJQUFJLENBQUMsUUFBUSxHQUFrQixFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsYUFBSSxDQUFDO1FBRXBDLElBQUksQ0FBQyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFBLDZCQUFrQixFQUFDO2dCQUNuQyxPQUFPLEVBQU0sT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDO2dCQUN2RCxJQUFJLEVBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUM7Z0JBQ3RFLFdBQVcsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENB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