@geometra/proxy 1.19.22 → 1.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/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,33 @@ 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 resolveChain = (ids, visited) => ids
32
+ .split(/\s+/)
33
+ .map(id => {
34
+ if (visited.has(id))
35
+ return '';
36
+ visited.add(id);
37
+ const target = document.getElementById(id);
38
+ if (!target)
39
+ return '';
40
+ const chained = target.getAttribute('aria-labelledby');
41
+ if (chained)
42
+ return resolveChain(chained, visited);
43
+ return textWithoutNestedControls(target).replace(/\s+/g, ' ').trim();
44
+ })
45
+ .filter(Boolean)
46
+ .join(' ')
47
+ .trim();
48
+ const text = resolveChain(labelledBy, new Set());
49
+ if (text)
50
+ return text.length > 100 ? text.slice(0, 100) : text;
51
+ }
33
52
  if ((el instanceof HTMLInputElement || el instanceof HTMLSelectElement || el instanceof HTMLTextAreaElement) &&
34
53
  el.labels &&
35
54
  el.labels.length > 0) {
@@ -37,10 +56,44 @@ function browserExtractGeometry() {
37
56
  if (t)
38
57
  return t;
39
58
  }
40
- const ph = el.getAttribute('placeholder');
41
- if (ph)
42
- return ph.trim() || undefined;
43
- const tc = el.textContent?.trim();
59
+ if (el instanceof HTMLElement && el.id) {
60
+ const label = document.querySelector(`label[for="${CSS.escape(el.id)}"]`);
61
+ const t = label ? textWithoutNestedControls(label).replace(/\s+/g, ' ').trim() : '';
62
+ if (t)
63
+ return t;
64
+ }
65
+ if (el.parentElement?.tagName.toLowerCase() === 'label') {
66
+ const t = textWithoutNestedControls(el.parentElement).replace(/\s+/g, ' ').trim();
67
+ if (t)
68
+ return t;
69
+ }
70
+ if (el instanceof HTMLInputElement && ['button', 'submit', 'reset'].includes(el.type)) {
71
+ const value = el.value?.trim();
72
+ if (value)
73
+ return value.length > 100 ? value.slice(0, 100) : value;
74
+ }
75
+ const alt = el.getAttribute('alt');
76
+ if (alt)
77
+ return alt.trim() || undefined;
78
+ if (el.tagName.toLowerCase() === 'a' || el.tagName.toLowerCase() === 'button' || role === 'link' || role === 'button') {
79
+ const descendantAlt = Array.from(el.querySelectorAll('img[alt]'))
80
+ .map(img => img.getAttribute('alt')?.trim() ?? '')
81
+ .find(Boolean);
82
+ if (descendantAlt)
83
+ return descendantAlt.length > 100 ? descendantAlt.slice(0, 100) : descendantAlt;
84
+ }
85
+ const title = el.getAttribute('title');
86
+ if (title)
87
+ return title.trim() || undefined;
88
+ const textLikeControl = el instanceof HTMLTextAreaElement ||
89
+ el instanceof HTMLSelectElement ||
90
+ (el instanceof HTMLInputElement && !['checkbox', 'radio', 'file', 'button', 'submit', 'reset', 'hidden', 'range', 'color'].includes(el.type)) ||
91
+ role === 'textbox' ||
92
+ role === 'combobox';
93
+ const placeholder = el.getAttribute('aria-placeholder') || (textLikeControl ? el.getAttribute('placeholder') : null);
94
+ if (placeholder)
95
+ return placeholder.trim() || undefined;
96
+ const tc = textWithoutNestedControls(el).replace(/\s+/g, ' ').trim();
44
97
  if (tc && tc.length > 0) {
45
98
  return tc.length > 100 ? tc.slice(0, 100) : tc;
46
99
  }
@@ -104,12 +157,24 @@ function browserExtractGeometry() {
104
157
  return undefined;
105
158
  return trimmed.length > 240 ? trimmed.slice(0, 240) : trimmed;
106
159
  }
107
- function referencedText(ids) {
160
+ function referencedText(ids, visited) {
108
161
  if (!ids)
109
162
  return undefined;
163
+ const seen = visited ?? new Set();
110
164
  const text = ids
111
165
  .split(/\s+/)
112
- .map(id => document.getElementById(id)?.textContent?.trim() ?? '')
166
+ .map(id => {
167
+ if (seen.has(id))
168
+ return '';
169
+ seen.add(id);
170
+ const target = document.getElementById(id);
171
+ if (!target)
172
+ return '';
173
+ const chained = target.getAttribute('aria-labelledby');
174
+ if (chained)
175
+ return referencedText(chained, seen) ?? '';
176
+ return target.textContent?.trim() ?? '';
177
+ })
113
178
  .filter(Boolean)
114
179
  .join(' ');
115
180
  return normalizedControlValue(text);
@@ -544,10 +609,15 @@ function cloneLayout(layout) {
544
609
  function cloneTree(tree) {
545
610
  return structuredClone(tree);
546
611
  }
547
- export async function extractFrameGeometry(frame) {
612
+ async function captureFrameGeometry(frame) {
548
613
  const raw = await frame.evaluate(browserExtractGeometry);
549
- const tree = raw.tree;
550
- const layout = raw.layout;
614
+ return {
615
+ layout: raw.layout,
616
+ tree: raw.tree,
617
+ };
618
+ }
619
+ export async function extractFrameGeometry(frame) {
620
+ const { tree, layout } = await captureFrameGeometry(frame);
551
621
  return {
552
622
  layout,
553
623
  tree,
@@ -555,8 +625,12 @@ export async function extractFrameGeometry(frame) {
555
625
  };
556
626
  }
557
627
  export async function mergeAllIframes(tree, layout, ownerFrame) {
628
+ if (ownerFrame.childFrames().length === 0)
629
+ return;
558
630
  async function dfs(t, l, f) {
559
631
  const subFrames = f.childFrames();
632
+ if (subFrames.length === 0)
633
+ return;
560
634
  let slot = 0;
561
635
  const tch = t.children ?? [];
562
636
  const lch = l.children;
@@ -566,7 +640,7 @@ export async function mergeAllIframes(tree, layout, ownerFrame) {
566
640
  if (st.semantic?.tag === 'iframe') {
567
641
  const cf = subFrames[slot++];
568
642
  if (cf && !cf.isDetached()) {
569
- const snap = await extractFrameGeometry(cf);
643
+ const snap = await captureFrameGeometry(cf);
570
644
  await mergeAllIframes(snap.tree, snap.layout, cf);
571
645
  const { x: ox, y: oy } = await frameOriginInRootPage(cf);
572
646
  sl.children = snap.layout.children.map(c => {
@@ -589,14 +663,44 @@ export async function mergeAllIframes(tree, layout, ownerFrame) {
589
663
  /**
590
664
  * Full page: main frame + every nested iframe (any origin) + optional CDP AX name enrichment.
591
665
  */
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),
666
+ export async function extractGeometry(page, options) {
667
+ const trace = options?.trace;
668
+ const totalStartedAt = performance.now();
669
+ const mainFrameStartedAt = performance.now();
670
+ const mainFrame = await captureFrameGeometry(page.mainFrame());
671
+ if (trace) {
672
+ trace.mainFrameMs = performance.now() - mainFrameStartedAt;
673
+ trace.iframeCount = Math.max(0, page.frames().length - 1);
674
+ }
675
+ const main = {
676
+ layout: mainFrame.layout,
677
+ tree: mainFrame.tree,
678
+ treeJson: '',
600
679
  };
680
+ const iframeMergeStartedAt = performance.now();
681
+ await mergeAllIframes(main.tree, main.layout, page.mainFrame());
682
+ if (trace) {
683
+ trace.iframeMergeMs = performance.now() - iframeMergeStartedAt;
684
+ }
685
+ const axDecisionStartedAt = performance.now();
686
+ const shouldRunAxEnrichment = shouldEnrichSnapshotWithCdpAx(main);
687
+ if (trace) {
688
+ trace.axDecisionMs = performance.now() - axDecisionStartedAt;
689
+ trace.axRan = shouldRunAxEnrichment;
690
+ }
691
+ if (shouldRunAxEnrichment) {
692
+ const axEnrichStartedAt = performance.now();
693
+ await enrichSnapshotWithCdpAx(page, main, options?.axSessionManager);
694
+ if (trace) {
695
+ trace.axEnrichMs = performance.now() - axEnrichStartedAt;
696
+ }
697
+ }
698
+ const treeJsonStartedAt = performance.now();
699
+ main.treeJson = JSON.stringify(main.tree);
700
+ if (trace) {
701
+ trace.treeJsonMs = performance.now() - treeJsonStartedAt;
702
+ trace.totalMs = performance.now() - totalStartedAt;
703
+ }
704
+ return main;
601
705
  }
602
706
  //# 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;AA8W3E,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
- import { isClickEventMessage, isCompositionMessage, isFillFieldsMessage, isFileMessage, isKeyMessage, isListboxPickMessage, isNavigateMessage, isResizeMessage, isSetFieldChoiceMessage, isSetFieldTextMessage, isSetCheckedMessage, isSelectOptionMessage, isWheelMessage, PROXY_PROTOCOL_VERSION, } from './types.js';
7
+ import { isClickEventMessage, isCompositionMessage, isFillFieldsMessage, isFileMessage, isKeyMessage, isListboxPickMessage, isNavigateMessage, isResizeMessage, isScreenshotMessage, 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));
@@ -213,6 +253,12 @@ async function handleClientMessage(page, ws, raw, fieldLookupCache, waitForBefor
213
253
  const y = typeof msg.y === 'number' && Number.isFinite(msg.y) ? msg.y : undefined;
214
254
  await wheelAt(page, dx, dy, x, y);
215
255
  onViewportOrInput('input', requestId);
256
+ return;
257
+ }
258
+ if (isScreenshotMessage(msg)) {
259
+ const buffer = await page.screenshot({ type: 'png', fullPage: false });
260
+ const base64 = buffer.toString('base64');
261
+ onViewportOrInput('input', requestId, { screenshot: base64 });
216
262
  }
217
263
  }
218
264
  catch (err) {
@@ -228,14 +274,43 @@ async function fillFieldsAckResult(page) {
228
274
  countAcrossFrames(frames, '[role="dialog"], [role="alertdialog"]'),
229
275
  countAcrossFrames(frames, '[aria-busy="true"]'),
230
276
  ]);
277
+ let invalidFields;
278
+ if (invalidCount > 0) {
279
+ invalidFields = await collectInvalidFieldErrors(frames);
280
+ }
231
281
  return {
232
282
  pageUrl: page.url(),
233
283
  invalidCount,
234
284
  alertCount,
235
285
  dialogCount,
236
286
  busyCount,
287
+ ...(invalidFields && invalidFields.length > 0 ? { invalidFields } : {}),
237
288
  };
238
289
  }
290
+ async function collectInvalidFieldErrors(frames) {
291
+ const results = await Promise.all(frames.map(frame => frame.evaluate(() => {
292
+ const fields = [];
293
+ const invalidEls = document.querySelectorAll(':invalid');
294
+ for (const el of invalidEls) {
295
+ if (!(el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement || el instanceof HTMLSelectElement))
296
+ continue;
297
+ const label = el.getAttribute('aria-label')?.trim() ||
298
+ (el.labels && el.labels.length > 0 ? el.labels[0]?.textContent?.trim() : undefined) ||
299
+ el.getAttribute('placeholder')?.trim() ||
300
+ el.name ||
301
+ undefined;
302
+ const errorId = el.getAttribute('aria-errormessage');
303
+ const errorEl = errorId ? document.getElementById(errorId) : null;
304
+ const error = errorEl?.textContent?.trim() ||
305
+ el.validationMessage ||
306
+ undefined;
307
+ if (label || error)
308
+ fields.push({ ...(label ? { name: label } : {}), ...(error ? { error } : {}) });
309
+ }
310
+ return fields.slice(0, 10);
311
+ }).catch(() => [])));
312
+ return results.flat().slice(0, 10);
313
+ }
239
314
  async function countAcrossFrames(frames, selector) {
240
315
  const counts = await Promise.all(frames.map(frame => frame.locator(selector).count().catch(() => 0)));
241
316
  return counts.reduce((sum, count) => sum + count, 0);
@@ -244,6 +319,7 @@ export function startGeometryWebSocket(options) {
244
319
  const debounceMs = options.debounceMs ?? 50;
245
320
  const clients = new Set();
246
321
  const wss = new WebSocketServer({ port: options.port });
322
+ const axSessionManager = createCdpAxSessionManager();
247
323
  let prevLayout = null;
248
324
  let prevTreeJson = null;
249
325
  let debounceTimer = null;
@@ -253,16 +329,23 @@ export function startGeometryWebSocket(options) {
253
329
  let pendingInputAcks = [];
254
330
  const fieldLookupCache = createFillLookupCache();
255
331
  const beforeInput = options.beforeInput?.then(() => undefined);
332
+ const trace = { extractCount: 0 };
333
+ const pagePromise = Promise.resolve(options.page);
256
334
  async function waitForBeforeInput() {
257
335
  if (!beforeInput)
258
336
  return;
259
337
  await beforeInput;
260
338
  }
261
- options.page.on('framenavigated', frame => {
262
- if (frame === options.page.mainFrame()) {
263
- clearFillLookupCache(fieldLookupCache);
264
- }
265
- });
339
+ async function waitForPage() {
340
+ return await pagePromise;
341
+ }
342
+ void pagePromise.then(page => {
343
+ page.on('framenavigated', frame => {
344
+ if (frame === page.mainFrame()) {
345
+ clearFillLookupCache(fieldLookupCache);
346
+ }
347
+ });
348
+ }).catch(err => options.onError?.(err));
266
349
  function sendPendingInputAcks() {
267
350
  if (pendingInputAcks.length === 0)
268
351
  return;
@@ -343,10 +426,37 @@ export function startGeometryWebSocket(options) {
343
426
  return true;
344
427
  }
345
428
  async function runExtract() {
429
+ const runStartedAt = performance.now();
430
+ const beforeInputStartedAt = performance.now();
346
431
  try {
347
432
  await waitForBeforeInput();
348
- const snap = await extractGeometryWithRecovery(options.page);
349
- return broadcastSnapshot(snap);
433
+ const beforeInputMs = performance.now() - beforeInputStartedAt;
434
+ const extractorTrace = {};
435
+ const recoveryTrace = {
436
+ attemptCount: 0,
437
+ domContentLoadedWaitMs: 0,
438
+ loadWaitMs: 0,
439
+ };
440
+ const page = await waitForPage();
441
+ const extractStartedAt = performance.now();
442
+ const snap = await extractGeometryWithRecovery(page, axSessionManager, extractorTrace, recoveryTrace);
443
+ const extractMs = performance.now() - extractStartedAt;
444
+ const broadcastStartedAt = performance.now();
445
+ const changed = broadcastSnapshot(snap);
446
+ const broadcastMs = performance.now() - broadcastStartedAt;
447
+ trace.extractCount += 1;
448
+ if (!trace.firstExtract) {
449
+ trace.firstExtract = {
450
+ beforeInputMs,
451
+ extractMs,
452
+ broadcastMs,
453
+ totalMs: performance.now() - runStartedAt,
454
+ changed,
455
+ extractor: { ...extractorTrace },
456
+ recovery: { ...recoveryTrace },
457
+ };
458
+ }
459
+ return changed;
350
460
  }
351
461
  catch (err) {
352
462
  options.onError?.(err);
@@ -412,7 +522,7 @@ export function startGeometryWebSocket(options) {
412
522
  }
413
523
  ws.on('message', (raw) => {
414
524
  actionQueue = actionQueue
415
- .then(() => handleClientMessage(options.page, ws, raw, fieldLookupCache, waitForBeforeInput, (kind, requestId, result) => {
525
+ .then(() => handleClientMessage(waitForPage, ws, raw, fieldLookupCache, waitForBeforeInput, (kind, requestId, result) => {
416
526
  if (kind === 'resize') {
417
527
  void runExtractQueued();
418
528
  }
@@ -439,22 +549,23 @@ export function startGeometryWebSocket(options) {
439
549
  await runExtractQueued();
440
550
  sendPendingInputAcks();
441
551
  },
552
+ getTrace: () => structuredClone(trace),
442
553
  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()));
554
+ void axSessionManager.close().finally(() => {
555
+ for (const ws of clients) {
556
+ ws.close();
557
+ }
558
+ clients.clear();
559
+ wss.close(err => (err ? reject(err) : resolve()));
560
+ });
448
561
  }),
449
562
  };
450
563
  }
564
+ export async function primeDomObserver(page, scheduleExtract) {
565
+ await bindDomObserverBridge(page, scheduleExtract);
566
+ }
451
567
  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
- }
568
+ await bindDomObserverBridge(page, scheduleExtract);
458
569
  await page.evaluate(() => {
459
570
  const w = window;
460
571
  if (w.__geometraProxyObserverInstalled)
@@ -475,18 +586,31 @@ function isNavigationTransitionError(err) {
475
586
  const message = err instanceof Error ? err.message : String(err);
476
587
  return /Execution context was destroyed|Cannot find context with specified id|Frame was detached|navigation/i.test(message);
477
588
  }
478
- async function extractGeometryWithRecovery(page) {
589
+ async function extractGeometryWithRecovery(page, axSessionManager, extractTrace, recoveryTrace) {
479
590
  let lastNavigationError = null;
591
+ let domContentLoadedWaitMs = 0;
592
+ let loadWaitMs = 0;
480
593
  for (let attempt = 0; attempt < 3; attempt++) {
481
594
  try {
482
- return await extractGeometry(page);
595
+ if (recoveryTrace) {
596
+ recoveryTrace.attemptCount = attempt + 1;
597
+ }
598
+ return await extractGeometry(page, { axSessionManager, trace: extractTrace });
483
599
  }
484
600
  catch (err) {
485
601
  if (page.isClosed() || !isNavigationTransitionError(err))
486
602
  throw err;
487
603
  lastNavigationError = err instanceof Error ? err : new Error(String(err));
604
+ const domContentLoadedStartedAt = performance.now();
488
605
  await page.waitForLoadState('domcontentloaded', { timeout: 2500 }).catch(() => { });
606
+ domContentLoadedWaitMs += performance.now() - domContentLoadedStartedAt;
607
+ const loadStartedAt = performance.now();
489
608
  await page.waitForLoadState('load', { timeout: 1000 }).catch(() => { });
609
+ loadWaitMs += performance.now() - loadStartedAt;
610
+ if (recoveryTrace) {
611
+ recoveryTrace.domContentLoadedWaitMs = domContentLoadedWaitMs;
612
+ recoveryTrace.loadWaitMs = loadWaitMs;
613
+ }
490
614
  }
491
615
  }
492
616
  const detail = lastNavigationError?.message ?? 'Navigation interrupted extraction';