Innovenergy_trunk/frontend/node_modules/testcafe/lib/runner/fixture-hook-controller.js

107 lines
15 KiB
JavaScript
Raw Permalink 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 phase_1 = __importDefault(require("../test-run/phase"));
const process_test_fn_error_1 = __importDefault(require("../errors/process-test-fn-error"));
const execute_fn_with_timeout_1 = __importDefault(require("../utils/execute-fn-with-timeout"));
class FixtureHookController {
constructor(tests, browserConnectionCount) {
this._fixtureMap = FixtureHookController._createFixtureMap(tests, browserConnectionCount);
}
static _ensureFixtureMapItem(fixtureMap, fixture) {
if (!fixtureMap.has(fixture)) {
const item = {
started: false,
runningFixtureBeforeHook: false,
fixtureBeforeHookErr: null,
pendingTestRunCount: 0,
fixtureCtx: Object.create(null),
};
fixtureMap.set(fixture, item);
}
}
static _createFixtureMap(tests, browserConnectionCount) {
return tests.reduce((fixtureMap, test) => {
const fixture = test.fixture;
if (!test.skip) {
FixtureHookController._ensureFixtureMapItem(fixtureMap, fixture);
const item = fixtureMap.get(fixture);
item.pendingTestRunCount += browserConnectionCount;
}
return fixtureMap;
}, new Map());
}
_getFixtureMapItem(test) {
return test.skip ? null : this._fixtureMap.get(test.fixture);
}
isTestBlocked(test) {
const item = this._getFixtureMapItem(test);
return !!item && item.runningFixtureBeforeHook;
}
async _runFixtureBeforeHook(item, fn, testRun) {
if (!fn)
return true;
item.runningFixtureBeforeHook = true;
try {
await (0, execute_fn_with_timeout_1.default)(fn, testRun.executionTimeout, item.fixtureCtx);
}
catch (err) {
item.fixtureBeforeHookErr = (0, process_test_fn_error_1.default)(err);
}
item.runningFixtureBeforeHook = false;
return !item.fixtureBeforeHookErr;
}
async _runFixtureAfterHook(item, fn, testRun) {
if (!fn)
return;
testRun.phase = phase_1.default.inFixtureAfterHook;
try {
await (0, execute_fn_with_timeout_1.default)(fn, testRun.executionTimeout, item.fixtureCtx);
}
catch (err) {
testRun.addError((0, process_test_fn_error_1.default)(err));
}
}
async runFixtureBeforeHookIfNecessary(testRun) {
const fixture = testRun.test.fixture;
const item = this._getFixtureMapItem(testRun.test);
if (item) {
const shouldRunBeforeHook = !item.started;
item.started = true;
const success = shouldRunBeforeHook
&& await this._runFixtureBeforeHook(item, fixture.globalBeforeFn, testRun)
&& await this._runFixtureBeforeHook(item, fixture.beforeFn, testRun);
// NOTE: fail all tests in fixture if fixture.before hook has error
if (!success && item.fixtureBeforeHookErr) {
testRun.phase = phase_1.default.inFixtureBeforeHook;
testRun.addError(item.fixtureBeforeHookErr);
return false;
}
testRun.fixtureCtx = item.fixtureCtx;
}
return true;
}
async runFixtureAfterHookIfNecessary(testRun) {
var _a;
const fixture = testRun.test.fixture;
const item = this._getFixtureMapItem(testRun.test);
if (!item)
return;
item.pendingTestRunCount--;
if (item.pendingTestRunCount !== 0)
return;
await this._runFixtureAfterHook(item, fixture.afterFn, testRun);
await this._runFixtureAfterHook(item, fixture.globalAfterFn, testRun);
if (item.fixtureCtx) {
await ((_a = testRun.compilerService) === null || _a === void 0 ? void 0 : _a.removeFixtureCtxsFromState({
fixtureIds: [fixture.id],
}));
}
this._fixtureMap.delete(fixture);
}
}
exports.default = FixtureHookController;
module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS1ob29rLWNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVubmVyL2ZpeHR1cmUtaG9vay1jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOERBQStDO0FBQy9DLDRGQUFpRTtBQUlqRSwrRkFBb0U7QUFVcEUsTUFBcUIscUJBQXFCO0lBR3RDLFlBQW9CLEtBQWEsRUFBRSxzQkFBOEI7UUFDN0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRU8sTUFBTSxDQUFDLHFCQUFxQixDQUFFLFVBQXNDLEVBQUUsT0FBZ0I7UUFDMUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDMUIsTUFBTSxJQUFJLEdBQUc7Z0JBQ1QsT0FBTyxFQUFtQixLQUFLO2dCQUMvQix3QkFBd0IsRUFBRSxLQUFLO2dCQUMvQixvQkFBb0IsRUFBTSxJQUFJO2dCQUM5QixtQkFBbUIsRUFBTyxDQUFDO2dCQUMzQixVQUFVLEVBQWdCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO2FBQ2hELENBQUM7WUFFRixVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNqQztJQUNMLENBQUM7SUFFTyxNQUFNLENBQUMsaUJBQWlCLENBQUUsS0FBYSxFQUFFLHNCQUE4QjtRQUMzRSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUU3QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDWixxQkFBcUIsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsT0FBa0IsQ0FBQyxDQUFDO2dC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