testplane 8.35.1 → 8.36.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.
Files changed (70) hide show
  1. package/build/package.json +3 -1
  2. package/build/src/browser/cdp/selectivity/debug.d.ts +2 -0
  3. package/build/src/browser/cdp/selectivity/debug.js +9 -0
  4. package/build/src/browser/cdp/selectivity/debug.js.map +1 -0
  5. package/build/src/browser/cdp/selectivity/hash-provider.d.ts +6 -0
  6. package/build/src/browser/cdp/selectivity/hash-provider.js +81 -0
  7. package/build/src/browser/cdp/selectivity/hash-provider.js.map +1 -0
  8. package/build/src/browser/cdp/selectivity/hash-reader.d.ts +17 -0
  9. package/build/src/browser/cdp/selectivity/hash-reader.js +70 -0
  10. package/build/src/browser/cdp/selectivity/hash-reader.js.map +1 -0
  11. package/build/src/browser/cdp/selectivity/hash-writer.d.ts +18 -0
  12. package/build/src/browser/cdp/selectivity/hash-writer.js +141 -0
  13. package/build/src/browser/cdp/selectivity/hash-writer.js.map +1 -0
  14. package/build/src/browser/cdp/selectivity/index.d.ts +6 -0
  15. package/build/src/browser/cdp/selectivity/index.js +45 -11
  16. package/build/src/browser/cdp/selectivity/index.js.map +1 -1
  17. package/build/src/browser/cdp/selectivity/runner.d.ts +19 -0
  18. package/build/src/browser/cdp/selectivity/runner.js +129 -0
  19. package/build/src/browser/cdp/selectivity/runner.js.map +1 -0
  20. package/build/src/browser/cdp/selectivity/test-dependencies-reader.d.ts +10 -0
  21. package/build/src/browser/cdp/selectivity/test-dependencies-reader.js +41 -0
  22. package/build/src/browser/cdp/selectivity/test-dependencies-reader.js.map +1 -0
  23. package/build/src/browser/cdp/selectivity/test-dependencies-writer.d.ts +2 -2
  24. package/build/src/browser/cdp/selectivity/test-dependencies-writer.js +25 -14
  25. package/build/src/browser/cdp/selectivity/test-dependencies-writer.js.map +1 -1
  26. package/build/src/browser/cdp/selectivity/testplane-selectivity.d.ts +1 -0
  27. package/build/src/browser/cdp/selectivity/testplane-selectivity.js +29 -9
  28. package/build/src/browser/cdp/selectivity/testplane-selectivity.js.map +1 -1
  29. package/build/src/browser/cdp/selectivity/types.d.ts +5 -0
  30. package/build/src/browser/cdp/selectivity/utils.d.ts +8 -1
  31. package/build/src/browser/cdp/selectivity/utils.js +66 -3
  32. package/build/src/browser/cdp/selectivity/utils.js.map +1 -1
  33. package/build/src/bundle/cjs/index.js +207 -108
  34. package/build/src/config/browser-options.js +7 -2
  35. package/build/src/config/browser-options.js.map +1 -1
  36. package/build/src/config/defaults.d.ts +1 -0
  37. package/build/src/config/defaults.js +1 -0
  38. package/build/src/config/defaults.js.map +1 -1
  39. package/build/src/config/options.js +1 -2
  40. package/build/src/config/options.js.map +1 -1
  41. package/build/src/config/types.d.ts +1 -0
  42. package/build/src/config/utils.d.ts +3 -0
  43. package/build/src/config/utils.js +14 -1
  44. package/build/src/config/utils.js.map +1 -1
  45. package/build/src/constants/config.d.ts +1 -0
  46. package/build/src/constants/config.js +2 -1
  47. package/build/src/constants/config.js.map +1 -1
  48. package/build/src/events/index.d.ts +4 -0
  49. package/build/src/events/index.js +1 -0
  50. package/build/src/events/index.js.map +1 -1
  51. package/build/src/runner/index.d.ts +5 -2
  52. package/build/src/runner/index.js +11 -4
  53. package/build/src/runner/index.js.map +1 -1
  54. package/build/src/testplane.js +8 -1
  55. package/build/src/testplane.js.map +1 -1
  56. package/build/src/types/index.d.ts +11 -0
  57. package/build/src/types/index.js.map +1 -1
  58. package/build/src/utils/typescript.js +3 -0
  59. package/build/src/utils/typescript.js.map +1 -1
  60. package/build/src/utils/workers-registry.js +4 -0
  61. package/build/src/utils/workers-registry.js.map +1 -1
  62. package/build/src/worker/runner/index.js +7 -5
  63. package/build/src/worker/runner/index.js.map +1 -1
  64. package/package.json +3 -1
  65. package/build/src/browser/cdp/selectivity/file-hash-provider.d.ts +0 -4
  66. package/build/src/browser/cdp/selectivity/file-hash-provider.js +0 -28
  67. package/build/src/browser/cdp/selectivity/file-hash-provider.js.map +0 -1
  68. package/build/src/browser/cdp/selectivity/file-hash-writer.d.ts +0 -17
  69. package/build/src/browser/cdp/selectivity/file-hash-writer.js +0 -123
  70. package/build/src/browser/cdp/selectivity/file-hash-writer.js.map +0 -1
@@ -0,0 +1,129 @@
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.SelectivityRunner = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ const debug_1 = require("./debug");
9
+ const hash_reader_1 = require("./hash-reader");
10
+ const events_1 = require("../../../events");
11
+ const hash_writer_1 = require("./hash-writer");
12
+ const test_dependencies_reader_1 = require("./test-dependencies-reader");
13
+ /** Called at the start of testplane run per each browser */
14
+ const shouldDisableBrowserSelectivity = lodash_1.default.memoize(async (config, browserId) => {
15
+ if (!config.selectivity.enabled) {
16
+ return true;
17
+ }
18
+ if (!config.selectivity.disableSelectivityPatterns.length) {
19
+ return false;
20
+ }
21
+ const hashReader = (0, hash_reader_1.getHashReader)(config.selectivity.testDependenciesPath, config.selectivity.compression);
22
+ return new Promise(resolve => {
23
+ let isSettled = false;
24
+ Promise.all(config.selectivity.disableSelectivityPatterns.map(pattern => {
25
+ return hashReader
26
+ .patternHasChanged(pattern)
27
+ .then(hasChanged => {
28
+ if (hasChanged && !isSettled) {
29
+ isSettled = true;
30
+ (0, debug_1.debugSelectivity)(`Disabling selectivity for ${browserId}: file change by pattern "${pattern}" is detected`);
31
+ resolve(true);
32
+ }
33
+ })
34
+ .catch(err => {
35
+ if (!isSettled) {
36
+ isSettled = true;
37
+ (0, debug_1.debugSelectivity)(`Disabling selectivity for ${browserId}: got an error while checking 'disableSelectivityPatterns': %O`, err);
38
+ resolve(true);
39
+ }
40
+ });
41
+ })).then(() => {
42
+ if (!isSettled) {
43
+ (0, debug_1.debugSelectivity)(`None of 'disableSelectivityPatterns' is changed for ${browserId}`);
44
+ resolve(false);
45
+ }
46
+ });
47
+ });
48
+ }, config => {
49
+ const { enabled, testDependenciesPath, compression, disableSelectivityPatterns } = config.selectivity;
50
+ return enabled
51
+ ? enabled + "#" + testDependenciesPath + "#" + compression + "#" + disableSelectivityPatterns.join("#")
52
+ : "";
53
+ });
54
+ const shouldDisableTestBySelectivity = lodash_1.default.memoize(async (config, test) => {
55
+ const { enabled, testDependenciesPath, compression } = config.selectivity;
56
+ if (!enabled) {
57
+ return false;
58
+ }
59
+ const testDepsReader = (0, test_dependencies_reader_1.getTestDependenciesReader)(testDependenciesPath, compression);
60
+ const hashReader = (0, hash_reader_1.getHashReader)(testDependenciesPath, compression);
61
+ const testDeps = await testDepsReader.getFor(test);
62
+ if (!testDeps.js.length) {
63
+ (0, debug_1.debugSelectivity)(`Not disabling "${test.fullTitle()}" as it has no js deps and therefore it was considered as new`);
64
+ return false;
65
+ }
66
+ const changedDeps = await hashReader.getTestChangedDeps(testDeps);
67
+ if (changedDeps) {
68
+ (0, debug_1.debugSelectivity)(`Not disabling "${test.fullTitle()}" as its dependencies were changed: %O`, changedDeps);
69
+ }
70
+ else {
71
+ (0, debug_1.debugSelectivity)(`Disabling "${test.fullTitle()}" as its dependencies were not changed`);
72
+ }
73
+ return !changedDeps;
74
+ }, (config, test) => {
75
+ const { enabled, testDependenciesPath, compression } = config.selectivity;
76
+ return enabled ? enabled + "#" + testDependenciesPath + "#" + compression + "#" + test.id : "";
77
+ });
78
+ const onTestDependencies = (context, data) => {
79
+ const hashWriter = (0, hash_writer_1.getHashWriter)(context.testDependenciesPath, context.compression);
80
+ hashWriter.addTestDependencyHashes(data);
81
+ };
82
+ class SelectivityRunner {
83
+ static create(...args) {
84
+ return new this(...args);
85
+ }
86
+ constructor(mainRunner, config, runTestFn, opts) {
87
+ this._browserSelectivityDisabledCache = {};
88
+ this._processingTestPromises = [];
89
+ this._config = config;
90
+ this._runTestFn = runTestFn;
91
+ this._opts = opts;
92
+ if (this._opts?.shouldDisableSelectivity) {
93
+ (0, debug_1.debugSelectivity)("Test filter is specified, disabling selectivity");
94
+ }
95
+ else {
96
+ mainRunner.on(events_1.MasterEvents.TEST_DEPENDENCIES, onTestDependencies);
97
+ }
98
+ }
99
+ _shouldDisableSelectivityForBrowser(browserId) {
100
+ if (this._browserSelectivityDisabledCache[browserId]) {
101
+ return this._browserSelectivityDisabledCache[browserId];
102
+ }
103
+ const browserConfig = this._config.forBrowser(browserId);
104
+ this._browserSelectivityDisabledCache[browserId] = shouldDisableBrowserSelectivity(browserConfig, browserId);
105
+ return this._browserSelectivityDisabledCache[browserId];
106
+ }
107
+ runIfNecessary(test, browserId) {
108
+ const browserConfig = this._config.forBrowser(browserId);
109
+ const isSelectivityEnabledForBrowser = browserConfig.selectivity.enabled;
110
+ if (!isSelectivityEnabledForBrowser || this._opts?.shouldDisableSelectivity) {
111
+ return this._runTestFn(test, browserId);
112
+ }
113
+ this._processingTestPromises.push((async () => {
114
+ const shouldDisableBrowserSelectivity = await this._shouldDisableSelectivityForBrowser(browserId);
115
+ if (shouldDisableBrowserSelectivity) {
116
+ return this._runTestFn(test, browserId);
117
+ }
118
+ const shouldDisableTest = await shouldDisableTestBySelectivity(browserConfig, test);
119
+ if (!shouldDisableTest) {
120
+ this._runTestFn(test, browserId);
121
+ }
122
+ })());
123
+ }
124
+ waitForTestsToRun() {
125
+ return Promise.all(this._processingTestPromises);
126
+ }
127
+ }
128
+ exports.SelectivityRunner = SelectivityRunner;
129
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /// <reference types="lodash" />
2
+ import type { Test } from "../../../types";
3
+ import type { NormalizedDependencies, SelectivityCompressionType } from "./types";
4
+ export declare class TestDependenciesReader {
5
+ private readonly _selectivityTestsPath;
6
+ private readonly _compression;
7
+ constructor(selectivityRootPath: string, compression: SelectivityCompressionType);
8
+ getFor(test: Test): Promise<NormalizedDependencies>;
9
+ }
10
+ export declare const getTestDependenciesReader: ((selectivityRootPath: string, compression: SelectivityCompressionType) => TestDependenciesReader) & import("lodash").MemoizedFunction;
@@ -0,0 +1,41 @@
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.getTestDependenciesReader = exports.TestDependenciesReader = void 0;
7
+ const lodash_1 = require("lodash");
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const utils_1 = require("./utils");
10
+ class TestDependenciesReader {
11
+ constructor(selectivityRootPath, compression) {
12
+ this._selectivityTestsPath = node_path_1.default.join(selectivityRootPath, "tests");
13
+ this._compression = compression;
14
+ }
15
+ async getFor(test) {
16
+ const testDeps = await (0, utils_1.readTestDependencies)(this._selectivityTestsPath, test, this._compression);
17
+ let result = { css: [], js: [], modules: [] };
18
+ for (const browserId of Object.keys(testDeps)) {
19
+ const depTypes = Object.keys(testDeps[browserId]);
20
+ if (!depTypes.length) {
21
+ continue;
22
+ }
23
+ else if (depTypes.length === 1) {
24
+ result = (0, utils_1.mergeSourceDependencies)(result, testDeps[browserId][depTypes[0]]);
25
+ }
26
+ else {
27
+ let browserDeps = testDeps[browserId][depTypes[0]];
28
+ for (let i = 1; i < depTypes.length; i++) {
29
+ browserDeps = (0, utils_1.mergeSourceDependencies)(browserDeps, testDeps[browserId][depTypes[i]]);
30
+ }
31
+ result = (0, utils_1.mergeSourceDependencies)(result, browserDeps);
32
+ }
33
+ }
34
+ return result;
35
+ }
36
+ }
37
+ exports.TestDependenciesReader = TestDependenciesReader;
38
+ exports.getTestDependenciesReader = (0, lodash_1.memoize)((selectivityRootPath, compression) => {
39
+ return new TestDependenciesReader(selectivityRootPath, compression);
40
+ }, (selectivityRootPath, compression) => `${selectivityRootPath}#${compression}`);
41
+ //# sourceMappingURL=test-dependencies-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-dependencies-reader.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/test-dependencies-reader.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAiC;AACjC,0DAA6B;AAC7B,mCAAwE;AAIxE,MAAa,sBAAsB;IAI/B,YAAY,mBAA2B,EAAE,WAAuC;QAC5E,IAAI,CAAC,qBAAqB,GAAG,mBAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAU;QACnB,MAAM,QAAQ,GAAG,MAAM,IAAA,4BAAoB,EAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACjG,IAAI,MAAM,GAA2B,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAEtE,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;YAElD,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACnB,SAAS;YACb,CAAC;iBAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,GAAG,IAAA,+BAAuB,EAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/E,CAAC;iBAAM,CAAC;gBACJ,IAAI,WAAW,GAA2B,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE3E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACvC,WAAW,GAAG,IAAA,+BAAuB,EAAC,WAAW,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzF,CAAC;gBAED,MAAM,GAAG,IAAA,+BAAuB,EAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC1D,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAjCD,wDAiCC;AAEY,QAAA,yBAAyB,GAAG,IAAA,gBAAO,EAC5C,CAAC,mBAA2B,EAAE,WAAuC,EAA0B,EAAE;IAC7F,OAAO,IAAI,sBAAsB,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;AACxE,CAAC,EACD,CAAC,mBAAmB,EAAE,WAAW,EAAE,EAAE,CAAC,GAAG,mBAAmB,IAAI,WAAW,EAAE,CAChF,CAAC"}
@@ -5,7 +5,7 @@ export declare class TestDependenciesWriter {
5
5
  private readonly _selectivityTestsPath;
6
6
  private readonly _compression;
7
7
  private _directoryCreated;
8
- constructor(selectivityRootPath: string, compression: SelectivityCompressionType);
8
+ constructor(testDependenciesPath: string, compression: SelectivityCompressionType);
9
9
  saveFor(test: Test, browserDeps: NormalizedDependencies, testplaneDeps: NormalizedDependencies): Promise<void>;
10
10
  }
11
- export declare const getTestDependenciesWriter: ((selectivityRootPath: string, compression: SelectivityCompressionType) => TestDependenciesWriter) & import("lodash").MemoizedFunction;
11
+ export declare const getTestDependenciesWriter: ((testDependenciesPath: string, compression: SelectivityCompressionType) => TestDependenciesWriter) & import("lodash").MemoizedFunction;
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getTestDependenciesWriter = exports.TestDependenciesWriter = void 0;
7
7
  const lodash_1 = require("lodash");
8
- const node_path_1 = __importDefault(require("node:path"));
8
+ const proper_lockfile_1 = __importDefault(require("proper-lockfile"));
9
9
  const fs_extra_1 = __importDefault(require("fs-extra"));
10
10
  const utils_1 = require("./utils");
11
11
  const json_utils_1 = require("./json-utils");
@@ -30,9 +30,9 @@ const areDepsSame = (browserDepsA, browserDepsB) => {
30
30
  return true;
31
31
  };
32
32
  class TestDependenciesWriter {
33
- constructor(selectivityRootPath, compression) {
33
+ constructor(testDependenciesPath, compression) {
34
34
  this._directoryCreated = false;
35
- this._selectivityTestsPath = node_path_1.default.join(selectivityRootPath, "tests");
35
+ this._selectivityTestsPath = (0, utils_1.getSelectivityTestsPath)(testDependenciesPath);
36
36
  this._compression = compression;
37
37
  }
38
38
  async saveFor(test, browserDeps, testplaneDeps) {
@@ -40,19 +40,30 @@ class TestDependenciesWriter {
40
40
  await fs_extra_1.default.ensureDir(this._selectivityTestsPath);
41
41
  this._directoryCreated = true;
42
42
  }
43
- const testDepsPath = node_path_1.default.join(this._selectivityTestsPath, `${test.id}.json`);
44
- const testDeps = await (0, json_utils_1.readJsonWithCompression)(testDepsPath, this._compression, { defaultValue: {} }).catch(() => ({}));
45
- if (areDepsSame(testDeps[test.browserId]?.browser, browserDeps) &&
46
- areDepsSame(testDeps[test.browserId]?.testplane, testplaneDeps)) {
47
- return;
43
+ const testDepsPath = (0, utils_1.getTestDependenciesPath)(this._selectivityTestsPath, test);
44
+ const releaseLock = await proper_lockfile_1.default.lock(testDepsPath, {
45
+ stale: 5000,
46
+ update: 1000,
47
+ retries: { minTimeout: 100, maxTimeout: 1000, retries: 15 },
48
+ realpath: false,
49
+ });
50
+ try {
51
+ const testDeps = await (0, utils_1.readTestDependencies)(this._selectivityTestsPath, test, this._compression);
52
+ if (areDepsSame(testDeps[test.browserId]?.browser, browserDeps) &&
53
+ areDepsSame(testDeps[test.browserId]?.testplane, testplaneDeps)) {
54
+ return;
55
+ }
56
+ testDeps[test.browserId] = { browser: browserDeps, testplane: testplaneDeps };
57
+ (0, utils_1.shallowSortObject)(testDeps);
58
+ await (0, json_utils_1.writeJsonWithCompression)(testDepsPath, testDeps, this._compression);
59
+ }
60
+ finally {
61
+ await releaseLock();
48
62
  }
49
- testDeps[test.browserId] = { browser: browserDeps, testplane: testplaneDeps };
50
- (0, utils_1.shallowSortObject)(testDeps);
51
- await (0, json_utils_1.writeJsonWithCompression)(testDepsPath, testDeps, this._compression);
52
63
  }
53
64
  }
54
65
  exports.TestDependenciesWriter = TestDependenciesWriter;
55
- exports.getTestDependenciesWriter = (0, lodash_1.memoize)((selectivityRootPath, compression) => {
56
- return new TestDependenciesWriter(selectivityRootPath, compression);
57
- });
66
+ exports.getTestDependenciesWriter = (0, lodash_1.memoize)((testDependenciesPath, compression) => {
67
+ return new TestDependenciesWriter(testDependenciesPath, compression);
68
+ }, (testDependenciesPath, compression) => `${testDependenciesPath}#${compression}`);
58
69
  //# sourceMappingURL=test-dependencies-writer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-dependencies-writer.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/test-dependencies-writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-dependencies-writer.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/test-dependencies-writer.ts"],"names":[],"mappings":"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"}
@@ -2,3 +2,4 @@ export declare const disableCollectingTestplaneDependencies: () => void;
2
2
  export declare const enableCollectingTestplaneDependencies: () => void;
3
3
  export declare const getCollectedTestplaneDependencies: () => string[];
4
4
  export declare const runWithTestplaneDependenciesCollecting: <T>(fn: () => Promise<T>) => Promise<T>;
5
+ export declare const readTestFileWithTestplaneDependenciesCollecting: <T>(file: string, fn: () => Promise<T>) => Promise<T>;
@@ -3,12 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.runWithTestplaneDependenciesCollecting = exports.getCollectedTestplaneDependencies = exports.enableCollectingTestplaneDependencies = exports.disableCollectingTestplaneDependencies = void 0;
6
+ exports.readTestFileWithTestplaneDependenciesCollecting = exports.runWithTestplaneDependenciesCollecting = exports.getCollectedTestplaneDependencies = exports.enableCollectingTestplaneDependencies = exports.disableCollectingTestplaneDependencies = void 0;
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const module_1 = require("module");
9
9
  const async_hooks_1 = require("async_hooks");
10
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
11
  const TypedModule = module_1.Module;
11
12
  const testDependenciesStorage = new async_hooks_1.AsyncLocalStorage();
13
+ const testFileDependenciesCache = new Map();
12
14
  let disableCollectingDependenciesCb = null;
13
15
  const disableCollectingTestplaneDependencies = () => {
14
16
  if (disableCollectingDependenciesCb) {
@@ -21,24 +23,23 @@ const enableCollectingTestplaneDependencies = () => {
21
23
  if (disableCollectingDependenciesCb) {
22
24
  return;
23
25
  }
24
- const originalModuleLoad = TypedModule._load;
26
+ const originalResolveFileName = TypedModule._resolveFilename;
25
27
  disableCollectingDependenciesCb = () => {
26
- TypedModule._load = originalModuleLoad;
28
+ TypedModule._resolveFilename = originalResolveFileName;
27
29
  };
28
- TypedModule._load = function () {
30
+ TypedModule._resolveFilename = function () {
31
+ // eslint-disable-next-line prefer-rest-params
32
+ const result = originalResolveFileName.apply(this, arguments);
29
33
  try {
30
34
  const store = disableCollectingDependenciesCb ? testDependenciesStorage.getStore() : null;
31
- // eslint-disable-next-line prefer-rest-params
32
- const absPath = store ? TypedModule._resolveFilename.apply(this, arguments) : null;
33
- const relPath = absPath && path_1.default.isAbsolute(absPath) ? path_1.default.relative(process.cwd(), absPath) : null;
35
+ const relPath = result && path_1.default.isAbsolute(result) ? path_1.default.relative(process.cwd(), result) : null;
34
36
  if (store && relPath) {
35
37
  const posixRelPath = path_1.default.sep === path_1.default.posix.sep ? relPath : relPath.replaceAll(path_1.default.sep, path_1.default.posix.sep);
36
38
  store.jsTestplaneDeps?.add(posixRelPath);
37
39
  }
38
40
  }
39
41
  catch { } // eslint-disable-line no-empty
40
- // eslint-disable-next-line prefer-rest-params
41
- return originalModuleLoad.apply(this, arguments);
42
+ return result;
42
43
  };
43
44
  };
44
45
  exports.enableCollectingTestplaneDependencies = enableCollectingTestplaneDependencies;
@@ -53,4 +54,23 @@ const runWithTestplaneDependenciesCollecting = (fn) => {
53
54
  return testDependenciesStorage.run(store, fn);
54
55
  };
55
56
  exports.runWithTestplaneDependenciesCollecting = runWithTestplaneDependenciesCollecting;
57
+ const readTestFileWithTestplaneDependenciesCollecting = (file, fn) => {
58
+ if (!disableCollectingDependenciesCb) {
59
+ return fn();
60
+ }
61
+ const store = testDependenciesStorage.getStore();
62
+ const jsTestplaneDeps = store && store.jsTestplaneDeps;
63
+ if (!jsTestplaneDeps) {
64
+ return fn();
65
+ }
66
+ const cachedDependencies = testFileDependenciesCache.get(file);
67
+ if (cachedDependencies) {
68
+ cachedDependencies.forEach(dependency => jsTestplaneDeps.add(dependency));
69
+ return fn();
70
+ }
71
+ return fn().finally(() => {
72
+ testFileDependenciesCache.set(file, Array.from(jsTestplaneDeps).sort());
73
+ });
74
+ };
75
+ exports.readTestFileWithTestplaneDependenciesCollecting = readTestFileWithTestplaneDependenciesCollecting;
56
76
  //# sourceMappingURL=testplane-selectivity.js.map
@@ -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;AAEhD,MAAM,WAAW,GAAG,eAGnB,CAAC;AACF,MAAM,uBAAuB,GAAG,IAAI,+BAAiB,EAAqC,CAAC;AAE3F,IAAI,+BAA+B,GAAwB,IAAI,CAAC;AAEzD,MAAM,sCAAsC,GAAG,GAAS,EAAE;IAC7D,IAAI,+BAA+B,EAAE,CAAC;QAClC,+BAA+B,EAAE,CAAC;QAClC,+BAA+B,GAAG,IAAI,CAAC;IAC3C,CAAC;AACL,CAAC,CAAC;AALW,QAAA,sCAAsC,0CAKjD;AAEK,MAAM,qCAAqC,GAAG,GAAS,EAAE;IAC5D,IAAI,+BAA+B,EAAE,CAAC;QAClC,OAAO;IACX,CAAC;IAED,MAAM,kBAAkB,GAAG,WAAW,CAAC,KAAK,CAAC;IAE7C,+BAA+B,GAAG,GAAS,EAAE;QACzC,WAAW,CAAC,KAAK,GAAG,kBAAkB,CAAC;IAC3C,CAAC,CAAC;IAEF,WAAW,CAAC,KAAK,GAAG;QAChB,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,+BAA+B,CAAC,CAAC,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1F,8CAA8C;YAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACnF,MAAM,OAAO,GAAG,OAAO,IAAI,cAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAEnG,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;gBACnB,MAAM,YAAY,GACd,cAAI,CAAC,GAAG,KAAK,cAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,cAAI,CAAC,GAAG,EAAE,cAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACzF,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;YAC7C,CAAC;QACL,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC,CAAC,+BAA+B;QAE1C,8CAA8C;QAC9C,OAAO,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrD,CAAC,CAAC;AACN,CAAC,CAAC;AA5BW,QAAA,qCAAqC,yCA4BhD;AAEK,MAAM,iCAAiC,GAAG,GAAa,EAAE;IAC5D,MAAM,KAAK,GAAG,uBAAuB,CAAC,QAAQ,EAAE,CAAC;IAEjD,OAAO,KAAK,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1F,CAAC,CAAC;AAJW,QAAA,iCAAiC,qCAI5C;AAEK,MAAM,sCAAsC,GAAG,CAAI,EAAoB,EAAc,EAAE;IAC1F,IAAA,6CAAqC,GAAE,CAAC;IAExC,MAAM,KAAK,GAAG,EAAE,eAAe,EAAE,IAAI,GAAG,EAAU,EAAE,CAAC;IAErD,OAAO,uBAAuB,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC;AANW,QAAA,sCAAsC,0CAMjD"}
1
+ {"version":3,"file":"testplane-selectivity.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/testplane-selectivity.ts"],"names":[],"mappings":"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"}
@@ -13,3 +13,8 @@ export declare const Compression: {
13
13
  readonly ZSTD: "zstd";
14
14
  };
15
15
  export type SelectivityCompressionType = (typeof Compression)[keyof typeof Compression];
16
+ export type HashFileContents = {
17
+ files: Record<string, string>;
18
+ modules: Record<string, string>;
19
+ patterns: Record<string, string>;
20
+ };
@@ -1,7 +1,8 @@
1
1
  import { type RawSourceMap } from "source-map";
2
2
  import type { CDPRuntime } from "../domains/runtime";
3
3
  import type { CDPSessionId } from "../types";
4
- import type { NormalizedDependencies } from "./types";
4
+ import type { HashFileContents, NormalizedDependencies, SelectivityCompressionType } from "./types";
5
+ import type { Test } from "../../../types";
5
6
  /**
6
7
  * Tries to fetch text by url from node.js, then falls back to "fetch" from browser, if node.js fetch fails
7
8
  * @param url text url
@@ -39,3 +40,9 @@ export declare const transformSourceDependencies: (cssDependencies: string[], js
39
40
  /** Merges two sorted deps array into one with uniq values */
40
41
  export declare const mergeSourceDependencies: (a: NormalizedDependencies, b: NormalizedDependencies) => NormalizedDependencies;
41
42
  export declare const shallowSortObject: (obj: Record<string, unknown>) => void;
43
+ export declare const getSelectivityHashesPath: (testDependenciesPath: string) => string;
44
+ export declare const readHashFileContents: (selectivityHashesPath: string, compression: SelectivityCompressionType) => Promise<HashFileContents>;
45
+ export declare const getSelectivityTestsPath: (testDependenciesPath: string) => string;
46
+ export declare const getTestDependenciesPath: (selectivityTestsPath: string, test: Test) => string;
47
+ /** @returns `Promise<Record<BrowserID, Record<DepType, NormalizedDependencies>>>` */
48
+ export declare const readTestDependencies: (selectivityTestsPath: string, test: Test, compression: SelectivityCompressionType) => Promise<Record<string, Record<string, NormalizedDependencies>>>;
@@ -1,16 +1,41 @@
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
- exports.shallowSortObject = exports.mergeSourceDependencies = exports.transformSourceDependencies = exports.hasProtocol = exports.extractSourceFilesDeps = exports.patchSourceMapSources = exports.fetchTextWithBrowserFallback = void 0;
29
+ exports.readTestDependencies = exports.getTestDependenciesPath = exports.getSelectivityTestsPath = exports.readHashFileContents = exports.getSelectivityHashesPath = exports.shallowSortObject = exports.mergeSourceDependencies = exports.transformSourceDependencies = exports.hasProtocol = exports.extractSourceFilesDeps = exports.patchSourceMapSources = exports.fetchTextWithBrowserFallback = void 0;
7
30
  const lodash_1 = require("lodash");
8
31
  const source_map_1 = require("source-map");
9
32
  const fs_1 = __importDefault(require("fs"));
10
33
  const path_1 = __importDefault(require("path"));
11
34
  const url_1 = require("url");
35
+ const logger = __importStar(require("../../../utils/logger"));
12
36
  const fs_2 = require("../../../utils/fs");
13
37
  const constants_1 = require("./constants");
38
+ const json_utils_1 = require("./json-utils");
14
39
  /**
15
40
  * Tries to fetch text by url from node.js, then falls back to "fetch" from browser, if node.js fetch fails
16
41
  * @param url text url
@@ -110,6 +135,17 @@ const hasProtocol = (fileUrlLikePath) => {
110
135
  }
111
136
  };
112
137
  exports.hasProtocol = hasProtocol;
138
+ const getProtocol = (fileUrlLikePath) => {
139
+ if (!fileUrlLikePath.includes("://")) {
140
+ return null;
141
+ }
142
+ try {
143
+ return new url_1.URL(fileUrlLikePath).protocol;
144
+ }
145
+ catch {
146
+ return null;
147
+ }
148
+ };
113
149
  const ensurePosixRelativeDependencyPathExists = (0, lodash_1.memoize)((posixRelativePath) => {
114
150
  const relativePath = posixRelativePath.replaceAll(path_1.default.posix.sep, path_1.default.sep);
115
151
  if (fs_1.default.existsSync(relativePath)) {
@@ -121,6 +157,9 @@ const ensurePosixRelativeDependencyPathExists = (0, lodash_1.memoize)((posixRela
121
157
  "Configuring 'sourceRoot' in Testplane selectivity config also might help",
122
158
  ].join("\n"));
123
159
  });
160
+ const warnUnsupportedProtocol = (0, lodash_1.memoize)((protocol, dependency) => {
161
+ logger.warn(`Selectivity: Ignoring dependencies of unsupported protocol "${protocol}" (example: "${dependency}")`);
162
+ });
124
163
  /**
125
164
  * @param cssDependencies SORTED uniq array of css dependenciy URI's
126
165
  * @param jsDependencies SORTED uniq array of js dependenciy URI's
@@ -133,8 +172,10 @@ const transformSourceDependencies = (cssDependencies, jsDependencies) => {
133
172
  const modules = [];
134
173
  const classifyDependency = (dependency, typedResultArray) => {
135
174
  dependency = decodeURIComponent((0, fs_2.softFileURLToPath)(dependency));
136
- if ((0, exports.hasProtocol)(dependency)) {
137
- throw new Error(`Selectivity: Found unsupported protocol in dependencies ("${dependency}")`);
175
+ const protocol = getProtocol(dependency);
176
+ if (protocol) {
177
+ warnUnsupportedProtocol(protocol, dependency);
178
+ return;
138
179
  }
139
180
  const dependencyRelativePath = path_1.default.posix.relative(path_1.default.posix.resolve(), path_1.default.posix.resolve(dependency));
140
181
  const nodeModulesLabelPos = dependencyRelativePath.indexOf(nodeModulesLabel);
@@ -237,4 +278,26 @@ const shallowSortObject = (obj) => {
237
278
  }
238
279
  };
239
280
  exports.shallowSortObject = shallowSortObject;
281
+ const getSelectivityHashesPath = (testDependenciesPath) => path_1.default.join(testDependenciesPath, "hashes.json");
282
+ exports.getSelectivityHashesPath = getSelectivityHashesPath;
283
+ const readHashFileContents = (selectivityHashesPath, compression) => (0, json_utils_1.readJsonWithCompression)(selectivityHashesPath, compression, {
284
+ defaultValue: { files: {}, modules: {}, patterns: {} },
285
+ })
286
+ .catch(() => ({ files: {}, modules: {}, patterns: {} }))
287
+ .then(res => {
288
+ res.files ||= {};
289
+ res.modules ||= {};
290
+ res.patterns ||= {};
291
+ return res;
292
+ });
293
+ exports.readHashFileContents = readHashFileContents;
294
+ const getSelectivityTestsPath = (testDependenciesPath) => path_1.default.join(testDependenciesPath, "tests");
295
+ exports.getSelectivityTestsPath = getSelectivityTestsPath;
296
+ const getTestDependenciesPath = (selectivityTestsPath, test) => path_1.default.join(selectivityTestsPath, `${test.id}.json`);
297
+ exports.getTestDependenciesPath = getTestDependenciesPath;
298
+ /** @returns `Promise<Record<BrowserID, Record<DepType, NormalizedDependencies>>>` */
299
+ const readTestDependencies = (selectivityTestsPath, test, compression) => (0, json_utils_1.readJsonWithCompression)((0, exports.getTestDependenciesPath)(selectivityTestsPath, test), compression, {
300
+ defaultValue: {},
301
+ }).catch(() => ({}));
302
+ exports.readTestDependencies = readTestDependencies;
240
303
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/utils.ts"],"names":[],"mappings":"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"}