testplane 8.42.2 → 8.42.4

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 (38) hide show
  1. package/build/package.json +1 -1
  2. package/build/src/base-testplane.d.ts +3 -1
  3. package/build/src/base-testplane.js +7 -2
  4. package/build/src/base-testplane.js.map +1 -1
  5. package/build/src/browser/cdp/domains/css.d.ts +14 -6
  6. package/build/src/browser/cdp/domains/css.js +4 -0
  7. package/build/src/browser/cdp/domains/css.js.map +1 -1
  8. package/build/src/browser/cdp/domains/debugger.d.ts +1 -1
  9. package/build/src/browser/cdp/domains/fetch.d.ts +157 -3
  10. package/build/src/browser/cdp/domains/fetch.js +40 -1
  11. package/build/src/browser/cdp/domains/fetch.js.map +1 -1
  12. package/build/src/browser/cdp/domains/network.d.ts +284 -18
  13. package/build/src/browser/cdp/domains/network.js +64 -1
  14. package/build/src/browser/cdp/domains/network.js.map +1 -1
  15. package/build/src/browser/cdp/domains/page.d.ts +378 -0
  16. package/build/src/browser/cdp/domains/page.js +114 -0
  17. package/build/src/browser/cdp/domains/page.js.map +1 -0
  18. package/build/src/browser/cdp/emitter.d.ts +2 -1
  19. package/build/src/browser/cdp/emitter.js +2 -2
  20. package/build/src/browser/cdp/emitter.js.map +1 -1
  21. package/build/src/browser/cdp/index.d.ts +2 -0
  22. package/build/src/browser/cdp/index.js +15 -10
  23. package/build/src/browser/cdp/index.js.map +1 -1
  24. package/build/src/browser/cdp/selectivity/css-selectivity.d.ts +4 -0
  25. package/build/src/browser/cdp/selectivity/css-selectivity.js +55 -47
  26. package/build/src/browser/cdp/selectivity/css-selectivity.js.map +1 -1
  27. package/build/src/browser/cdp/selectivity/index.js +47 -7
  28. package/build/src/browser/cdp/selectivity/index.js.map +1 -1
  29. package/build/src/browser/cdp/selectivity/js-selectivity.d.ts +4 -1
  30. package/build/src/browser/cdp/selectivity/js-selectivity.js +76 -68
  31. package/build/src/browser/cdp/selectivity/js-selectivity.js.map +1 -1
  32. package/build/src/browser/cdp/types.d.ts +214 -0
  33. package/build/src/testplane.d.ts +1 -1
  34. package/build/src/testplane.js +4 -4
  35. package/build/src/testplane.js.map +1 -1
  36. package/build/src/worker/testplane.js +1 -1
  37. package/build/src/worker/testplane.js.map +1 -1
  38. package/package.json +1 -1
@@ -10,6 +10,7 @@ const dom_1 = require("./domains/dom");
10
10
  const css_1 = require("./domains/css");
11
11
  const network_1 = require("./domains/network");
12
12
  const fetch_1 = require("./domains/fetch");
13
+ const page_1 = require("./domains/page");
13
14
  class CDP {
14
15
  static async create(browser) {
15
16
  // "isChrome" is "true" when automationProtocol is "devtools"
@@ -28,8 +29,9 @@ class CDP {
28
29
  this.runtime = new runtime_1.CDPRuntime(connection);
29
30
  this.dom = new dom_1.CDPDom(connection);
30
31
  this.css = new css_1.CDPCss(connection);
31
- this.network = new network_1.CDPNetwork();
32
- this.fetch = new fetch_1.CDFetch();
32
+ this.network = new network_1.CDPNetwork(connection);
33
+ this.fetch = new fetch_1.CDFetch(connection);
34
+ this.page = new page_1.CDPPage(connection);
33
35
  this._connection.onEventMessage = this._onEventMessage.bind(this);
34
36
  }
35
37
  async request(method, params, cdpSessionId) {
@@ -45,28 +47,31 @@ class CDP {
45
47
  const [domain, method] = cdpEventMessage.method.split(".", 2);
46
48
  switch (domain) {
47
49
  case "Target":
48
- this.target.emit(method, cdpEventMessage.params);
50
+ this.target.emit(method, cdpEventMessage.params, cdpEventMessage.sessionId);
49
51
  break;
50
52
  case "Profiler":
51
- this.profiler.emit(method, cdpEventMessage.params);
53
+ this.profiler.emit(method, cdpEventMessage.params, cdpEventMessage.sessionId);
52
54
  break;
53
55
  case "Debugger":
54
- this.debugger.emit(method, cdpEventMessage.params);
56
+ this.debugger.emit(method, cdpEventMessage.params, cdpEventMessage.sessionId);
55
57
  break;
56
58
  case "Runtime":
57
- this.runtime.emit(method, cdpEventMessage.params);
59
+ this.runtime.emit(method, cdpEventMessage.params, cdpEventMessage.sessionId);
58
60
  break;
59
61
  case "DOM":
60
- this.dom.emit(method, cdpEventMessage.params);
62
+ this.dom.emit(method, cdpEventMessage.params, cdpEventMessage.sessionId);
61
63
  break;
62
64
  case "CSS":
63
- this.css.emit(method, cdpEventMessage.params);
65
+ this.css.emit(method, cdpEventMessage.params, cdpEventMessage.sessionId);
64
66
  break;
65
67
  case "Network":
66
- this.network.emit(method, cdpEventMessage.params);
68
+ this.network.emit(method, cdpEventMessage.params, cdpEventMessage.sessionId);
67
69
  break;
68
70
  case "Fetch":
69
- this.fetch.emit(method, cdpEventMessage.params);
71
+ this.fetch.emit(method, cdpEventMessage.params, cdpEventMessage.sessionId);
72
+ break;
73
+ case "Page":
74
+ this.page.emit(method, cdpEventMessage.params, cdpEventMessage.sessionId);
70
75
  break;
71
76
  }
72
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/browser/cdp/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/browser/cdp/index.ts"],"names":[],"mappings":"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"}
@@ -7,9 +7,13 @@ export declare class CSSSelectivity {
7
7
  private _cssOnStyleSheetAddedFn;
8
8
  private _stylesSourceMap;
9
9
  private _styleSheetIdToSourceMapUrl;
10
+ private _coverageResult;
10
11
  constructor(cdp: CDP, sessionId: CDPSessionId, sourceRoot?: string);
11
12
  private _processStyle;
13
+ private _ensureStylesAreLoading;
14
+ private _waitForLoadingStyles;
12
15
  start(): Promise<void>;
16
+ takeCoverageSnapshot(): Promise<void>;
13
17
  /** @param drop only performs cleanup without providing actual deps. Should be "true" if test is failed */
14
18
  stop(drop?: boolean): Promise<Set<string> | null>;
15
19
  }
@@ -16,12 +16,13 @@ class CSSSelectivity {
16
16
  this._cssOnStyleSheetAddedFn = null;
17
17
  this._stylesSourceMap = {};
18
18
  this._styleSheetIdToSourceMapUrl = {};
19
+ this._coverageResult = [];
19
20
  this._cdp = cdp;
20
21
  this._sessionId = sessionId;
21
22
  this._sourceRoot = sourceRoot;
22
23
  }
23
- _processStyle({ header: { styleSheetId, sourceURL, sourceMapURL } }) {
24
- if (!this._sessionId) {
24
+ _processStyle({ header: { styleSheetId, sourceURL, sourceMapURL } }, cdpSessionId) {
25
+ if (!this._sessionId || cdpSessionId !== this._sessionId) {
25
26
  return;
26
27
  }
27
28
  if (!sourceURL || !sourceMapURL) {
@@ -53,16 +54,57 @@ class CSSSelectivity {
53
54
  });
54
55
  }
55
56
  }
57
+ // If we haven't got "styleSheetAdded" event for the script, pull up styles + source map manually
58
+ _ensureStylesAreLoading(ruleUsage) {
59
+ ruleUsage.forEach(({ styleSheetId }) => {
60
+ if (Object.hasOwn(this._stylesSourceMap, styleSheetId)) {
61
+ return;
62
+ }
63
+ const scriptSourcePromise = this._cdp.css
64
+ .getStyleSheetText(this._sessionId, styleSheetId)
65
+ .then(res => res.text)
66
+ .catch((err) => err);
67
+ this._stylesSourceMap[styleSheetId] ||= scriptSourcePromise.then(sourceCode => {
68
+ if (sourceCode instanceof Error) {
69
+ return sourceCode;
70
+ }
71
+ const sourceMapsStartIndex = sourceCode.lastIndexOf(constants_1.CSS_SOURCE_MAP_URL_COMMENT);
72
+ const sourceMapsEndIndex = sourceCode.indexOf("*/", sourceMapsStartIndex);
73
+ // Source maps are not generated for this source file
74
+ if (sourceMapsStartIndex === -1) {
75
+ return null;
76
+ }
77
+ const sourceMapURL = sourceMapsEndIndex === -1
78
+ ? sourceCode.slice(sourceMapsStartIndex + constants_1.CSS_SOURCE_MAP_URL_COMMENT.length)
79
+ : sourceCode.slice(sourceMapsStartIndex + constants_1.CSS_SOURCE_MAP_URL_COMMENT.length, sourceMapsEndIndex);
80
+ // If we encounter css stylesheet, that was not reported by "styleSheetAdded"
81
+ // We can only get sourcemaps if they are inlined
82
+ // Otherwise, we can't resolve actual sourcemaps url because we dont know css styles url itself.
83
+ if (!(0, utils_1.isDataProtocol)(sourceMapURL)) {
84
+ return new Error([
85
+ `Missed stylesheet url for stylesheet id ${styleSheetId}.`,
86
+ "Looks like Chrome Devtools 'styleSheetAdded' event was lost",
87
+ "It could happen due to network instability",
88
+ "Switching to inline sourcemaps for CSS will help at the cost of increased RAM usage",
89
+ ].join("\n"));
90
+ }
91
+ return (0, utils_1.fetchTextWithBrowserFallback)(sourceMapURL, this._cdp.runtime, this._sessionId).catch((err) => err);
92
+ });
93
+ });
94
+ }
95
+ async _waitForLoadingStyles() {
96
+ await Promise.allSettled(Object.values(this._stylesSourceMap));
97
+ }
56
98
  async start() {
57
99
  const cssOnStyleSheetAdded = (this._cssOnStyleSheetAddedFn = this._processStyle.bind(this));
58
100
  this._cdp.css.on("styleSheetAdded", cssOnStyleSheetAdded);
59
- await Promise.all([
60
- this._cdp.target.setAutoAttach(this._sessionId, { autoAttach: true, waitForDebuggerOnStart: false }),
61
- this._cdp.dom
62
- .enable(this._sessionId)
63
- .then(() => this._cdp.css.enable(this._sessionId))
64
- .then(() => this._cdp.css.startRuleUsageTracking(this._sessionId)),
65
- ]);
101
+ await this._cdp.css.startRuleUsageTracking(this._sessionId);
102
+ }
103
+ async takeCoverageSnapshot() {
104
+ const coveragePart = await this._cdp.css.takeCoverageDelta(this._sessionId);
105
+ this._ensureStylesAreLoading(coveragePart.coverage);
106
+ await this._waitForLoadingStyles();
107
+ this._coverageResult.push(...coveragePart.coverage);
66
108
  }
67
109
  /** @param drop only performs cleanup without providing actual deps. Should be "true" if test is failed */
68
110
  async stop(drop) {
@@ -70,45 +112,11 @@ class CSSSelectivity {
70
112
  if (drop) {
71
113
  return null;
72
114
  }
73
- const coverage = await this._cdp.css.stopRuleUsageTracking(this._sessionId);
74
- // If we haven't got "styleSheetAdded" event for the script, pull up styles + source map manually
75
- coverage.ruleUsage.forEach(({ styleSheetId }) => {
76
- if (Object.hasOwn(this._stylesSourceMap, styleSheetId)) {
77
- return;
78
- }
79
- const scriptSourcePromise = this._cdp.css
80
- .getStyleSheetText(this._sessionId, styleSheetId)
81
- .then(res => res.text)
82
- .catch((err) => err);
83
- this._stylesSourceMap[styleSheetId] ||= scriptSourcePromise.then(sourceCode => {
84
- if (sourceCode instanceof Error) {
85
- return sourceCode;
86
- }
87
- const sourceMapsStartIndex = sourceCode.lastIndexOf(constants_1.CSS_SOURCE_MAP_URL_COMMENT);
88
- const sourceMapsEndIndex = sourceCode.indexOf("*/", sourceMapsStartIndex);
89
- // Source maps are not generated for this source file
90
- if (sourceMapsStartIndex === -1) {
91
- return null;
92
- }
93
- const sourceMapURL = sourceMapsEndIndex === -1
94
- ? sourceCode.slice(sourceMapsStartIndex + constants_1.CSS_SOURCE_MAP_URL_COMMENT.length)
95
- : sourceCode.slice(sourceMapsStartIndex + constants_1.CSS_SOURCE_MAP_URL_COMMENT.length, sourceMapsEndIndex);
96
- // If we encounter css stylesheet, that was not reported by "styleSheetAdded"
97
- // We can only get sourcemaps if they are inlined
98
- // Otherwise, we can't resolve actual sourcemaps url because we dont know css styles url itself.
99
- if (!(0, utils_1.isDataProtocol)(sourceMapURL)) {
100
- return new Error([
101
- `Missed stylesheet url for stylesheet id ${styleSheetId}.`,
102
- "Looks like Chrome Devtools 'styleSheetAdded' event was lost",
103
- "It could happen due to network instability",
104
- "Switching to inline sourcemaps for CSS will help at the cost of increased RAM usage",
105
- ].join("\n"));
106
- }
107
- return (0, utils_1.fetchTextWithBrowserFallback)(sourceMapURL, this._cdp.runtime, this._sessionId).catch((err) => err);
108
- });
109
- });
115
+ const coverageLastPart = await this._cdp.css.stopRuleUsageTracking(this._sessionId);
116
+ const coverageStyles = [...this._coverageResult, ...coverageLastPart.ruleUsage];
117
+ this._ensureStylesAreLoading(coverageLastPart.ruleUsage);
110
118
  const totalDependingSourceFiles = new Set();
111
- const grouppedByStyleSheetCoverage = (0, lodash_1.groupBy)(coverage.ruleUsage, "styleSheetId");
119
+ const grouppedByStyleSheetCoverage = (0, lodash_1.groupBy)(coverageStyles, "styleSheetId");
112
120
  const styleSheetIds = Object.keys(grouppedByStyleSheetCoverage);
113
121
  await Promise.all(styleSheetIds.map(async (styleSheetId) => {
114
122
  const sourceMap = await this._stylesSourceMap[styleSheetId];
@@ -1 +1 @@
1
- {"version":3,"file":"css-selectivity.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/css-selectivity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"css-selectivity.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/css-selectivity.ts"],"names":[],"mappings":"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"}
@@ -105,6 +105,8 @@ const clearUnusedSelectivityDumps = async (config) => {
105
105
  }
106
106
  };
107
107
  exports.clearUnusedSelectivityDumps = clearUnusedSelectivityDumps;
108
+ const testplaneCoverageBreakScriptName = "__testplane_cdp_coverage_snapshot_pause";
109
+ const scriptToEvaluateOnNewDocument = `window.addEventListener("beforeunload", function ${testplaneCoverageBreakScriptName}() {debugger;});`;
108
110
  const startSelectivity = async (browser) => {
109
111
  const { enabled, compression, sourceRoot, testDependenciesPath, mapDependencyRelativePath } = browser.config.selectivity;
110
112
  if (!(0, modes_1.selectivityShouldWrite)(enabled) || !browser.publicAPI.isChromium) {
@@ -116,9 +118,9 @@ const startSelectivity = async (browser) => {
116
118
  if (!browser.cdp) {
117
119
  throw new Error("Selectivity: Devtools connection is not established, couldn't record selectivity without it");
118
120
  }
119
- const cdpTaget = browser.cdp.target;
121
+ const cdp = browser.cdp;
120
122
  const handle = await browser.publicAPI.getWindowHandle();
121
- const { targetInfos } = await cdpTaget.getTargets();
123
+ const { targetInfos } = await cdp.target.getTargets();
122
124
  const cdpTargetId = targetInfos.find(t => handle.includes(t.targetId))?.targetId;
123
125
  if (!cdpTargetId) {
124
126
  throw new Error([
@@ -127,9 +129,16 @@ const startSelectivity = async (browser) => {
127
129
  `\n\t- cdp targets: ${targetInfos.map(t => `"${t.targetId}"`).join(", ")}`,
128
130
  ].join(""));
129
131
  }
130
- const sessionId = await cdpTaget.attachToTarget(cdpTargetId).then(r => r.sessionId);
131
- const cssSelectivity = new css_selectivity_1.CSSSelectivity(browser.cdp, sessionId, sourceRoot);
132
- const jsSelectivity = new js_selectivity_1.JSSelectivity(browser.cdp, sessionId, sourceRoot);
132
+ const sessionId = await cdp.target.attachToTarget(cdpTargetId).then(r => r.sessionId);
133
+ const cssSelectivity = new css_selectivity_1.CSSSelectivity(cdp, sessionId, sourceRoot);
134
+ const jsSelectivity = new js_selectivity_1.JSSelectivity(cdp, sessionId, sourceRoot);
135
+ await Promise.all([
136
+ cdp.dom.enable(sessionId).then(() => cdp.css.enable(sessionId)),
137
+ cdp.target.setAutoAttach(sessionId, { autoAttach: true, waitForDebuggerOnStart: false }),
138
+ cdp.debugger.enable(sessionId),
139
+ cdp.page.enable(sessionId),
140
+ cdp.profiler.enable(sessionId),
141
+ ]);
133
142
  await Promise.allSettled([cssSelectivity.start(), jsSelectivity.start()]).then(async ([css, js]) => {
134
143
  if (css.status === "rejected" || js.status === "rejected") {
135
144
  await Promise.all([cssSelectivity.stop(true), jsSelectivity.stop(true)]);
@@ -137,13 +146,44 @@ const startSelectivity = async (browser) => {
137
146
  throw new Error("Selectivity: Couldn't start selectivity", { cause: originalError });
138
147
  }
139
148
  });
149
+ let pageSwitchPromise = Promise.resolve();
150
+ let isSelectivityStopped = false;
151
+ const debuggerPausedFn = ({ callFrames }, eventCdpSessionId) => {
152
+ if (eventCdpSessionId !== sessionId) {
153
+ return;
154
+ }
155
+ if (callFrames[0]?.functionName !== testplaneCoverageBreakScriptName || isSelectivityStopped) {
156
+ cdp.debugger.resume(sessionId).catch(() => { });
157
+ return;
158
+ }
159
+ pageSwitchPromise = pageSwitchPromise.finally(() => Promise.all([cssSelectivity.takeCoverageSnapshot(), jsSelectivity.takeCoverageSnapshot()])
160
+ .catch(err => {
161
+ console.error("Selectivity: couldn't take snapshot while navigating:", err);
162
+ })
163
+ .then(() => {
164
+ cdp.debugger.resume(sessionId).catch(() => { });
165
+ }));
166
+ };
167
+ cdp.debugger.on("paused", debuggerPausedFn);
168
+ await cdp.page.addScriptToEvaluateOnNewDocument(sessionId, { source: scriptToEvaluateOnNewDocument });
140
169
  /** @param drop only performs cleanup without writing anything. Should be "true" if test is failed */
141
170
  return async function stopSelectivity(test, drop) {
142
- const [cssDependencies, jsDependencies] = await Promise.all([
171
+ isSelectivityStopped = true;
172
+ await pageSwitchPromise;
173
+ const [cssDependenciesPromise, jsDependenciesPromise] = await Promise.allSettled([
143
174
  cssSelectivity.stop(drop),
144
175
  jsSelectivity.stop(drop),
145
176
  ]);
146
- cdpTaget.detachFromTarget(sessionId).catch(() => { });
177
+ cdp.debugger.off("paused", debuggerPausedFn);
178
+ cdp.target.detachFromTarget(sessionId).catch(() => { });
179
+ if (jsDependenciesPromise.status === "rejected") {
180
+ throw jsDependenciesPromise.reason;
181
+ }
182
+ if (cssDependenciesPromise.status === "rejected") {
183
+ throw cssDependenciesPromise.reason;
184
+ }
185
+ const cssDependencies = cssDependenciesPromise.value;
186
+ const jsDependencies = jsDependenciesPromise.value;
147
187
  if (drop || (!cssDependencies?.size && !jsDependencies?.size)) {
148
188
  return;
149
189
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/index.ts"],"names":[],"mappings":"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"}
@@ -4,15 +4,18 @@ export declare class JSSelectivity {
4
4
  private readonly _cdp;
5
5
  private readonly _sessionId;
6
6
  private readonly _sourceRoot;
7
- private _debuggerOnPausedFn;
8
7
  private _debuggerOnScriptParsedFn;
9
8
  private _scriptsSource;
10
9
  private _scriptsSourceMap;
11
10
  private _scriptIdToSourceUrl;
12
11
  private _scriptIdToSourceMapUrl;
12
+ private _coverageResult;
13
13
  constructor(cdp: CDP, sessionId: CDPSessionId, sourceRoot?: string);
14
14
  private _processScript;
15
+ private _ensureScriptsAreLoading;
16
+ private _waitForLoadingScripts;
15
17
  start(): Promise<void>;
18
+ takeCoverageSnapshot(): Promise<void>;
16
19
  /** @param drop only performs cleanup without providing actual deps. Should be "true" if test is failed */
17
20
  stop(drop?: boolean): Promise<Set<string> | null>;
18
21
  }
@@ -13,18 +13,18 @@ const isSourceCodeFile = (sourceFileName) => {
13
13
  };
14
14
  class JSSelectivity {
15
15
  constructor(cdp, sessionId, sourceRoot = "") {
16
- this._debuggerOnPausedFn = null;
17
16
  this._debuggerOnScriptParsedFn = null;
18
17
  this._scriptsSource = {};
19
18
  this._scriptsSourceMap = {};
20
19
  this._scriptIdToSourceUrl = {};
21
20
  this._scriptIdToSourceMapUrl = {};
21
+ this._coverageResult = [];
22
22
  this._cdp = cdp;
23
23
  this._sessionId = sessionId;
24
24
  this._sourceRoot = sourceRoot;
25
25
  }
26
- _processScript({ scriptId, url, sourceMapURL }) {
27
- if (!this._sessionId) {
26
+ _processScript({ scriptId, url, sourceMapURL }, cdpSessionId) {
27
+ if (!this._sessionId || cdpSessionId !== this._sessionId) {
28
28
  return;
29
29
  }
30
30
  this._scriptIdToSourceUrl[scriptId] ||= url;
@@ -72,23 +72,79 @@ class JSSelectivity {
72
72
  });
73
73
  }
74
74
  }
75
- async start() {
76
- const debuggerOnPaused = (this._debuggerOnPausedFn = async () => {
77
- return this._cdp.debugger.resume(this._sessionId).catch(() => { });
75
+ // If we haven't got "scriptParsed" event for the script, pull up source code + source map manually
76
+ _ensureScriptsAreLoading(coverage) {
77
+ coverage.forEach(({ scriptId, url }) => {
78
+ const fixedUrl = url || this._scriptIdToSourceUrl[scriptId];
79
+ // Was processed with "this._processScript" or anonymous
80
+ if ((Object.hasOwn(this._scriptsSource, scriptId) && Object.hasOwn(this._scriptsSourceMap, scriptId)) ||
81
+ !fixedUrl) {
82
+ return;
83
+ }
84
+ // Not dropping sources to fs the end of test (when "stop" is called) because we use it immediately
85
+ const scriptSourcePromise = this._cdp.debugger
86
+ .getScriptSource(this._sessionId, scriptId)
87
+ .then(({ scriptSource }) => {
88
+ (0, fs_cache_1.setCachedSelectivityFile)(fs_cache_1.CacheType.Asset, fixedUrl, scriptSource).catch(() => { });
89
+ return scriptSource;
90
+ })
91
+ .catch((err) => err);
92
+ this._scriptIdToSourceUrl[scriptId] ||= url;
93
+ this._scriptsSource[scriptId] ||= scriptSourcePromise;
94
+ this._scriptsSourceMap[scriptId] ||= scriptSourcePromise.then(async (sourceCode) => {
95
+ if (sourceCode instanceof Error) {
96
+ return sourceCode;
97
+ }
98
+ const sourceMapsStartIndex = sourceCode.lastIndexOf(constants_1.JS_SOURCE_MAP_URL_COMMENT);
99
+ const sourceMapsEndIndex = sourceCode.indexOf("\n", sourceMapsStartIndex);
100
+ // Source maps are not generated for this source file
101
+ if (sourceMapsStartIndex === -1) {
102
+ return null;
103
+ }
104
+ const sourceMapURL = sourceMapsEndIndex === -1
105
+ ? sourceCode.slice(sourceMapsStartIndex + constants_1.JS_SOURCE_MAP_URL_COMMENT.length)
106
+ : sourceCode.slice(sourceMapsStartIndex + constants_1.JS_SOURCE_MAP_URL_COMMENT.length, sourceMapsEndIndex);
107
+ if ((0, utils_1.isDataProtocol)(sourceMapURL)) {
108
+ return (0, utils_1.fetchTextWithBrowserFallback)(sourceMapURL, this._cdp.runtime, this._sessionId).catch((err) => err);
109
+ }
110
+ const resolvedSourceMapUrl = (0, node_url_1.resolve)(fixedUrl, sourceMapURL);
111
+ this._scriptIdToSourceMapUrl[scriptId] ||= resolvedSourceMapUrl;
112
+ try {
113
+ const cachedSourceMaps = await (0, fs_cache_1.getCachedSelectivityFile)(fs_cache_1.CacheType.Asset, resolvedSourceMapUrl);
114
+ if (cachedSourceMaps) {
115
+ return cachedSourceMaps;
116
+ }
117
+ const sourceMap = await (0, utils_1.fetchTextWithBrowserFallback)(resolvedSourceMapUrl, this._cdp.runtime, this._sessionId);
118
+ (0, fs_cache_1.setCachedSelectivityFile)(fs_cache_1.CacheType.Asset, resolvedSourceMapUrl, sourceMap).catch(() => { });
119
+ return sourceMap;
120
+ }
121
+ catch (err) {
122
+ return err;
123
+ }
124
+ });
78
125
  });
126
+ }
127
+ async _waitForLoadingScripts() {
128
+ await Promise.all([
129
+ Promise.allSettled(Object.values(this._scriptsSource)),
130
+ Promise.allSettled(Object.values(this._scriptsSourceMap)),
131
+ ]);
132
+ }
133
+ async start() {
79
134
  const debuggerOnScriptParsedFn = (this._debuggerOnScriptParsedFn = this._processScript.bind(this));
80
135
  const sessionId = this._sessionId;
81
- this._cdp.debugger.on("paused", debuggerOnPaused);
82
136
  this._cdp.debugger.on("scriptParsed", debuggerOnScriptParsedFn);
83
- await Promise.all([
84
- this._cdp.target.setAutoAttach(sessionId, { autoAttach: true, waitForDebuggerOnStart: false }),
85
- this._cdp.debugger.enable(sessionId),
86
- this._cdp.profiler.enable(sessionId).then(() => this._cdp.profiler.startPreciseCoverage(sessionId, {
87
- callCount: false,
88
- detailed: false,
89
- allowTriggeredUpdates: false,
90
- })),
91
- ]);
137
+ await this._cdp.profiler.startPreciseCoverage(sessionId, {
138
+ callCount: false,
139
+ detailed: false,
140
+ allowTriggeredUpdates: false,
141
+ });
142
+ }
143
+ async takeCoverageSnapshot() {
144
+ const coveragePart = await this._cdp.profiler.takePreciseCoverage(this._sessionId);
145
+ this._ensureScriptsAreLoading(coveragePart.result);
146
+ await this._waitForLoadingScripts();
147
+ this._coverageResult.push(...coveragePart.result);
92
148
  }
93
149
  /** @param drop only performs cleanup without providing actual deps. Should be "true" if test is failed */
94
150
  async stop(drop) {
@@ -96,58 +152,11 @@ class JSSelectivity {
96
152
  if (drop) {
97
153
  return null;
98
154
  }
99
- const coverage = await this._cdp.profiler.takePreciseCoverage(this._sessionId);
100
- // If we haven't got "scriptParsed" event for the script, pull up source code + source map manually
101
- coverage.result.forEach(({ scriptId, url }) => {
102
- const fixedUrl = url || this._scriptIdToSourceUrl[scriptId];
103
- // Was processed with "this._processScript" or anonymous
104
- if ((this._scriptsSource[scriptId] && this._scriptsSourceMap[scriptId]) || !fixedUrl) {
105
- return;
106
- }
107
- // Not dropping sources to fs the end of test (when "stop" is called) because we use it immediately
108
- const scriptSourcePromise = this._cdp.debugger
109
- .getScriptSource(this._sessionId, scriptId)
110
- .then(({ scriptSource }) => {
111
- (0, fs_cache_1.setCachedSelectivityFile)(fs_cache_1.CacheType.Asset, fixedUrl, scriptSource).catch(() => { });
112
- return scriptSource;
113
- })
114
- .catch((err) => err);
115
- this._scriptIdToSourceUrl[scriptId] ||= url;
116
- this._scriptsSource[scriptId] ||= scriptSourcePromise;
117
- this._scriptsSourceMap[scriptId] ||= scriptSourcePromise.then(async (sourceCode) => {
118
- if (sourceCode instanceof Error) {
119
- return sourceCode;
120
- }
121
- const sourceMapsStartIndex = sourceCode.lastIndexOf(constants_1.JS_SOURCE_MAP_URL_COMMENT);
122
- const sourceMapsEndIndex = sourceCode.indexOf("\n", sourceMapsStartIndex);
123
- // Source maps are not generated for this source file
124
- if (sourceMapsStartIndex === -1) {
125
- return null;
126
- }
127
- const sourceMapURL = sourceMapsEndIndex === -1
128
- ? sourceCode.slice(sourceMapsStartIndex + constants_1.JS_SOURCE_MAP_URL_COMMENT.length)
129
- : sourceCode.slice(sourceMapsStartIndex + constants_1.JS_SOURCE_MAP_URL_COMMENT.length, sourceMapsEndIndex);
130
- if ((0, utils_1.isDataProtocol)(sourceMapURL)) {
131
- return (0, utils_1.fetchTextWithBrowserFallback)(sourceMapURL, this._cdp.runtime, this._sessionId).catch((err) => err);
132
- }
133
- const resolvedSourceMapUrl = (0, node_url_1.resolve)(fixedUrl, sourceMapURL);
134
- this._scriptIdToSourceMapUrl[scriptId] ||= resolvedSourceMapUrl;
135
- try {
136
- const cachedSourceMaps = await (0, fs_cache_1.getCachedSelectivityFile)(fs_cache_1.CacheType.Asset, resolvedSourceMapUrl);
137
- if (cachedSourceMaps) {
138
- return cachedSourceMaps;
139
- }
140
- const sourceMap = await (0, utils_1.fetchTextWithBrowserFallback)(resolvedSourceMapUrl, this._cdp.runtime, this._sessionId);
141
- (0, fs_cache_1.setCachedSelectivityFile)(fs_cache_1.CacheType.Asset, resolvedSourceMapUrl, sourceMap).catch(() => { });
142
- return sourceMap;
143
- }
144
- catch (err) {
145
- return err;
146
- }
147
- });
148
- });
155
+ const coverageLastPart = await this._cdp.profiler.takePreciseCoverage(this._sessionId);
156
+ const coverageScripts = [...this._coverageResult, ...coverageLastPart.result];
157
+ this._ensureScriptsAreLoading(coverageLastPart.result);
149
158
  const totalDependingSourceFiles = new Set();
150
- const grouppedByScriptCoverage = (0, lodash_1.groupBy)(coverage.result, "scriptId");
159
+ const grouppedByScriptCoverage = (0, lodash_1.groupBy)(coverageScripts, "scriptId");
151
160
  const scriptIds = Object.keys(grouppedByScriptCoverage);
152
161
  await Promise.all(scriptIds.map(async (scriptId) => {
153
162
  const [source, sourceMaps] = await Promise.all([
@@ -192,7 +201,6 @@ class JSSelectivity {
192
201
  return totalDependingSourceFiles;
193
202
  }
194
203
  finally {
195
- this._debuggerOnPausedFn && this._cdp.debugger.off("paused", this._debuggerOnPausedFn);
196
204
  this._debuggerOnScriptParsedFn && this._cdp.debugger.off("scriptParsed", this._debuggerOnScriptParsedFn);
197
205
  }
198
206
  }