testplane 8.41.2 → 8.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/package.json +1 -1
- package/build/src/browser/cdp/selectivity/css-selectivity.js +4 -1
- package/build/src/browser/cdp/selectivity/css-selectivity.js.map +1 -1
- package/build/src/browser/cdp/selectivity/fs-cache.js +2 -2
- package/build/src/browser/cdp/selectivity/fs-cache.js.map +1 -1
- package/build/src/browser/cdp/selectivity/hash-writer.d.ts +2 -2
- package/build/src/browser/cdp/selectivity/hash-writer.js +18 -59
- package/build/src/browser/cdp/selectivity/hash-writer.js.map +1 -1
- package/build/src/browser/cdp/selectivity/index.d.ts +1 -0
- package/build/src/browser/cdp/selectivity/index.js +68 -3
- package/build/src/browser/cdp/selectivity/index.js.map +1 -1
- package/build/src/browser/cdp/selectivity/js-selectivity.js +13 -20
- package/build/src/browser/cdp/selectivity/js-selectivity.js.map +1 -1
- package/build/src/browser/cdp/selectivity/json-utils.d.ts +5 -0
- package/build/src/browser/cdp/selectivity/json-utils.js +16 -6
- package/build/src/browser/cdp/selectivity/json-utils.js.map +1 -1
- package/build/src/browser/cdp/selectivity/merge-dumps/index.d.ts +2 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/index.js +28 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/index.js.map +1 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/merge-hashes.d.ts +2 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/merge-hashes.js +39 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/merge-hashes.js.map +1 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/merge-tests.d.ts +2 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/merge-tests.js +128 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/merge-tests.js.map +1 -0
- package/build/src/browser/cdp/selectivity/runner.d.ts +3 -0
- package/build/src/browser/cdp/selectivity/runner.js +78 -3
- package/build/src/browser/cdp/selectivity/runner.js.map +1 -1
- package/build/src/browser/cdp/selectivity/testplane-selectivity.js +13 -0
- package/build/src/browser/cdp/selectivity/testplane-selectivity.js.map +1 -1
- package/build/src/browser/cdp/selectivity/types.d.ts +2 -1
- package/build/src/browser/cdp/selectivity/used-dumps-tracker.d.ts +7 -0
- package/build/src/browser/cdp/selectivity/used-dumps-tracker.js +25 -0
- package/build/src/browser/cdp/selectivity/used-dumps-tracker.js.map +1 -0
- package/build/src/browser/cdp/selectivity/utils.d.ts +6 -5
- package/build/src/browser/cdp/selectivity/utils.js +51 -13
- package/build/src/browser/cdp/selectivity/utils.js.map +1 -1
- package/build/src/cli/commands/selectivity-merge-dumps/index.d.ts +2 -0
- package/build/src/cli/commands/selectivity-merge-dumps/index.js +50 -0
- package/build/src/cli/commands/selectivity-merge-dumps/index.js.map +1 -0
- package/build/src/cli/constants.d.ts +1 -0
- package/build/src/cli/constants.js +1 -0
- package/build/src/cli/constants.js.map +1 -1
- package/build/src/config/defaults.d.ts +1 -0
- package/build/src/config/defaults.js +1 -0
- package/build/src/config/defaults.js.map +1 -1
- package/build/src/config/types.d.ts +1 -0
- package/build/src/testplane.js +10 -3
- package/build/src/testplane.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.mergeSelectivityDumps = void 0;
|
|
7
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const merge_hashes_1 = require("./merge-hashes");
|
|
10
|
+
const merge_tests_1 = require("./merge-tests");
|
|
11
|
+
const mergeSelectivityDumps = async (destPath, sourcePaths, preferredCompression) => {
|
|
12
|
+
const destAbsolutePath = path_1.default.resolve(destPath);
|
|
13
|
+
const srcAbsolutePaths = sourcePaths.map(sourcePath => path_1.default.resolve(sourcePath));
|
|
14
|
+
await fs_extra_1.default.ensureDir(destAbsolutePath);
|
|
15
|
+
await fs_extra_1.default.promises.access(destAbsolutePath, fs_extra_1.default.constants.W_OK).catch(cause => {
|
|
16
|
+
throw new Error(`Couldn't get write access to destination directory "${destAbsolutePath}"`, { cause });
|
|
17
|
+
});
|
|
18
|
+
await Promise.all(srcAbsolutePaths.map(srcAbsolutePath => {
|
|
19
|
+
return fs_extra_1.default.promises.access(srcAbsolutePath, fs_extra_1.default.constants.R_OK).catch(cause => {
|
|
20
|
+
throw new Error(`Couldn't get read access to source directory "${srcAbsolutePath}"`, { cause });
|
|
21
|
+
});
|
|
22
|
+
}));
|
|
23
|
+
await (0, merge_hashes_1.mergeHashes)(destAbsolutePath, srcAbsolutePaths, preferredCompression);
|
|
24
|
+
await (0, merge_tests_1.mergeTests)(destAbsolutePath, srcAbsolutePaths, preferredCompression);
|
|
25
|
+
console.info(`Successfully merged selectivity dumps into "${destAbsolutePath}"`);
|
|
26
|
+
};
|
|
27
|
+
exports.mergeSelectivityDumps = mergeSelectivityDumps;
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/browser/cdp/selectivity/merge-dumps/index.ts"],"names":[],"mappings":";;;;;;AAAA,wDAA0B;AAC1B,gDAAwB;AACxB,iDAA6C;AAE7C,+CAA2C;AAEpC,MAAM,qBAAqB,GAAG,KAAK,EACtC,QAAgB,EAChB,WAAqB,EACrB,oBAAgD,EACnC,EAAE;IACf,MAAM,gBAAgB,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjF,MAAM,kBAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAErC,MAAM,kBAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,kBAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACxE,MAAM,IAAI,KAAK,CAAC,uDAAuD,gBAAgB,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3G,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,GAAG,CACb,gBAAgB,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;QACnC,OAAO,kBAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,kBAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACxE,MAAM,IAAI,KAAK,CAAC,iDAAiD,eAAe,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACpG,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,IAAA,0BAAW,EAAC,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,CAAC,CAAC;IAE5E,MAAM,IAAA,wBAAU,EAAC,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,CAAC,CAAC;IAE3E,OAAO,CAAC,IAAI,CAAC,+CAA+C,gBAAgB,GAAG,CAAC,CAAC;AACrF,CAAC,CAAC;AA3BW,QAAA,qBAAqB,yBA2BhC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mergeHashes = void 0;
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
const json_utils_1 = require("../json-utils");
|
|
6
|
+
const mergeHashes = async (destPath, selectivitySrcAbsolutePaths, preferredCompression) => {
|
|
7
|
+
const selectivityHashesDestPath = (0, utils_1.getSelectivityHashesPath)(destPath);
|
|
8
|
+
const sourceHashes = await Promise.all(selectivitySrcAbsolutePaths.map(sourcePath => {
|
|
9
|
+
const selectivityHashesPath = (0, utils_1.getSelectivityHashesPath)(sourcePath);
|
|
10
|
+
return (0, utils_1.readHashFileContents)(selectivityHashesPath, preferredCompression);
|
|
11
|
+
}));
|
|
12
|
+
const result = {
|
|
13
|
+
files: {},
|
|
14
|
+
modules: {},
|
|
15
|
+
patterns: {},
|
|
16
|
+
};
|
|
17
|
+
const mergeFor = (source, hashType) => {
|
|
18
|
+
const destination = result[hashType];
|
|
19
|
+
for (const key in source[hashType]) {
|
|
20
|
+
if (!destination[key]) {
|
|
21
|
+
destination[key] = source[hashType][key];
|
|
22
|
+
}
|
|
23
|
+
else if (destination[key] !== source[hashType][key]) {
|
|
24
|
+
throw new Error([
|
|
25
|
+
`Hashes for "${hashType}" "${key}" are not equal in different chunks`,
|
|
26
|
+
"This could happen if selectivity dumps were generated on different file states",
|
|
27
|
+
].join("\n"));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
for (const sourceHash of sourceHashes) {
|
|
32
|
+
mergeFor(sourceHash, "files");
|
|
33
|
+
mergeFor(sourceHash, "modules");
|
|
34
|
+
mergeFor(sourceHash, "patterns");
|
|
35
|
+
}
|
|
36
|
+
await (0, json_utils_1.writeJsonWithCompression)(selectivityHashesDestPath, result, preferredCompression);
|
|
37
|
+
};
|
|
38
|
+
exports.mergeHashes = mergeHashes;
|
|
39
|
+
//# sourceMappingURL=merge-hashes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-hashes.js","sourceRoot":"","sources":["../../../../../../src/browser/cdp/selectivity/merge-dumps/merge-hashes.ts"],"names":[],"mappings":";;;AAAA,oCAA0E;AAE1E,8CAAyD;AAElD,MAAM,WAAW,GAAG,KAAK,EAC5B,QAAgB,EAChB,2BAAqC,EACrC,oBAAgD,EACnC,EAAE;IACf,MAAM,yBAAyB,GAAG,IAAA,gCAAwB,EAAC,QAAQ,CAAC,CAAC;IACrE,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,2BAA2B,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;QACzC,MAAM,qBAAqB,GAAG,IAAA,gCAAwB,EAAC,UAAU,CAAC,CAAC;QAEnE,OAAO,IAAA,4BAAoB,EAAC,qBAAqB,EAAE,oBAAoB,CAAC,CAAC;IAC7E,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,MAAM,GAAqB;QAC7B,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;KACf,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,MAAwB,EAAE,QAAgC,EAAQ,EAAE;QAClF,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpB,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;YAC7C,CAAC;iBAAM,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,KAAK,CACX;oBACI,eAAe,QAAQ,MAAM,GAAG,qCAAqC;oBACrE,gFAAgF;iBACnF,CAAC,IAAI,CAAC,IAAI,CAAC,CACf,CAAC;YACN,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;QACpC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC9B,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAChC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,IAAA,qCAAwB,EAAC,yBAAyB,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;AAC5F,CAAC,CAAC;AA3CW,QAAA,WAAW,eA2CtB"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.mergeTests = void 0;
|
|
30
|
+
const p_limit_1 = __importDefault(require("p-limit"));
|
|
31
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
32
|
+
const path_1 = __importDefault(require("path"));
|
|
33
|
+
const logger = __importStar(require("../../../../utils/logger"));
|
|
34
|
+
const utils_1 = require("../utils");
|
|
35
|
+
const json_utils_1 = require("../json-utils");
|
|
36
|
+
const getUniqTestFiles = async (srcTestPaths) => {
|
|
37
|
+
const summaryResult = new Set();
|
|
38
|
+
const testPathResults = srcTestPaths.map(() => new Set());
|
|
39
|
+
await Promise.all(srcTestPaths.map(async (srcTestPath, idx) => {
|
|
40
|
+
if (!fs_extra_1.default.existsSync(srcTestPath)) {
|
|
41
|
+
logger.warn(`Skipping "${srcTestPath}" as it does not exist`);
|
|
42
|
+
}
|
|
43
|
+
const files = await fs_extra_1.default.readdir(srcTestPath);
|
|
44
|
+
files.forEach(file => {
|
|
45
|
+
const baseFilePath = (0, json_utils_1.stripCompressionSuffix)(file);
|
|
46
|
+
summaryResult.add(baseFilePath);
|
|
47
|
+
testPathResults[idx].add(baseFilePath);
|
|
48
|
+
});
|
|
49
|
+
}));
|
|
50
|
+
return [summaryResult, testPathResults];
|
|
51
|
+
};
|
|
52
|
+
const getFullTestPath = (sourceBasePath, preferredCompression) => {
|
|
53
|
+
const sourcePath = (0, json_utils_1.getExistingJsonPathWithCompression)(sourceBasePath, preferredCompression).jsonPath;
|
|
54
|
+
if (!sourcePath) {
|
|
55
|
+
throw new Error([
|
|
56
|
+
`Can't merge reports: no suitable source file was found by "${sourceBasePath}" base`,
|
|
57
|
+
`It can happen if it was compressed with unsupported compression type, or if the file was removed during command run`,
|
|
58
|
+
"If selectivity dump was created with node.js v22+, ensure you are currently is using it too",
|
|
59
|
+
].join("\n"));
|
|
60
|
+
}
|
|
61
|
+
return sourcePath;
|
|
62
|
+
};
|
|
63
|
+
const mergeJsonTestContents = (testContents) => {
|
|
64
|
+
const result = {};
|
|
65
|
+
for (const testContent of testContents) {
|
|
66
|
+
for (const browserId in testContent) {
|
|
67
|
+
result[browserId] ||= {};
|
|
68
|
+
for (const dependencyScope in testContent[browserId]) {
|
|
69
|
+
result[browserId][dependencyScope] ||= {
|
|
70
|
+
css: [],
|
|
71
|
+
js: [],
|
|
72
|
+
modules: [],
|
|
73
|
+
};
|
|
74
|
+
for (const dependencyType in testContent[browserId][dependencyScope]) {
|
|
75
|
+
const depType = dependencyType;
|
|
76
|
+
for (const dependency of testContent[browserId][dependencyScope][depType]) {
|
|
77
|
+
result[browserId][dependencyScope][depType].push(dependency);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
(0, utils_1.shallowSortObject)(result);
|
|
84
|
+
for (const browserId in result) {
|
|
85
|
+
(0, utils_1.shallowSortObject)(result[browserId]);
|
|
86
|
+
for (const dependencyScope in result[browserId]) {
|
|
87
|
+
for (const dependencyType in result[browserId][dependencyScope]) {
|
|
88
|
+
const depType = dependencyType;
|
|
89
|
+
const depSet = new Set(result[browserId][dependencyScope][depType]);
|
|
90
|
+
result[browserId][dependencyScope][depType] = Array.from(depSet).sort((a, b) => a.localeCompare(b));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return result;
|
|
95
|
+
};
|
|
96
|
+
const mergeTests = async (destPath, selectivitySrcAbsolutePaths, preferredCompression) => {
|
|
97
|
+
const selectivityTestsDestPath = (0, utils_1.getSelectivityTestsPath)(destPath);
|
|
98
|
+
const srcTestPaths = selectivitySrcAbsolutePaths.map(utils_1.getSelectivityTestsPath);
|
|
99
|
+
const [allSrcTests, srcTests] = await getUniqTestFiles(srcTestPaths);
|
|
100
|
+
const limited = (0, p_limit_1.default)(32);
|
|
101
|
+
const fsPromises = [];
|
|
102
|
+
await fs_extra_1.default.ensureDir(selectivityTestsDestPath);
|
|
103
|
+
allSrcTests.forEach(fileBase => {
|
|
104
|
+
const fileProviders = srcTestPaths.filter((_, idx) => srcTests[idx].has(fileBase));
|
|
105
|
+
if (fileProviders.length === 1) {
|
|
106
|
+
const sourceBasePath = path_1.default.join(fileProviders[0], fileBase);
|
|
107
|
+
const sourcePath = getFullTestPath(sourceBasePath, preferredCompression);
|
|
108
|
+
const destinationPath = path_1.default.join(selectivityTestsDestPath, path_1.default.basename(sourcePath));
|
|
109
|
+
fsPromises.push(limited(() => fs_extra_1.default.copyFile(sourcePath, destinationPath)));
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
fsPromises.push((async () => {
|
|
113
|
+
const testContents = await Promise.all(fileProviders.map(providerPath => {
|
|
114
|
+
const sourceBasePath = path_1.default.join(providerPath, fileBase);
|
|
115
|
+
return limited(() => (0, json_utils_1.readJsonWithCompression)(sourceBasePath, preferredCompression).catch(cause => {
|
|
116
|
+
throw new Error(`Couldn't read "${sourceBasePath}" with compression`, { cause });
|
|
117
|
+
}));
|
|
118
|
+
}));
|
|
119
|
+
const mergedResult = mergeJsonTestContents(testContents);
|
|
120
|
+
const destinationBasePath = path_1.default.join(selectivityTestsDestPath, fileBase);
|
|
121
|
+
return limited(() => (0, json_utils_1.writeJsonWithCompression)(destinationBasePath, mergedResult, preferredCompression));
|
|
122
|
+
})());
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
await Promise.all(fsPromises);
|
|
126
|
+
};
|
|
127
|
+
exports.mergeTests = mergeTests;
|
|
128
|
+
//# sourceMappingURL=merge-tests.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-tests.js","sourceRoot":"","sources":["../../../../../../src/browser/cdp/selectivity/merge-dumps/merge-tests.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,10 +12,13 @@ export declare class SelectivityRunner {
|
|
|
12
12
|
private readonly _testsToRun;
|
|
13
13
|
private readonly _processingTestLimit;
|
|
14
14
|
private readonly _processingTestPromises;
|
|
15
|
+
private readonly _stats;
|
|
16
|
+
private readonly _usedDumpsTracker;
|
|
15
17
|
static create(...args: ConstructorParameters<typeof this>): SelectivityRunner;
|
|
16
18
|
constructor(mainRunner: MainRunner, config: Config, runTestFn: (test: Test, browserId: string) => void, opts?: SelectivityRunnerOptions);
|
|
17
19
|
private _shouldDisableSelectivityForBrowser;
|
|
18
20
|
startTestCheckToRun(test: Test, browserId: string): void;
|
|
19
21
|
runNecessaryTests(): Promise<void>;
|
|
22
|
+
_saveSelectivityReport(): Promise<void>;
|
|
20
23
|
}
|
|
21
24
|
export {};
|
|
@@ -1,17 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
27
|
};
|
|
5
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
29
|
exports.SelectivityRunner = void 0;
|
|
7
30
|
const lodash_1 = __importDefault(require("lodash"));
|
|
31
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
32
|
const p_limit_1 = __importDefault(require("p-limit"));
|
|
33
|
+
const logger = __importStar(require("../../../utils/logger"));
|
|
9
34
|
const debug_1 = require("./debug");
|
|
10
35
|
const hash_reader_1 = require("./hash-reader");
|
|
11
36
|
const events_1 = require("../../../events");
|
|
12
37
|
const hash_writer_1 = require("./hash-writer");
|
|
13
38
|
const test_dependencies_reader_1 = require("./test-dependencies-reader");
|
|
14
39
|
const modes_1 = require("./modes");
|
|
40
|
+
const used_dumps_tracker_1 = require("./used-dumps-tracker");
|
|
41
|
+
const utils_1 = require("./utils");
|
|
15
42
|
/** Called at the start of testplane run per each browser */
|
|
16
43
|
const shouldDisableBrowserSelectivity = lodash_1.default.memoize(async (config, browserId) => {
|
|
17
44
|
if (!(0, modes_1.selectivityShouldRead)(config.selectivity.enabled)) {
|
|
@@ -90,6 +117,8 @@ class SelectivityRunner {
|
|
|
90
117
|
this._testsToRun = [];
|
|
91
118
|
this._processingTestLimit = (0, p_limit_1.default)(16);
|
|
92
119
|
this._processingTestPromises = [];
|
|
120
|
+
this._stats = {};
|
|
121
|
+
this._usedDumpsTracker = (0, used_dumps_tracker_1.getUsedDumpsTracker)();
|
|
93
122
|
this._config = config;
|
|
94
123
|
this._runTestFn = runTestFn;
|
|
95
124
|
this._opts = opts;
|
|
@@ -111,9 +140,15 @@ class SelectivityRunner {
|
|
|
111
140
|
startTestCheckToRun(test, browserId) {
|
|
112
141
|
const browserConfig = this._config.forBrowser(browserId);
|
|
113
142
|
const shouldSelectivelySkipTests = (0, modes_1.selectivityShouldRead)(browserConfig.selectivity.enabled);
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
143
|
+
const shouldUpdateSelectivityState = (0, modes_1.selectivityShouldWrite)(browserConfig.selectivity.enabled);
|
|
144
|
+
if (this._opts?.shouldDisableSelectivity || test.disabled) {
|
|
145
|
+
this._testsToRun.push([test, browserId]);
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
if (shouldUpdateSelectivityState) {
|
|
149
|
+
this._usedDumpsTracker.trackUsed((0, utils_1.getTestSelectivityDumpId)(test), browserConfig.selectivity.testDependenciesPath);
|
|
150
|
+
}
|
|
151
|
+
if (!shouldSelectivelySkipTests) {
|
|
117
152
|
this._testsToRun.push([test, browserId]);
|
|
118
153
|
return;
|
|
119
154
|
}
|
|
@@ -123,14 +158,25 @@ class SelectivityRunner {
|
|
|
123
158
|
this._testsToRun.push([test, browserId]);
|
|
124
159
|
return;
|
|
125
160
|
}
|
|
161
|
+
this._stats[browserId] ||= {
|
|
162
|
+
processedCount: 0,
|
|
163
|
+
skippedCount: 0,
|
|
164
|
+
};
|
|
165
|
+
this._stats[browserId].processedCount++;
|
|
126
166
|
const shouldDisableTest = await shouldDisableTestBySelectivity(browserConfig, test);
|
|
127
167
|
if (!shouldDisableTest) {
|
|
128
168
|
this._testsToRun.push([test, browserId]);
|
|
129
169
|
}
|
|
170
|
+
else {
|
|
171
|
+
this._stats[browserId].skippedCount++;
|
|
172
|
+
}
|
|
130
173
|
}));
|
|
131
174
|
}
|
|
132
175
|
async runNecessaryTests() {
|
|
133
176
|
await Promise.all(this._processingTestPromises);
|
|
177
|
+
const saveReportPromise = this._saveSelectivityReport().catch(reason => {
|
|
178
|
+
logger.error("Couldn't save selectivity report. Reason:", reason);
|
|
179
|
+
});
|
|
134
180
|
this._testsToRun.forEach(([test, browserId]) => {
|
|
135
181
|
this._runTestFn(test, browserId);
|
|
136
182
|
});
|
|
@@ -143,6 +189,35 @@ class SelectivityRunner {
|
|
|
143
189
|
const { selectivity } = this._config.forBrowser(browserId);
|
|
144
190
|
(0, hash_reader_1.getHashReader)(selectivity.testDependenciesPath, selectivity.compression).clearCache();
|
|
145
191
|
});
|
|
192
|
+
await saveReportPromise;
|
|
193
|
+
}
|
|
194
|
+
async _saveSelectivityReport() {
|
|
195
|
+
const browserReportPaths = Object.keys(this._stats).reduce((acc, browserId) => {
|
|
196
|
+
const reportPath = process.env.TESTPLANE_SELECTIVITY_REPORT_PATH ||
|
|
197
|
+
this._config.forBrowser(browserId).selectivity.reportPath;
|
|
198
|
+
if (reportPath) {
|
|
199
|
+
acc[reportPath] ||= [];
|
|
200
|
+
acc[reportPath].push(browserId);
|
|
201
|
+
}
|
|
202
|
+
return acc;
|
|
203
|
+
}, {});
|
|
204
|
+
const promises = await Promise.allSettled(Object.keys(browserReportPaths).map(async (reportPath) => {
|
|
205
|
+
const report = {
|
|
206
|
+
totalProcessedCount: 0,
|
|
207
|
+
totalSkippedCount: 0,
|
|
208
|
+
perBrowserStats: {},
|
|
209
|
+
};
|
|
210
|
+
for (const browserId of browserReportPaths[reportPath]) {
|
|
211
|
+
report.totalProcessedCount += this._stats[browserId].processedCount;
|
|
212
|
+
report.totalSkippedCount += this._stats[browserId].skippedCount;
|
|
213
|
+
report.perBrowserStats[browserId] = this._stats[browserId];
|
|
214
|
+
}
|
|
215
|
+
await fs_extra_1.default.outputJson(reportPath, report, { spaces: 4 });
|
|
216
|
+
}));
|
|
217
|
+
const failedPromise = promises.find(promise => promise.status === "rejected");
|
|
218
|
+
if (failedPromise && "reason" in failedPromise) {
|
|
219
|
+
throw failedPromise.reason;
|
|
220
|
+
}
|
|
146
221
|
}
|
|
147
222
|
}
|
|
148
223
|
exports.SelectivityRunner = SelectivityRunner;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ const debug_1 = require("./debug");
|
|
|
13
13
|
const TypedModule = module_1.Module;
|
|
14
14
|
const testDependenciesStorage = new async_hooks_1.AsyncLocalStorage();
|
|
15
15
|
const testFileDependenciesRamCache = new Map();
|
|
16
|
+
const testFileLocks = {};
|
|
16
17
|
let disableCollectingDependenciesCb = null;
|
|
17
18
|
const disableCollectingTestplaneDependencies = () => {
|
|
18
19
|
if (disableCollectingDependenciesCb) {
|
|
@@ -69,13 +70,24 @@ const readTestFileWithTestplaneDependenciesCollecting = async (file, fn) => {
|
|
|
69
70
|
if (!jsTestplaneDeps) {
|
|
70
71
|
return fn();
|
|
71
72
|
}
|
|
73
|
+
if (file in testFileLocks) {
|
|
74
|
+
await testFileLocks[file];
|
|
75
|
+
}
|
|
76
|
+
let releaseLock = () => { };
|
|
77
|
+
testFileLocks[file] = new Promise(resolve => {
|
|
78
|
+
releaseLock = resolve;
|
|
79
|
+
}).finally(() => {
|
|
80
|
+
delete testFileLocks[file];
|
|
81
|
+
});
|
|
72
82
|
const ramCachedDependencies = testFileDependenciesRamCache.get(file);
|
|
73
83
|
if (ramCachedDependencies) {
|
|
84
|
+
releaseLock();
|
|
74
85
|
ramCachedDependencies.forEach(dependency => jsTestplaneDeps.add(dependency));
|
|
75
86
|
return fn();
|
|
76
87
|
}
|
|
77
88
|
const fsCachedDependencies = await (0, fs_cache_1.getCachedSelectivityFile)(fs_cache_1.CacheType.TestFile, file);
|
|
78
89
|
if (fsCachedDependencies) {
|
|
90
|
+
releaseLock();
|
|
79
91
|
let parsedDependencies;
|
|
80
92
|
try {
|
|
81
93
|
parsedDependencies = JSON.parse(fsCachedDependencies);
|
|
@@ -95,6 +107,7 @@ const readTestFileWithTestplaneDependenciesCollecting = async (file, fn) => {
|
|
|
95
107
|
testFileDependenciesRamCache.set(file, cacheValue);
|
|
96
108
|
(0, debug_1.debugSelectivity)(`Couldn't offload test dependencies from "${file}" to fs-cache: %O`, err);
|
|
97
109
|
});
|
|
110
|
+
releaseLock();
|
|
98
111
|
}
|
|
99
112
|
};
|
|
100
113
|
exports.readTestFileWithTestplaneDependenciesCollecting = readTestFileWithTestplaneDependenciesCollecting;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testplane-selectivity.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/testplane-selectivity.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,mCAAiD;AACjD,6CAAgD;AAChD,yCAA2F;AAC3F,mCAA2C;AAE3C,8DAA8D;AAC9D,MAAM,WAAW,GAAG,eAAiF,CAAC;AACtG,MAAM,uBAAuB,GAAG,IAAI,+BAAiB,EAAqC,CAAC;AAC3F,MAAM,4BAA4B,GAAG,IAAI,GAAG,EAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"testplane-selectivity.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/testplane-selectivity.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ export type HashFileContents = {
|
|
|
18
18
|
modules: Record<string, string>;
|
|
19
19
|
patterns: Record<string, string>;
|
|
20
20
|
};
|
|
21
|
+
export type TestDependenciesFileContents = Record<string, Record<string, NormalizedDependencies>>;
|
|
21
22
|
export type CachedOnFs = true;
|
|
22
23
|
export type ActualValue = string;
|
|
23
|
-
export type SelectivityAssetState = Promise<CachedOnFs | ActualValue | Error | null>;
|
|
24
|
+
export type SelectivityAssetState = null | Promise<CachedOnFs | ActualValue | Error | null>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare class UsedDumpsTracker {
|
|
2
|
+
private _usedDumpsPerSelectivityRoot;
|
|
3
|
+
trackUsed(dumpId: string, testDependenciesPath: string): void;
|
|
4
|
+
usedDumpsFor(testDependenciesPath: string): boolean;
|
|
5
|
+
wasUsed(dumpId: string, testDependenciesPath: string): boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare const getUsedDumpsTracker: () => UsedDumpsTracker;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getUsedDumpsTracker = exports.UsedDumpsTracker = void 0;
|
|
4
|
+
const lodash_1 = require("lodash");
|
|
5
|
+
class UsedDumpsTracker {
|
|
6
|
+
constructor() {
|
|
7
|
+
this._usedDumpsPerSelectivityRoot = {};
|
|
8
|
+
}
|
|
9
|
+
trackUsed(dumpId, testDependenciesPath) {
|
|
10
|
+
this._usedDumpsPerSelectivityRoot[testDependenciesPath] ||= new Set();
|
|
11
|
+
this._usedDumpsPerSelectivityRoot[testDependenciesPath].add(dumpId);
|
|
12
|
+
}
|
|
13
|
+
usedDumpsFor(testDependenciesPath) {
|
|
14
|
+
if (!this._usedDumpsPerSelectivityRoot[testDependenciesPath]) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
return Boolean(this._usedDumpsPerSelectivityRoot[testDependenciesPath].size);
|
|
18
|
+
}
|
|
19
|
+
wasUsed(dumpId, testDependenciesPath) {
|
|
20
|
+
return this._usedDumpsPerSelectivityRoot[testDependenciesPath]?.has(dumpId) || false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.UsedDumpsTracker = UsedDumpsTracker;
|
|
24
|
+
exports.getUsedDumpsTracker = (0, lodash_1.once)(() => new UsedDumpsTracker());
|
|
25
|
+
//# sourceMappingURL=used-dumps-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"used-dumps-tracker.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/used-dumps-tracker.ts"],"names":[],"mappings":";;;AAAA,mCAA8B;AAE9B,MAAa,gBAAgB;IAA7B;QACY,iCAA4B,GAAgC,EAAE,CAAC;IAkB3E,CAAC;IAhBG,SAAS,CAAC,MAAc,EAAE,oBAA4B;QAClD,IAAI,CAAC,4BAA4B,CAAC,oBAAoB,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC;QACtE,IAAI,CAAC,4BAA4B,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC;IAED,YAAY,CAAC,oBAA4B;QACrC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAC3D,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,oBAA4B;QAChD,OAAO,IAAI,CAAC,4BAA4B,CAAC,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;IACzF,CAAC;CACJ;AAnBD,4CAmBC;AAEY,QAAA,mBAAmB,GAAG,IAAA,aAAI,EAAC,GAAG,EAAE,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type RawSourceMap } from "source-map-js";
|
|
2
2
|
import type { CDPRuntime } from "../domains/runtime";
|
|
3
|
-
import type { CDPSessionId } from "../types";
|
|
4
|
-
import type { HashFileContents, NormalizedDependencies, SelectivityCompressionType } from "./types";
|
|
3
|
+
import type { CDPScriptCoverage, CDPSessionId } from "../types";
|
|
4
|
+
import type { HashFileContents, NormalizedDependencies, SelectivityCompressionType, TestDependenciesFileContents } from "./types";
|
|
5
5
|
import type { Test } from "../../../types";
|
|
6
6
|
/**
|
|
7
7
|
* Tries to fetch text by url from node.js, then falls back to "fetch" from browser, if node.js fetch fails
|
|
@@ -23,10 +23,10 @@ export declare const patchSourceMapSources: (sourceMap: RawSourceMap, sourceRoot
|
|
|
23
23
|
* Useful for turning coverage ranges into real TS/JS module dependencies
|
|
24
24
|
* @param source Compiled source code
|
|
25
25
|
* @param sourceMaps Source maps JSON string
|
|
26
|
-
* @param
|
|
26
|
+
* @param coverages CDP script coverages
|
|
27
27
|
* @param sourceRoot Source root
|
|
28
28
|
*/
|
|
29
|
-
export declare const extractSourceFilesDeps: (source: string, sourceMaps: string,
|
|
29
|
+
export declare const extractSourceFilesDeps: (source: string, sourceMaps: string, coverages: CDPScriptCoverage[], sourceRoot: string, sourceFilterFn?: ((sourceFileName: string) => boolean) | undefined) => Set<string>;
|
|
30
30
|
/**
|
|
31
31
|
* @returns True, if fileUrlLikePath has some kind of protocol ("data://", "webpack://", "turbopack://", "file://")...
|
|
32
32
|
*/
|
|
@@ -44,7 +44,8 @@ export declare const shallowSortObject: (obj: Record<string, unknown>) => void;
|
|
|
44
44
|
export declare const getSelectivityHashesPath: (testDependenciesPath: string) => string;
|
|
45
45
|
export declare const readHashFileContents: (selectivityHashesPath: string, compression: SelectivityCompressionType) => Promise<HashFileContents>;
|
|
46
46
|
export declare const getSelectivityTestsPath: (testDependenciesPath: string) => string;
|
|
47
|
+
export declare const getTestSelectivityDumpId: (test: Test) => string;
|
|
47
48
|
export declare const getTestDependenciesPath: (selectivityTestsPath: string, test: Test) => string;
|
|
48
49
|
/** @returns `Promise<Record<BrowserID, Record<DepType, NormalizedDependencies>>>` */
|
|
49
|
-
export declare const readTestDependencies: (selectivityTestsPath: string, test: Test, compression: SelectivityCompressionType) => Promise<
|
|
50
|
+
export declare const readTestDependencies: (selectivityTestsPath: string, test: Test, compression: SelectivityCompressionType) => Promise<TestDependenciesFileContents>;
|
|
50
51
|
export declare const isCachedOnFs: (value: unknown) => value is true;
|