@geometra/proxy 1.19.20 → 1.19.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/extractor.js CHANGED
@@ -1,4 +1,5 @@
1
- import { enrichSnapshotWithCdpAx } from './a11y-enrich.js';
1
+ import { performance } from 'node:perf_hooks';
2
+ import { enrichSnapshotWithCdpAx, shouldEnrichSnapshotWithCdpAx, } from './a11y-enrich.js';
2
3
  import { frameOriginInRootPage } from './frame-offset.js';
3
4
  import { offsetLayoutSubtree } from './layout-offset.js';
4
5
  /**
@@ -21,15 +22,26 @@ function browserExtractGeometry() {
21
22
  return out;
22
23
  }
23
24
  function getAccessibleName(el) {
25
+ const role = el.getAttribute('role');
24
26
  const aria = el.getAttribute('aria-label');
25
27
  if (aria)
26
28
  return aria.trim() || undefined;
27
- const alt = el.getAttribute('alt');
28
- if (alt)
29
- return alt.trim() || undefined;
30
- const title = el.getAttribute('title');
31
- if (title)
32
- return title.trim() || undefined;
29
+ const labelledBy = el.getAttribute('aria-labelledby');
30
+ if (labelledBy) {
31
+ const text = labelledBy
32
+ .split(/\s+/)
33
+ .map(id => {
34
+ const target = document.getElementById(id);
35
+ if (!target)
36
+ return '';
37
+ return textWithoutNestedControls(target).replace(/\s+/g, ' ').trim();
38
+ })
39
+ .filter(Boolean)
40
+ .join(' ')
41
+ .trim();
42
+ if (text)
43
+ return text.length > 100 ? text.slice(0, 100) : text;
44
+ }
33
45
  if ((el instanceof HTMLInputElement || el instanceof HTMLSelectElement || el instanceof HTMLTextAreaElement) &&
34
46
  el.labels &&
35
47
  el.labels.length > 0) {
@@ -37,10 +49,44 @@ function browserExtractGeometry() {
37
49
  if (t)
38
50
  return t;
39
51
  }
40
- const ph = el.getAttribute('placeholder');
41
- if (ph)
42
- return ph.trim() || undefined;
43
- const tc = el.textContent?.trim();
52
+ if (el instanceof HTMLElement && el.id) {
53
+ const label = document.querySelector(`label[for="${CSS.escape(el.id)}"]`);
54
+ const t = label ? textWithoutNestedControls(label).replace(/\s+/g, ' ').trim() : '';
55
+ if (t)
56
+ return t;
57
+ }
58
+ if (el.parentElement?.tagName.toLowerCase() === 'label') {
59
+ const t = textWithoutNestedControls(el.parentElement).replace(/\s+/g, ' ').trim();
60
+ if (t)
61
+ return t;
62
+ }
63
+ if (el instanceof HTMLInputElement && ['button', 'submit', 'reset'].includes(el.type)) {
64
+ const value = el.value?.trim();
65
+ if (value)
66
+ return value.length > 100 ? value.slice(0, 100) : value;
67
+ }
68
+ const alt = el.getAttribute('alt');
69
+ if (alt)
70
+ return alt.trim() || undefined;
71
+ if (el.tagName.toLowerCase() === 'a' || el.tagName.toLowerCase() === 'button' || role === 'link' || role === 'button') {
72
+ const descendantAlt = Array.from(el.querySelectorAll('img[alt]'))
73
+ .map(img => img.getAttribute('alt')?.trim() ?? '')
74
+ .find(Boolean);
75
+ if (descendantAlt)
76
+ return descendantAlt.length > 100 ? descendantAlt.slice(0, 100) : descendantAlt;
77
+ }
78
+ const title = el.getAttribute('title');
79
+ if (title)
80
+ return title.trim() || undefined;
81
+ const textLikeControl = el instanceof HTMLTextAreaElement ||
82
+ el instanceof HTMLSelectElement ||
83
+ (el instanceof HTMLInputElement && !['checkbox', 'radio', 'file', 'button', 'submit', 'reset', 'hidden', 'range', 'color'].includes(el.type)) ||
84
+ role === 'textbox' ||
85
+ role === 'combobox';
86
+ const placeholder = el.getAttribute('aria-placeholder') || (textLikeControl ? el.getAttribute('placeholder') : null);
87
+ if (placeholder)
88
+ return placeholder.trim() || undefined;
89
+ const tc = textWithoutNestedControls(el).replace(/\s+/g, ' ').trim();
44
90
  if (tc && tc.length > 0) {
45
91
  return tc.length > 100 ? tc.slice(0, 100) : tc;
46
92
  }
@@ -544,10 +590,15 @@ function cloneLayout(layout) {
544
590
  function cloneTree(tree) {
545
591
  return structuredClone(tree);
546
592
  }
547
- export async function extractFrameGeometry(frame) {
593
+ async function captureFrameGeometry(frame) {
548
594
  const raw = await frame.evaluate(browserExtractGeometry);
549
- const tree = raw.tree;
550
- const layout = raw.layout;
595
+ return {
596
+ layout: raw.layout,
597
+ tree: raw.tree,
598
+ };
599
+ }
600
+ export async function extractFrameGeometry(frame) {
601
+ const { tree, layout } = await captureFrameGeometry(frame);
551
602
  return {
552
603
  layout,
553
604
  tree,
@@ -555,8 +606,12 @@ export async function extractFrameGeometry(frame) {
555
606
  };
556
607
  }
557
608
  export async function mergeAllIframes(tree, layout, ownerFrame) {
609
+ if (ownerFrame.childFrames().length === 0)
610
+ return;
558
611
  async function dfs(t, l, f) {
559
612
  const subFrames = f.childFrames();
613
+ if (subFrames.length === 0)
614
+ return;
560
615
  let slot = 0;
561
616
  const tch = t.children ?? [];
562
617
  const lch = l.children;
@@ -566,7 +621,7 @@ export async function mergeAllIframes(tree, layout, ownerFrame) {
566
621
  if (st.semantic?.tag === 'iframe') {
567
622
  const cf = subFrames[slot++];
568
623
  if (cf && !cf.isDetached()) {
569
- const snap = await extractFrameGeometry(cf);
624
+ const snap = await captureFrameGeometry(cf);
570
625
  await mergeAllIframes(snap.tree, snap.layout, cf);
571
626
  const { x: ox, y: oy } = await frameOriginInRootPage(cf);
572
627
  sl.children = snap.layout.children.map(c => {
@@ -589,14 +644,44 @@ export async function mergeAllIframes(tree, layout, ownerFrame) {
589
644
  /**
590
645
  * Full page: main frame + every nested iframe (any origin) + optional CDP AX name enrichment.
591
646
  */
592
- export async function extractGeometry(page) {
593
- const main = await extractFrameGeometry(page.mainFrame());
594
- await mergeAllIframes(main.tree, main.layout, page.mainFrame());
595
- await enrichSnapshotWithCdpAx(page, main);
596
- return {
597
- layout: main.layout,
598
- tree: main.tree,
599
- treeJson: JSON.stringify(main.tree),
647
+ export async function extractGeometry(page, options) {
648
+ const trace = options?.trace;
649
+ const totalStartedAt = performance.now();
650
+ const mainFrameStartedAt = performance.now();
651
+ const mainFrame = await captureFrameGeometry(page.mainFrame());
652
+ if (trace) {
653
+ trace.mainFrameMs = performance.now() - mainFrameStartedAt;
654
+ trace.iframeCount = Math.max(0, page.frames().length - 1);
655
+ }
656
+ const main = {
657
+ layout: mainFrame.layout,
658
+ tree: mainFrame.tree,
659
+ treeJson: '',
600
660
  };
661
+ const iframeMergeStartedAt = performance.now();
662
+ await mergeAllIframes(main.tree, main.layout, page.mainFrame());
663
+ if (trace) {
664
+ trace.iframeMergeMs = performance.now() - iframeMergeStartedAt;
665
+ }
666
+ const axDecisionStartedAt = performance.now();
667
+ const shouldRunAxEnrichment = shouldEnrichSnapshotWithCdpAx(main);
668
+ if (trace) {
669
+ trace.axDecisionMs = performance.now() - axDecisionStartedAt;
670
+ trace.axRan = shouldRunAxEnrichment;
671
+ }
672
+ if (shouldRunAxEnrichment) {
673
+ const axEnrichStartedAt = performance.now();
674
+ await enrichSnapshotWithCdpAx(page, main, options?.axSessionManager);
675
+ if (trace) {
676
+ trace.axEnrichMs = performance.now() - axEnrichStartedAt;
677
+ }
678
+ }
679
+ const treeJsonStartedAt = performance.now();
680
+ main.treeJson = JSON.stringify(main.tree);
681
+ if (trace) {
682
+ trace.treeJsonMs = performance.now() - treeJsonStartedAt;
683
+ trace.totalMs = performance.now() - totalStartedAt;
684
+ }
685
+ return main;
601
686
  }
602
687
  //# sourceMappingURL=extractor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extractor.js","sourceRoot":"","sources":["../src/extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extractor.js","sourceRoot":"","sources":["../src/extractor.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,34 @@
1
1
  import type { Page } from 'playwright';
2
+ import { type ExtractGeometryTrace } from './extractor.js';
2
3
  export interface GeometryWsHub {
3
4
  /** Run extraction and broadcast (debounced observer calls this). */
4
5
  scheduleExtract: () => void;
5
6
  /** Wait until any in-flight extract + broadcast finishes. */
6
7
  flushExtract: () => Promise<void>;
8
+ getTrace: () => GeometryWsTrace;
7
9
  close: () => Promise<void>;
8
10
  }
11
+ export interface GeometryExtractRecoveryTrace {
12
+ attemptCount: number;
13
+ domContentLoadedWaitMs: number;
14
+ loadWaitMs: number;
15
+ }
16
+ export interface GeometryFirstExtractTrace {
17
+ beforeInputMs: number;
18
+ extractMs: number;
19
+ broadcastMs: number;
20
+ totalMs: number;
21
+ changed: boolean;
22
+ extractor: ExtractGeometryTrace;
23
+ recovery: GeometryExtractRecoveryTrace;
24
+ }
25
+ export interface GeometryWsTrace {
26
+ extractCount: number;
27
+ firstExtract?: GeometryFirstExtractTrace;
28
+ }
9
29
  export declare function startGeometryWebSocket(options: {
10
30
  port: number;
11
- page: Page;
31
+ page: Page | Promise<Page>;
12
32
  /** DOM mutation debounce (ms). */
13
33
  debounceMs?: number;
14
34
  /** Optional promise that must resolve before extracts or input actions run. */
@@ -16,5 +36,6 @@ export declare function startGeometryWebSocket(options: {
16
36
  onListening?: (port: number) => void;
17
37
  onError?: (err: unknown) => void;
18
38
  }): GeometryWsHub;
39
+ export declare function primeDomObserver(page: Page, scheduleExtract: () => void): Promise<void>;
19
40
  export declare function installDomObserver(page: Page, scheduleExtract: () => void): Promise<void>;
20
41
  //# sourceMappingURL=geometry-ws.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"geometry-ws.d.ts","sourceRoot":"","sources":["../src/geometry-ws.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAwStC,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,6DAA6D;IAC7D,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC9C,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,IAAI,CAAA;IACV,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAA;CACjC,GAAG,aAAa,CAoOhB;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB/F"}
1
+ {"version":3,"file":"geometry-ws.d.ts","sourceRoot":"","sources":["../src/geometry-ws.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAiBtC,OAAO,EAAmB,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAiU3E,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,6DAA6D;IAC7D,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,QAAQ,EAAE,MAAM,eAAe,CAAA;IAC/B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B;AAED,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,MAAM,CAAA;IACpB,sBAAsB,EAAE,MAAM,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,oBAAoB,CAAA;IAC/B,QAAQ,EAAE,4BAA4B,CAAA;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,yBAAyB,CAAA;CACzC;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC9C,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAA;CACjC,GAAG,aAAa,CA2QhB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7F;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB/F"}
@@ -1,9 +1,48 @@
1
+ import { performance } from 'node:perf_hooks';
1
2
  import { WebSocketServer } from 'ws';
2
3
  import { attachFiles, clearFillLookupCache, createFillLookupCache, fillFields, pickListboxOption, resolveExistingFiles, setFieldChoice, setFieldText, selectNativeOption, setCheckedControl, wheelAt, } from './dom-actions.js';
4
+ import { createCdpAxSessionManager } from './a11y-enrich.js';
3
5
  import { coalescePatches, diffLayout } from './diff-layout.js';
4
6
  import { extractGeometry } from './extractor.js';
5
7
  import { isClickEventMessage, isCompositionMessage, isFillFieldsMessage, isFileMessage, isKeyMessage, isListboxPickMessage, isNavigateMessage, isResizeMessage, isSetFieldChoiceMessage, isSetFieldTextMessage, isSetCheckedMessage, isSelectOptionMessage, isWheelMessage, PROXY_PROTOCOL_VERSION, } from './types.js';
6
8
  const DOM_OBSERVER_BINDINGS = new WeakSet();
9
+ async function bindDomObserverBridge(page, scheduleExtract) {
10
+ if (DOM_OBSERVER_BINDINGS.has(page))
11
+ return;
12
+ await page.exposeFunction('__geometraProxyNotify', () => {
13
+ scheduleExtract();
14
+ });
15
+ await page.addInitScript(() => {
16
+ const w = window;
17
+ if (w.__geometraProxyObserverBootstrapped)
18
+ return;
19
+ const install = () => {
20
+ if (w.__geometraProxyObserverInstalled)
21
+ return;
22
+ const root = document.documentElement;
23
+ if (!root)
24
+ return;
25
+ const observer = new MutationObserver(() => {
26
+ void w.__geometraProxyNotify?.();
27
+ });
28
+ observer.observe(root, {
29
+ subtree: true,
30
+ childList: true,
31
+ attributes: true,
32
+ characterData: true,
33
+ });
34
+ w.__geometraProxyObserverInstalled = true;
35
+ };
36
+ if (document.readyState === 'loading') {
37
+ document.addEventListener('DOMContentLoaded', install, { once: true });
38
+ }
39
+ else {
40
+ install();
41
+ }
42
+ w.__geometraProxyObserverBootstrapped = true;
43
+ });
44
+ DOM_OBSERVER_BINDINGS.add(page);
45
+ }
7
46
  function isProtocolCompatible(peerVersion) {
8
47
  if (peerVersion === undefined)
9
48
  return true;
@@ -66,7 +105,7 @@ async function applyKeyPhase(page, msg) {
66
105
  if (msg.shiftKey)
67
106
  await page.keyboard.up('Shift');
68
107
  }
69
- async function handleClientMessage(page, ws, raw, fieldLookupCache, waitForBeforeInput, onViewportOrInput, onHandlerError) {
108
+ async function handleClientMessage(waitForPage, ws, raw, fieldLookupCache, waitForBeforeInput, onViewportOrInput, onHandlerError) {
70
109
  let msg;
71
110
  try {
72
111
  msg = JSON.parse(String(raw));
@@ -98,6 +137,7 @@ async function handleClientMessage(page, ws, raw, fieldLookupCache, waitForBefor
98
137
  }));
99
138
  };
100
139
  try {
140
+ const page = await waitForPage();
101
141
  if (isResizeMessage(msg)) {
102
142
  const w = Math.max(1, Math.floor(msg.width));
103
143
  const h = Math.max(1, Math.floor(msg.height));
@@ -244,6 +284,7 @@ export function startGeometryWebSocket(options) {
244
284
  const debounceMs = options.debounceMs ?? 50;
245
285
  const clients = new Set();
246
286
  const wss = new WebSocketServer({ port: options.port });
287
+ const axSessionManager = createCdpAxSessionManager();
247
288
  let prevLayout = null;
248
289
  let prevTreeJson = null;
249
290
  let debounceTimer = null;
@@ -253,16 +294,23 @@ export function startGeometryWebSocket(options) {
253
294
  let pendingInputAcks = [];
254
295
  const fieldLookupCache = createFillLookupCache();
255
296
  const beforeInput = options.beforeInput?.then(() => undefined);
297
+ const trace = { extractCount: 0 };
298
+ const pagePromise = Promise.resolve(options.page);
256
299
  async function waitForBeforeInput() {
257
300
  if (!beforeInput)
258
301
  return;
259
302
  await beforeInput;
260
303
  }
261
- options.page.on('framenavigated', frame => {
262
- if (frame === options.page.mainFrame()) {
263
- clearFillLookupCache(fieldLookupCache);
264
- }
265
- });
304
+ async function waitForPage() {
305
+ return await pagePromise;
306
+ }
307
+ void pagePromise.then(page => {
308
+ page.on('framenavigated', frame => {
309
+ if (frame === page.mainFrame()) {
310
+ clearFillLookupCache(fieldLookupCache);
311
+ }
312
+ });
313
+ }).catch(err => options.onError?.(err));
266
314
  function sendPendingInputAcks() {
267
315
  if (pendingInputAcks.length === 0)
268
316
  return;
@@ -343,10 +391,37 @@ export function startGeometryWebSocket(options) {
343
391
  return true;
344
392
  }
345
393
  async function runExtract() {
394
+ const runStartedAt = performance.now();
395
+ const beforeInputStartedAt = performance.now();
346
396
  try {
347
397
  await waitForBeforeInput();
348
- const snap = await extractGeometryWithRecovery(options.page);
349
- return broadcastSnapshot(snap);
398
+ const beforeInputMs = performance.now() - beforeInputStartedAt;
399
+ const extractorTrace = {};
400
+ const recoveryTrace = {
401
+ attemptCount: 0,
402
+ domContentLoadedWaitMs: 0,
403
+ loadWaitMs: 0,
404
+ };
405
+ const page = await waitForPage();
406
+ const extractStartedAt = performance.now();
407
+ const snap = await extractGeometryWithRecovery(page, axSessionManager, extractorTrace, recoveryTrace);
408
+ const extractMs = performance.now() - extractStartedAt;
409
+ const broadcastStartedAt = performance.now();
410
+ const changed = broadcastSnapshot(snap);
411
+ const broadcastMs = performance.now() - broadcastStartedAt;
412
+ trace.extractCount += 1;
413
+ if (!trace.firstExtract) {
414
+ trace.firstExtract = {
415
+ beforeInputMs,
416
+ extractMs,
417
+ broadcastMs,
418
+ totalMs: performance.now() - runStartedAt,
419
+ changed,
420
+ extractor: { ...extractorTrace },
421
+ recovery: { ...recoveryTrace },
422
+ };
423
+ }
424
+ return changed;
350
425
  }
351
426
  catch (err) {
352
427
  options.onError?.(err);
@@ -412,7 +487,7 @@ export function startGeometryWebSocket(options) {
412
487
  }
413
488
  ws.on('message', (raw) => {
414
489
  actionQueue = actionQueue
415
- .then(() => handleClientMessage(options.page, ws, raw, fieldLookupCache, waitForBeforeInput, (kind, requestId, result) => {
490
+ .then(() => handleClientMessage(waitForPage, ws, raw, fieldLookupCache, waitForBeforeInput, (kind, requestId, result) => {
416
491
  if (kind === 'resize') {
417
492
  void runExtractQueued();
418
493
  }
@@ -439,22 +514,23 @@ export function startGeometryWebSocket(options) {
439
514
  await runExtractQueued();
440
515
  sendPendingInputAcks();
441
516
  },
517
+ getTrace: () => structuredClone(trace),
442
518
  close: () => new Promise((resolve, reject) => {
443
- for (const ws of clients) {
444
- ws.close();
445
- }
446
- clients.clear();
447
- wss.close(err => (err ? reject(err) : resolve()));
519
+ void axSessionManager.close().finally(() => {
520
+ for (const ws of clients) {
521
+ ws.close();
522
+ }
523
+ clients.clear();
524
+ wss.close(err => (err ? reject(err) : resolve()));
525
+ });
448
526
  }),
449
527
  };
450
528
  }
529
+ export async function primeDomObserver(page, scheduleExtract) {
530
+ await bindDomObserverBridge(page, scheduleExtract);
531
+ }
451
532
  export async function installDomObserver(page, scheduleExtract) {
452
- if (!DOM_OBSERVER_BINDINGS.has(page)) {
453
- await page.exposeFunction('__geometraProxyNotify', () => {
454
- scheduleExtract();
455
- });
456
- DOM_OBSERVER_BINDINGS.add(page);
457
- }
533
+ await bindDomObserverBridge(page, scheduleExtract);
458
534
  await page.evaluate(() => {
459
535
  const w = window;
460
536
  if (w.__geometraProxyObserverInstalled)
@@ -475,18 +551,31 @@ function isNavigationTransitionError(err) {
475
551
  const message = err instanceof Error ? err.message : String(err);
476
552
  return /Execution context was destroyed|Cannot find context with specified id|Frame was detached|navigation/i.test(message);
477
553
  }
478
- async function extractGeometryWithRecovery(page) {
554
+ async function extractGeometryWithRecovery(page, axSessionManager, extractTrace, recoveryTrace) {
479
555
  let lastNavigationError = null;
556
+ let domContentLoadedWaitMs = 0;
557
+ let loadWaitMs = 0;
480
558
  for (let attempt = 0; attempt < 3; attempt++) {
481
559
  try {
482
- return await extractGeometry(page);
560
+ if (recoveryTrace) {
561
+ recoveryTrace.attemptCount = attempt + 1;
562
+ }
563
+ return await extractGeometry(page, { axSessionManager, trace: extractTrace });
483
564
  }
484
565
  catch (err) {
485
566
  if (page.isClosed() || !isNavigationTransitionError(err))
486
567
  throw err;
487
568
  lastNavigationError = err instanceof Error ? err : new Error(String(err));
569
+ const domContentLoadedStartedAt = performance.now();
488
570
  await page.waitForLoadState('domcontentloaded', { timeout: 2500 }).catch(() => { });
571
+ domContentLoadedWaitMs += performance.now() - domContentLoadedStartedAt;
572
+ const loadStartedAt = performance.now();
489
573
  await page.waitForLoadState('load', { timeout: 1000 }).catch(() => { });
574
+ loadWaitMs += performance.now() - loadStartedAt;
575
+ if (recoveryTrace) {
576
+ recoveryTrace.domContentLoadedWaitMs = domContentLoadedWaitMs;
577
+ recoveryTrace.loadWaitMs = loadWaitMs;
578
+ }
490
579
  }
491
580
  }
492
581
  const detail = lastNavigationError?.message ?? 'Navigation interrupted extraction';