UNPKG

testplane

Version:

Tests framework based on mocha and wdio

69 lines 3.06 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getTestDependenciesWriter = exports.TestDependenciesWriter = void 0; const lodash_1 = require("lodash"); const proper_lockfile_1 = __importDefault(require("proper-lockfile")); const fs_extra_1 = __importDefault(require("fs-extra")); const utils_1 = require("./utils"); const json_utils_1 = require("./json-utils"); const areDepsSame = (browserDepsA, browserDepsB) => { const props = ["js", "css", "modules"]; if (!browserDepsA || !browserDepsB) { return false; } for (const prop of props) { if (!browserDepsA[prop] || !browserDepsB[prop] || browserDepsA[prop].length !== browserDepsB[prop].length) { return false; } } // Rely on the fact both are sorted arrays for (const prop of props) { for (let i = 0; i < browserDepsA[prop].length; i++) { if (browserDepsA[prop][i] !== browserDepsB[prop][i]) { return false; } } } return true; }; class TestDependenciesWriter { constructor(testDependenciesPath, compression) { this._directoryCreated = false; this._selectivityTestsPath = (0, utils_1.getSelectivityTestsPath)(testDependenciesPath); this._compression = compression; } async saveFor(test, browserDeps, testplaneDeps) { if (!this._directoryCreated) { await fs_extra_1.default.ensureDir(this._selectivityTestsPath); this._directoryCreated = true; } const testDepsPath = (0, utils_1.getTestDependenciesPath)(this._selectivityTestsPath, test); const releaseLock = await proper_lockfile_1.default.lock(testDepsPath, { stale: 5000, update: 1000, retries: { minTimeout: 100, maxTimeout: 1000, retries: 15 }, realpath: false, }); try { const testDeps = await (0, utils_1.readTestDependencies)(this._selectivityTestsPath, test, this._compression); if (areDepsSame(testDeps[test.browserId]?.browser, browserDeps) && areDepsSame(testDeps[test.browserId]?.testplane, testplaneDeps)) { return; } testDeps[test.browserId] = { browser: browserDeps, testplane: testplaneDeps }; (0, utils_1.shallowSortObject)(testDeps); await (0, json_utils_1.writeJsonWithCompression)(testDepsPath, testDeps, this._compression); } finally { await releaseLock(); } } } exports.TestDependenciesWriter = TestDependenciesWriter; exports.getTestDependenciesWriter = (0, lodash_1.memoize)((testDependenciesPath, compression) => { return new TestDependenciesWriter(testDependenciesPath, compression); }, (testDependenciesPath, compression) => `${testDependenciesPath}#${compression}`); //# sourceMappingURL=test-dependencies-writer.js.map