testplane 8.47.3 → 8.47.5

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "testplane",
3
- "version": "8.47.3",
3
+ "version": "8.47.5",
4
4
  "description": "Tests framework based on mocha and wdio",
5
5
  "main": "build/src/index.js",
6
6
  "files": [
@@ -70,10 +70,10 @@
70
70
  "@jspm/core": "2.0.1",
71
71
  "@jsquash/png": "3.1.1",
72
72
  "@puppeteer/browsers": "2.7.1",
73
- "@testplane/devtools": "8.32.5",
73
+ "@testplane/devtools": "8.32.6",
74
74
  "@testplane/wdio-protocols": "9.4.7",
75
- "@testplane/wdio-utils": "9.5.4",
76
- "@testplane/webdriverio": "9.5.28",
75
+ "@testplane/wdio-utils": "9.5.5",
76
+ "@testplane/webdriverio": "9.5.30",
77
77
  "@vitest/spy": "2.1.4",
78
78
  "buffer-crc32": "1.0.0",
79
79
  "chalk": "2.4.2",
@@ -0,0 +1,10 @@
1
+ export interface ClickCommandGuard {
2
+ startClick: () => void;
3
+ waitForNavigationCompletion: () => Promise<void>;
4
+ cancelClick: () => void;
5
+ }
6
+ /**
7
+ * Install one persistent click wrapper because WebdriverIO commands cannot be restored after overwriteCommand.
8
+ * The active guard can still be replaced or disabled when a browser session is reused.
9
+ */
10
+ export declare const enableClickCommandGuard: (browser: WebdriverIO.Browser, guard: ClickCommandGuard) => (() => void);
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.enableClickCommandGuard = void 0;
4
+ const activeGuards = new WeakMap();
5
+ const guardedBrowsers = new WeakSet();
6
+ /**
7
+ * Install one persistent click wrapper because WebdriverIO commands cannot be restored after overwriteCommand.
8
+ * The active guard can still be replaced or disabled when a browser session is reused.
9
+ */
10
+ const enableClickCommandGuard = (browser, guard) => {
11
+ activeGuards.set(browser, guard);
12
+ const disableGuard = () => {
13
+ if (activeGuards.get(browser) === guard) {
14
+ guard.cancelClick();
15
+ activeGuards.delete(browser);
16
+ }
17
+ };
18
+ if (guardedBrowsers.has(browser)) {
19
+ return disableGuard;
20
+ }
21
+ let guardedClickQueue = Promise.resolve();
22
+ try {
23
+ browser.overwriteCommand("click", async function (originalClick, options) {
24
+ const invocationGuard = activeGuards.get(browser);
25
+ if (!invocationGuard) {
26
+ return originalClick(options);
27
+ }
28
+ const guardedClickPromise = guardedClickQueue.then(async () => {
29
+ if (activeGuards.get(browser) !== invocationGuard) {
30
+ return;
31
+ }
32
+ invocationGuard.startClick();
33
+ try {
34
+ const result = await originalClick(options);
35
+ await invocationGuard.waitForNavigationCompletion();
36
+ return result;
37
+ }
38
+ catch (err) {
39
+ invocationGuard.cancelClick();
40
+ throw err;
41
+ }
42
+ });
43
+ guardedClickQueue = guardedClickPromise.then(() => undefined, () => undefined);
44
+ return guardedClickPromise;
45
+ }, true);
46
+ guardedBrowsers.add(browser);
47
+ }
48
+ catch (err) {
49
+ if (activeGuards.get(browser) === guard) {
50
+ activeGuards.delete(browser);
51
+ }
52
+ throw err;
53
+ }
54
+ return disableGuard;
55
+ };
56
+ exports.enableClickCommandGuard = enableClickCommandGuard;
57
+ //# sourceMappingURL=click-command-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"click-command-guard.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/click-command-guard.ts"],"names":[],"mappings":";;;AAMA,MAAM,YAAY,GAAG,IAAI,OAAO,EAA0C,CAAC;AAC3E,MAAM,eAAe,GAAG,IAAI,OAAO,EAAuB,CAAC;AAE3D;;;GAGG;AACI,MAAM,uBAAuB,GAAG,CAAC,OAA4B,EAAE,KAAwB,EAAgB,EAAE;IAC5G,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAEjC,MAAM,YAAY,GAAG,GAAS,EAAE;QAC5B,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE,CAAC;YACtC,KAAK,CAAC,WAAW,EAAE,CAAC;YACpB,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;IACL,CAAC,CAAC;IAEF,IAAI,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,OAAO,YAAY,CAAC;IACxB,CAAC;IAED,IAAI,iBAAiB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAE1C,IAAI,CAAC;QACD,OAAO,CAAC,gBAAgB,CACpB,OAAO,EACP,KAAK,WAAsC,aAAa,EAAE,OAAO;YAC7D,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAElD,IAAI,CAAC,eAAe,EAAE,CAAC;gBACnB,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC;YAED,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;gBAC1D,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,eAAe,EAAE,CAAC;oBAChD,OAAO;gBACX,CAAC;gBAED,eAAe,CAAC,UAAU,EAAE,CAAC;gBAE7B,IAAI,CAAC;oBACD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;oBAE5C,MAAM,eAAe,CAAC,2BAA2B,EAAE,CAAC;oBAEpD,OAAO,MAAM,CAAC;gBAClB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACX,eAAe,CAAC,WAAW,EAAE,CAAC;oBAE9B,MAAM,GAAG,CAAC;gBACd,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,iBAAiB,GAAG,mBAAmB,CAAC,IAAI,CACxC,GAAG,EAAE,CAAC,SAAS,EACf,GAAG,EAAE,CAAC,SAAS,CAClB,CAAC;YAEF,OAAO,mBAAmB,CAAC;QAC/B,CAAC,EACD,IAAI,CACP,CAAC;QACF,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE,CAAC;YACtC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,GAAG,CAAC;IACd,CAAC;IAED,OAAO,YAAY,CAAC;AACxB,CAAC,CAAC;AAjEW,QAAA,uBAAuB,2BAiElC"}
@@ -0,0 +1,13 @@
1
+ export declare const CoveragePause: {
2
+ readonly PageStart: "pageStart";
3
+ readonly BfcacheRestore: "bfcacheRestore";
4
+ readonly BeforeUnload: "beforeUnload";
5
+ };
6
+ type CoveragePause = (typeof CoveragePause)[keyof typeof CoveragePause];
7
+ /** Hooks injected into every document and, once, into the already open document. */
8
+ export declare const coverageHooksScripts: {
9
+ newDocument: string;
10
+ currentDocument: string;
11
+ };
12
+ export declare const getCoveragePause: (functionName?: string) => CoveragePause | null;
13
+ export {};
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCoveragePause = exports.coverageHooksScripts = exports.CoveragePause = void 0;
4
+ const PAGE_START_FUNCTION = "__testplane_cdp_coverage_page_start";
5
+ const BFCACHE_RESTORE_FUNCTION = "__testplane_cdp_coverage_bfcache_restore";
6
+ const BEFORE_UNLOAD_FUNCTION = "__testplane_cdp_coverage_snapshot_pause";
7
+ const HOOKS_MARKER = "__testplane_cdp_coverage_hooks_installed";
8
+ exports.CoveragePause = {
9
+ PageStart: "pageStart",
10
+ BfcacheRestore: "bfcacheRestore",
11
+ BeforeUnload: "beforeUnload",
12
+ };
13
+ const createCoverageHooksScript = (pauseAtPageStart) => [
14
+ `if (window.top === window && !window.${HOOKS_MARKER}) {`,
15
+ ` Object.defineProperty(window, "${HOOKS_MARKER}", { value: true });`,
16
+ ` function ${PAGE_START_FUNCTION}() { debugger; }`,
17
+ ` function ${BFCACHE_RESTORE_FUNCTION}() { debugger; }`,
18
+ pauseAtPageStart ? ` ${PAGE_START_FUNCTION}();` : null,
19
+ ` window.addEventListener("pageshow", function (e) { if (e.persisted) { ${BFCACHE_RESTORE_FUNCTION}(); } });`,
20
+ ` window.addEventListener("beforeunload", function ${BEFORE_UNLOAD_FUNCTION}() { debugger; });`,
21
+ "}",
22
+ ]
23
+ .filter(Boolean)
24
+ .join("\n");
25
+ /** Hooks injected into every document and, once, into the already open document. */
26
+ exports.coverageHooksScripts = {
27
+ newDocument: createCoverageHooksScript(true),
28
+ currentDocument: createCoverageHooksScript(false),
29
+ };
30
+ const getCoveragePause = (functionName) => {
31
+ switch (functionName) {
32
+ case PAGE_START_FUNCTION:
33
+ return exports.CoveragePause.PageStart;
34
+ case BFCACHE_RESTORE_FUNCTION:
35
+ return exports.CoveragePause.BfcacheRestore;
36
+ case BEFORE_UNLOAD_FUNCTION:
37
+ return exports.CoveragePause.BeforeUnload;
38
+ default:
39
+ return null;
40
+ }
41
+ };
42
+ exports.getCoveragePause = getCoveragePause;
43
+ //# sourceMappingURL=coverage-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coverage-hooks.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/coverage-hooks.ts"],"names":[],"mappings":";;;AAAA,MAAM,mBAAmB,GAAG,qCAAqC,CAAC;AAClE,MAAM,wBAAwB,GAAG,0CAA0C,CAAC;AAC5E,MAAM,sBAAsB,GAAG,yCAAyC,CAAC;AACzE,MAAM,YAAY,GAAG,0CAA0C,CAAC;AAEnD,QAAA,aAAa,GAAG;IACzB,SAAS,EAAE,WAAW;IACtB,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,cAAc;CACtB,CAAC;AAIX,MAAM,yBAAyB,GAAG,CAAC,gBAAyB,EAAU,EAAE,CACpE;IACI,wCAAwC,YAAY,KAAK;IACzD,sCAAsC,YAAY,sBAAsB;IACxE,gBAAgB,mBAAmB,kBAAkB;IACrD,gBAAgB,wBAAwB,kBAAkB;IAC1D,gBAAgB,CAAC,CAAC,CAAC,OAAO,mBAAmB,KAAK,CAAC,CAAC,CAAC,IAAI;IACzD,6EAA6E,wBAAwB,WAAW;IAChH,wDAAwD,sBAAsB,oBAAoB;IAClG,GAAG;CACN;KACI,MAAM,CAAC,OAAO,CAAC;KACf,IAAI,CAAC,IAAI,CAAC,CAAC;AAEpB,oFAAoF;AACvE,QAAA,oBAAoB,GAAG;IAChC,WAAW,EAAE,yBAAyB,CAAC,IAAI,CAAC;IAC5C,eAAe,EAAE,yBAAyB,CAAC,KAAK,CAAC;CACpD,CAAC;AAEK,MAAM,gBAAgB,GAAG,CAAC,YAAqB,EAAwB,EAAE;IAC5E,QAAQ,YAAY,EAAE,CAAC;QACnB,KAAK,mBAAmB;YACpB,OAAO,qBAAa,CAAC,SAAS,CAAC;QACnC,KAAK,wBAAwB;YACzB,OAAO,qBAAa,CAAC,cAAc,CAAC;QACxC,KAAK,sBAAsB;YACvB,OAAO,qBAAa,CAAC,YAAY,CAAC;QACtC;YACI,OAAO,IAAI,CAAC;IACpB,CAAC;AACL,CAAC,CAAC;AAXW,QAAA,gBAAgB,oBAW3B"}
@@ -18,6 +18,8 @@ const events_1 = require("../../../events");
18
18
  const modes_1 = require("./modes");
19
19
  const debug_1 = require("./debug");
20
20
  const used_dumps_tracker_1 = require("./used-dumps-tracker");
21
+ const navigation_guard_1 = require("./navigation-guard");
22
+ const coverage_hooks_1 = require("./coverage-hooks");
21
23
  /**
22
24
  * Called at the end of testplane run
23
25
  * Not using "Promise.all" here because all hashes are already calculated and cached at the start
@@ -116,8 +118,6 @@ const clearUnusedSelectivityDumps = async (config, isRunFailed) => {
116
118
  }
117
119
  };
118
120
  exports.clearUnusedSelectivityDumps = clearUnusedSelectivityDumps;
119
- const testplaneCoverageBreakScriptName = "__testplane_cdp_coverage_snapshot_pause";
120
- const scriptToEvaluateOnNewDocument = `window.addEventListener("beforeunload", function ${testplaneCoverageBreakScriptName}() {debugger;});`;
121
121
  const startSelectivity = async (browser) => {
122
122
  const { enabled, compression, sourceRoot, testDependenciesPath, mapDependencyRelativePath, mapSourceMapUrl } = browser.config.selectivity;
123
123
  if (!(0, modes_1.selectivityShouldWrite)(enabled) || !browser.publicAPI.isChromium) {
@@ -142,6 +142,7 @@ const startSelectivity = async (browser) => {
142
142
  }
143
143
  const wdSessionId = browser.sessionId;
144
144
  const cdpSessionId = await cdp.target.attachToTarget(cdpTargetId).then(r => r.sessionId);
145
+ const pageLoadStrategy = browser.publicAPI.capabilities?.pageLoadStrategy ?? "normal";
145
146
  const cssSelectivity = new css_selectivity_1.CSSSelectivity(cdp, cdpSessionId, wdSessionId, sourceRoot, mapSourceMapUrl);
146
147
  const jsSelectivity = new js_selectivity_1.JSSelectivity(cdp, cdpSessionId, sourceRoot, mapSourceMapUrl);
147
148
  await Promise.all([
@@ -160,34 +161,92 @@ const startSelectivity = async (browser) => {
160
161
  });
161
162
  let pageSwitchPromise = Promise.resolve();
162
163
  let isSelectivityStopped = false;
164
+ // A failure to process coverage means the test's dependencies would be incomplete. Missing a dependency is worse
165
+ // than failing the test (an incomplete dump silently under-runs later), so we remember the error and rethrow it
166
+ // from stopSelectivity — but still resume the renderer so the browser is never left paused.
167
+ let pageSwitchError = null;
168
+ let clickNavigationGuard = null;
169
+ const resume = async () => {
170
+ await cdp.debugger.resume(cdpSessionId).catch(() => { });
171
+ };
163
172
  const debuggerPausedFn = ({ callFrames }, eventCdpSessionId) => {
164
173
  if (eventCdpSessionId !== cdpSessionId) {
165
174
  return;
166
175
  }
167
- if (callFrames[0]?.functionName !== testplaneCoverageBreakScriptName || isSelectivityStopped) {
168
- cdp.debugger.resume(cdpSessionId).catch(() => { });
176
+ const coveragePause = (0, coverage_hooks_1.getCoveragePause)(callFrames[0]?.functionName);
177
+ const isBfcacheRestoreForClick = coveragePause === coverage_hooks_1.CoveragePause.BfcacheRestore && clickNavigationGuard?.onBfcacheRestorePause() === true;
178
+ if (coveragePause === coverage_hooks_1.CoveragePause.BeforeUnload && !isSelectivityStopped) {
179
+ // The injected top-frame beforeunload hook is a stable, synchronous navigation-intent signal. It avoids
180
+ // deprecated and experimental Page navigation lifecycle events.
181
+ clickNavigationGuard?.onBeforeUnloadPause();
182
+ }
183
+ if (isSelectivityStopped || !coveragePause) {
184
+ void resume();
169
185
  return;
170
186
  }
171
- pageSwitchPromise = pageSwitchPromise.finally(() => Promise.all([cssSelectivity.takeCoverageSnapshot(), jsSelectivity.takeCoverageSnapshot()])
172
- .catch(err => {
173
- console.error("Selectivity: couldn't take snapshot while navigating:", err);
174
- })
175
- .then(() => {
176
- cdp.debugger.resume(cdpSessionId).catch(() => { });
177
- }));
187
+ pageSwitchPromise = pageSwitchPromise.finally(async () => {
188
+ try {
189
+ // "beforeunload": leaving page still alive — snapshot+resolve it (captures it before a cross-process swap).
190
+ // "page start" / bfcache restore: previous page done, next not started — resolve its tail, then reset
191
+ // coverage and clear the script maps so the next page starts with a clean window and id namespace.
192
+ const action = coveragePause === coverage_hooks_1.CoveragePause.BeforeUnload
193
+ ? Promise.all([cssSelectivity.takeCoverageSnapshot(), jsSelectivity.takeCoverageSnapshot()])
194
+ : jsSelectivity.flushPage();
195
+ await action;
196
+ }
197
+ catch (err) {
198
+ pageSwitchError ||= err instanceof Error ? err : new Error(String(err));
199
+ }
200
+ finally {
201
+ await resume();
202
+ // pageshow.persisted is emitted after the document was restored. It is the completion signal for a
203
+ // BFCache navigation because a restored page does not emit a new DOMContentLoaded/load event, and
204
+ // Page.frameNavigated delivery is not required for this injected stable marker.
205
+ if (isBfcacheRestoreForClick) {
206
+ clickNavigationGuard?.completeBfcacheRestore();
207
+ }
208
+ }
209
+ });
178
210
  };
179
211
  cdp.debugger.on("paused", debuggerPausedFn);
180
- await cdp.page.addScriptToEvaluateOnNewDocument(cdpSessionId, { source: scriptToEvaluateOnNewDocument });
212
+ try {
213
+ await Promise.all([
214
+ cdp.page.addScriptToEvaluateOnNewDocument(cdpSessionId, { source: coverage_hooks_1.coverageHooksScripts.newDocument }),
215
+ cdp.runtime
216
+ .evaluate(cdpSessionId, { expression: coverage_hooks_1.coverageHooksScripts.currentDocument })
217
+ .catch(() => undefined),
218
+ ]);
219
+ if (pageLoadStrategy !== "none") {
220
+ clickNavigationGuard = (0, navigation_guard_1.createClickNavigationGuard)({
221
+ browser: browser.publicAPI,
222
+ cdp,
223
+ cdpSessionId,
224
+ pageLoadStrategy,
225
+ pageLoadTimeout: browser.config.pageLoadTimeout,
226
+ waitForPageSwitch: () => pageSwitchPromise,
227
+ });
228
+ }
229
+ }
230
+ catch (err) {
231
+ cdp.debugger.off("paused", debuggerPausedFn);
232
+ await Promise.allSettled([cssSelectivity.stop(true), jsSelectivity.stop(true)]);
233
+ await cdp.target.detachFromTarget(cdpSessionId).catch(() => { });
234
+ throw err;
235
+ }
181
236
  /** @param drop only performs cleanup without writing anything. Should be "true" if test is failed */
182
237
  return async function stopSelectivity(test, drop) {
183
238
  isSelectivityStopped = true;
184
239
  await pageSwitchPromise;
240
+ clickNavigationGuard?.dispose();
185
241
  const [cssDependenciesPromise, jsDependenciesPromise] = await Promise.allSettled([
186
242
  cssSelectivity.stop(drop),
187
243
  jsSelectivity.stop(drop),
188
244
  ]);
189
245
  cdp.debugger.off("paused", debuggerPausedFn);
190
246
  cdp.target.detachFromTarget(cdpSessionId).catch(() => { });
247
+ if (!drop && pageSwitchError) {
248
+ throw pageSwitchError;
249
+ }
191
250
  if (jsDependenciesPromise.status === "rejected") {
192
251
  throw jsDependenciesPromise.reason;
193
252
  }
@@ -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":";;;;;;AAAA,0DAA6B;AAC7B,wDAA0B;AAC1B,uDAAmD;AACnD,qDAAiD;AAEjD,yEAAuE;AAEvE,mCAAwG;AACxG,+CAA8C;AAC9C,mCAAsC;AACtC,mEAAoH;AACpH,+CAA8C;AAE9C,4CAA+C;AAC/C,mCAAiD;AACjD,mCAA2C;AAC3C,6DAA2D;AAG3D,yDAA2F;AAC3F,qDAAyF;AAIzF;;;GAGG;AACI,MAAM,uBAAuB,GAAG,KAAK,EAAE,MAAc,EAAE,WAAoB,EAAiB,EAAE;IACjG,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;IAC1C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;IAEjC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,GACtG,aAAa,CAAC,WAAW,CAAC;QAC9B,MAAM,OAAO,GAAG,GAAG,oBAAoB,IAAI,WAAW,EAAE,CAAC;QAEzD,IAAI,CAAC,WAAW,IAAI,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC9E,SAAS;QACb,CAAC;QAED,IAAI,CAAC,IAAA,8BAAsB,EAAC,OAAO,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAClE,SAAS;QACb,CAAC;QAED,MAAM,UAAU,GAAG,IAAA,2BAAa,EAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC;QACpE,MAAM,UAAU,GAAG,IAAA,2BAAa,EAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC;QAEpE,KAAK,MAAM,OAAO,IAAI,0BAA0B,EAAE,CAAC;YAC/C,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAE9D,IAAI,SAAS,EAAE,CAAC;gBACZ,UAAU,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;YACjD,CAAC;QACL,CAAC;QAED,IAAI,CAAC;YACD,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,CAAC,mDAAmD,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrG,CAAC;QAED,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;AACL,CAAC,CAAC;AArCW,QAAA,uBAAuB,2BAqClC;AAEF;;GAEG;AACI,MAAM,2BAA2B,GAAG,KAAK,EAAE,MAAc,EAAE,WAAoB,EAAiB,EAAE;IACrG,IAAI,OAAO,CAAC,GAAG,CAAC,wCAAwC,KAAK,OAAO,EAAE,CAAC;QACnE,OAAO;IACX,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAA,wCAAmB,GAAE,CAAC;IAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;IAC1C,MAAM,gBAAgB,GAAa,EAAE,CAAC;IAEtC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,GAAG,aAAa,CAAC,WAAW,CAAC;QAE9F,IAAI,CAAC,WAAW,IAAI,CAAC,wBAAwB,CAAC,IAAI,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAC9E,SAAS;QACb,CAAC;aAAM,IAAI,IAAA,8BAAsB,EAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAC7F,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,sCAAsC;IACtC,MAAM,MAAM,GAAG,kBAAE,CAAC,SAAS,CAAC,IAAI,GAAG,kBAAE,CAAC,SAAS,CAAC,IAAI,CAAC;IAErD,MAAM,OAAO,CAAC,GAAG,CACb,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAC,eAAe,EAAC,EAAE;QACzC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,CAAC;YAClD,OAAO;QACX,CAAC;QAED,MAAM,SAAS,GAAG,IAAA,+BAAuB,EAAC,eAAe,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,kBAAE,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QAElF,IAAI,WAAW,EAAE,CAAC;YACd,IAAI,CAAC,CAAC,MAAM,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;gBAC5D,IAAA,wBAAgB,EAAC,oBAAoB,SAAS,4BAA4B,EAAE,WAAW,CAAC,CAAC;YAC7F,CAAC;YAED,OAAO;QACX,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEnD,UAAU,IAAI,cAAc,CAAC,MAAM,CAAC;QAEpC,KAAK,MAAM,YAAY,IAAI,cAAc,EAAE,CAAC;YACxC,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAExD,wEAAwE;YACxE,IAAI,iBAAiB,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC3B,SAAS;YACb,CAAC;YAED,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;YAExD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC;gBACrD,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBAEpD,MAAM,kBAAE;qBACH,MAAM,CAAC,QAAQ,CAAC;qBAChB,IAAI,CAAC,GAAG,EAAE;oBACP,YAAY,EAAE,CAAC;gBACnB,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,IAAA,wBAAgB,EAAC,+BAA+B,QAAQ,OAAO,EAAE,GAAG,CAAC,CAAC;gBAC1E,CAAC,CAAC,CAAC;YACX,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CACL,CAAC;IAEF,IAAI,YAAY,EAAE,CAAC;QACf,IAAA,wBAAgB,EAAC,UAAU,UAAU,gBAAgB,YAAY,0CAA0C,CAAC,CAAC;IACjH,CAAC;AACL,CAAC,CAAC;AA5EW,QAAA,2BAA2B,+BA4EtC;AAEK,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAAwB,EAA8B,EAAE;IAC3F,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,eAAe,EAAE,GACxG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;IAE/B,IAAI,CAAC,IAAA,8BAAsB,EAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QACpE,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,WAAW,KAAK,mBAAW,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CACX,+GAA+G,CAClH,CAAC;IACN,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,6FAA6F,CAAC,CAAC;IACnH,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACxB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;IACzD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IACtD,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC;IAEjF,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACX;YACI,0CAA0C;YAC1C,2BAA2B,MAAM,EAAE;YACnC,sBAAsB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAC7E,CAAC,IAAI,CAAC,EAAE,CAAC,CACb,CAAC;IACN,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;IACtC,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACzF,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE,gBAAgB,IAAI,QAAQ,CAAC;IAEtF,MAAM,cAAc,GAAG,IAAI,gCAAc,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IACvG,MAAM,aAAa,GAAG,IAAI,8BAAa,CAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IAExF,MAAM,OAAO,CAAC,GAAG,CAAC;QACd,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACrE,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC;QAC3F,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC;QACjC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;QAC7B,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC;KACpC,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;QAC/F,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,IAAI,EAAE,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACxD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEzE,MAAM,aAAa,GACf,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC;YAErG,MAAM,IAAI,KAAK,CAAC,CAAC,0CAA0C,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpG,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,iBAAiB,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IACzD,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,iHAAiH;IACjH,gHAAgH;IAChH,4FAA4F;IAC5F,IAAI,eAAe,GAAiB,IAAI,CAAC;IACzC,IAAI,oBAAoB,GAAgC,IAAI,CAAC;IAE7D,MAAM,MAAM,GAAG,KAAK,IAAmB,EAAE;QACrC,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,EAAE,UAAU,EAA4B,EAAE,iBAAgC,EAAQ,EAAE;QAC1G,IAAI,iBAAiB,KAAK,YAAY,EAAE,CAAC;YACrC,OAAO;QACX,CAAC;QAED,MAAM,aAAa,GAAG,IAAA,iCAAgB,EAAC,UAAU,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QACpE,MAAM,wBAAwB,GAC1B,aAAa,KAAK,8BAAa,CAAC,cAAc,IAAI,oBAAoB,EAAE,qBAAqB,EAAE,KAAK,IAAI,CAAC;QAE7G,IAAI,aAAa,KAAK,8BAAa,CAAC,YAAY,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACxE,wGAAwG;YACxG,gEAAgE;YAChE,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;QAChD,CAAC;QAED,IAAI,oBAAoB,IAAI,CAAC,aAAa,EAAE,CAAC;YACzC,KAAK,MAAM,EAAE,CAAC;YACd,OAAO;QACX,CAAC;QAED,iBAAiB,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YACrD,IAAI,CAAC;gBACD,4GAA4G;gBAC5G,sGAAsG;gBACtG,mGAAmG;gBACnG,MAAM,MAAM,GACR,aAAa,KAAK,8BAAa,CAAC,YAAY;oBACxC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,oBAAoB,EAAE,EAAE,aAAa,CAAC,oBAAoB,EAAE,CAAC,CAAC;oBAC5F,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;gBAEpC,MAAM,MAAM,CAAC;YACjB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,eAAe,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5E,CAAC;oBAAS,CAAC;gBACP,MAAM,MAAM,EAAE,CAAC;gBAEf,mGAAmG;gBACnG,kGAAkG;gBAClG,gFAAgF;gBAChF,IAAI,wBAAwB,EAAE,CAAC;oBAC3B,oBAAoB,EAAE,sBAAsB,EAAE,CAAC;gBACnD,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAE5C,IAAI,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,CAAC;YACd,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,qCAAoB,CAAC,WAAW,EAAE,CAAC;YACrG,GAAG,CAAC,OAAO;iBACN,QAAQ,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,qCAAoB,CAAC,eAAe,EAAE,CAAC;iBAC5E,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;SAC9B,CAAC,CAAC;QAEH,IAAI,gBAAgB,KAAK,MAAM,EAAE,CAAC;YAC9B,oBAAoB,GAAG,IAAA,6CAA0B,EAAC;gBAC9C,OAAO,EAAE,OAAO,CAAC,SAAS;gBAC1B,GAAG;gBACH,YAAY;gBACZ,gBAAgB;gBAChB,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,eAAe;gBAC/C,iBAAiB,EAAE,GAAG,EAAE,CAAC,iBAAiB;aAC7C,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAC7C,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChF,MAAM,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAChE,MAAM,GAAG,CAAC;IACd,CAAC;IAED,qGAAqG;IACrG,OAAO,KAAK,UAAU,eAAe,CAAC,IAAU,EAAE,IAAa;QAC3D,oBAAoB,GAAG,IAAI,CAAC;QAE5B,MAAM,iBAAiB,CAAC;QAExB,oBAAoB,EAAE,OAAO,EAAE,CAAC;QAEhC,MAAM,CAAC,sBAAsB,EAAE,qBAAqB,CAAC,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;YAC7E,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QAEH,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAC7C,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE1D,IAAI,CAAC,IAAI,IAAI,eAAe,EAAE,CAAC;YAC3B,MAAM,eAAe,CAAC;QAC1B,CAAC;QAED,IAAI,qBAAqB,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC9C,MAAM,qBAAqB,CAAC,MAAM,CAAC;QACvC,CAAC;QAED,IAAI,sBAAsB,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC/C,MAAM,sBAAsB,CAAC,MAAM,CAAC;QACxC,CAAC;QAED,MAAM,eAAe,GAAG,sBAAsB,CAAC,KAAK,CAAC;QACrD,MAAM,cAAc,GAAG,qBAAqB,CAAC,KAAK,CAAC;QAEnD,IAAI,IAAI,IAAI,CAAC,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC;YAC5D,OAAO;QACX,CAAC;QAED,MAAM,oBAAoB,GAAG,IAAA,oDAAyB,EAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC;QAC1F,MAAM,WAAW,GAAG,IAAA,mCAA2B,EAC3C,EAAE,GAAG,EAAE,eAAe,EAAE,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,EAAE,EACvD,yBAAyB,EACzB,SAAS,CACZ,CAAC;QACF,MAAM,aAAa,GAAG,IAAA,mCAA2B,EAC7C,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAA,2DAAmC,GAAE,EAAE,GAAG,EAAE,IAAA,4DAAoC,GAAE,EAAE,EACrG,yBAAyB,EACzB,WAAW,CACd,CAAC;QAEF,OAAO,CAAC,IAAI,EAAE,CAAC;YACX,KAAK,EAAE,qBAAY,CAAC,iBAAiB;YACrC,OAAO,EAAE;gBACL,oBAAoB;gBACpB,WAAW;gBACX,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;gBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;aACF;YAC3B,IAAI,EAAE,IAAA,+BAAuB,EAAC,WAAW,EAAE,aAAa,CAAwB;SACnF,CAAC,CAAC;QAEH,MAAM,oBAAoB,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;IACzE,CAAC,CAAC;AACN,CAAC,CAAC;AA7MW,QAAA,gBAAgB,oBA6M3B"}
@@ -1,23 +1,60 @@
1
1
  import type { CDP } from "..";
2
2
  import type { CDPSessionId } from "../types";
3
3
  import type { SelectivityMapSourceMapUrlFn } from "../../../config/types";
4
+ /**
5
+ * CDP "scriptId" is NOT stable across a test: it is reused for different scripts over time (a cross-process
6
+ * navigation restarts the counter; bfcache restore re-issues the previous document's ids; freed ids get reassigned
7
+ * to new scripts). "Profiler.takePreciseCoverage" reports only the raw "scriptId", with no way to tell which script
8
+ * a given id currently means. Therefore coverage can only be attributed correctly if it is resolved WHILE the
9
+ * scripts are still live and the "scriptId -> source" mapping is current.
10
+ *
11
+ * The orchestration in index.ts pauses the renderer at two boundaries and drives this class:
12
+ * - on "beforeunload": takeCoverageSnapshot() — resolve the leaving page while its isolate is still alive
13
+ * (required for cross-process navigation, where the old isolate is gone by the time the next document starts);
14
+ * - at the new document start (and bfcache "pageshow"): flushPage() — resolve whatever is left of the previous
15
+ * page (same-process, incl. code that ran during unload), then RESET precise coverage and CLEAR the script maps
16
+ * so the next page parses into an empty map and its coverage window cannot mix with the previous page's.
17
+ * Because the maps are cleared at every page boundary, plain "scriptId" keys are unambiguous within a page.
18
+ */
4
19
  export declare class JSSelectivity {
5
20
  private readonly _cdp;
6
21
  private readonly _sessionId;
7
22
  private readonly _sourceRoot;
8
23
  private readonly _mapSourceMapUrl;
9
24
  private _debuggerOnScriptParsedFn;
10
- private readonly _scriptsSource;
11
- private readonly _scriptsSourceMap;
12
- private readonly _scriptIdToSourceUrl;
13
- private readonly _scriptIdToSourceMapUrl;
14
- private readonly _coverageResult;
25
+ private _scriptsSource;
26
+ private _scriptsSourceMap;
27
+ private _scriptIdToSourceUrl;
28
+ private _scriptIdToSourceMapUrl;
29
+ /** Last seen content hash per "scriptId" — used to detect a "scriptId" reused for a different script */
30
+ private _scriptIdToHash;
31
+ /** Source files collected across all pages of the current test */
32
+ private readonly _dependingSourceFiles;
15
33
  constructor(cdp: CDP, sessionId: CDPSessionId, sourceRoot: string, mapSourceMapUrl: SelectivityMapSourceMapUrlFn | null);
34
+ private _loadScriptSource;
16
35
  private _processScript;
17
36
  private _ensureScriptsAreLoading;
18
37
  private _waitForLoadingScripts;
38
+ /**
39
+ * Resolves the given coverage into original source files and accumulates them into "_dependingSourceFiles".
40
+ * Must run while the "scriptId -> source" maps still describe the scripts the coverage was taken from
41
+ * (i.e. before the page is navigated away and the maps are cleared).
42
+ */
43
+ private _resolveCoverageToDeps;
19
44
  start(): Promise<void>;
45
+ /**
46
+ * Called on "beforeunload", while the leaving page is still alive (its isolate not yet destroyed). Resolves the
47
+ * page's coverage into dependencies. Does NOT reset coverage or clear maps — that happens later, at the next
48
+ * page boundary (flushPage), once the leaving page has fully finished executing.
49
+ */
20
50
  takeCoverageSnapshot(): Promise<void>;
51
+ /**
52
+ * Called at a page boundary — the new document's start, and on bfcache "pageshow" — while the renderer is paused
53
+ * before the incoming page's scripts run. Resolves whatever is left of the previous page (same-process code that
54
+ * ran during unload), then RESETS precise coverage and CLEARS the script maps. This guarantees the next page's
55
+ * coverage window and "scriptId" namespace start empty, so reused ids cannot be mistaken for the previous page's.
56
+ */
57
+ flushPage(): Promise<void>;
21
58
  /** @param drop only performs cleanup without providing actual deps. Should be "true" if test is failed */
22
59
  stop(drop?: boolean): Promise<Set<string> | null>;
23
60
  }