@testmuai/playwright-bindings 0.1.15 → 0.1.16

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 (36) hide show
  1. package/dist/configure.d.ts.map +1 -1
  2. package/dist/configure.js +2 -1
  3. package/dist/configure.js.map +1 -1
  4. package/dist/helpers/devtools.d.ts +1 -1
  5. package/dist/helpers/textualAnalyzer/domStructured.d.ts +44 -0
  6. package/dist/helpers/textualAnalyzer/domStructured.d.ts.map +1 -0
  7. package/dist/helpers/textualAnalyzer/domStructured.js +242 -0
  8. package/dist/helpers/textualAnalyzer/domStructured.js.map +1 -0
  9. package/dist/helpers/textualAnalyzer/evaluate.d.ts +14 -0
  10. package/dist/helpers/textualAnalyzer/evaluate.d.ts.map +1 -0
  11. package/dist/helpers/textualAnalyzer/evaluate.js +5 -0
  12. package/dist/helpers/textualAnalyzer/evaluate.js.map +1 -0
  13. package/dist/helpers/textualAnalyzer/extractor.d.ts +21 -0
  14. package/dist/helpers/textualAnalyzer/extractor.d.ts.map +1 -0
  15. package/dist/helpers/textualAnalyzer/extractor.js +38 -0
  16. package/dist/helpers/textualAnalyzer/extractor.js.map +1 -0
  17. package/dist/helpers/textualAnalyzer/heal.d.ts +17 -0
  18. package/dist/helpers/textualAnalyzer/heal.d.ts.map +1 -0
  19. package/dist/helpers/textualAnalyzer/heal.js +83 -0
  20. package/dist/helpers/textualAnalyzer/heal.js.map +1 -0
  21. package/dist/helpers/textualAnalyzer/index.d.ts +27 -0
  22. package/dist/helpers/textualAnalyzer/index.d.ts.map +1 -0
  23. package/dist/helpers/textualAnalyzer/index.js +50 -0
  24. package/dist/helpers/textualAnalyzer/index.js.map +1 -0
  25. package/dist/helpers/textualAnalyzer/locatorEnrichment.d.ts +27 -0
  26. package/dist/helpers/textualAnalyzer/locatorEnrichment.d.ts.map +1 -0
  27. package/dist/helpers/textualAnalyzer/locatorEnrichment.js +99 -0
  28. package/dist/helpers/textualAnalyzer/locatorEnrichment.js.map +1 -0
  29. package/dist/helpers/vision.d.ts +5 -5
  30. package/dist/helpers/vision.js +3 -3
  31. package/dist/helpers/vision.js.map +1 -1
  32. package/dist/index.d.ts +3 -0
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +2 -0
  35. package/dist/index.js.map +1 -1
  36. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,iHAAiH;IACjH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,QAAA,MAAM,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAmBxC,CAAC;AAEF,KAAK,SAAS,GAAG,MAAM,OAAO,QAAQ,CAAC;AAKvC,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAGtD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAEhE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAUtD;AAED,wBAAgB,GAAG,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAErE;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAE9C;AAED,wBAAgB,MAAM,IAAI,IAAI,CAU7B"}
1
+ {"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,iHAAiH;IACjH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,QAAA,MAAM,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAmBxC,CAAC;AAEF,KAAK,SAAS,GAAG,MAAM,OAAO,QAAQ,CAAC;AAKvC,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAGtD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAEhE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAUtD;AAED,wBAAgB,GAAG,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAErE;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAE9C;AAED,wBAAgB,MAAM,IAAI,IAAI,CAU7B"}
package/dist/configure.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { log } from './log.js';
1
2
  const DEFAULTS = {
2
3
  clipboard: false,
3
4
  build: '',
@@ -27,7 +28,7 @@ export function _registerConfigureHook(hook) {
27
28
  export function configure(opts) {
28
29
  for (const key of Object.keys(opts)) {
29
30
  if (!(key in DEFAULTS)) {
30
- console.warn(`testmu.configure: unknown key '${key}', ignoring`);
31
+ log.warn(`testmu.configure: unknown key '${key}', ignoring`);
31
32
  continue;
32
33
  }
33
34
  data[key] = opts[key];
@@ -1 +1 @@
1
- {"version":3,"file":"configure.js","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AA6BA,MAAM,QAAQ,GAA+B;IAC3C,SAAS,EAAE,KAAK;IAChB,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,EAAE;IACjB,gBAAgB,EAAE,KAAK;IACvB,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,EAAE;IACd,eAAe,EAAE,EAAE;IACnB,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,CAAC;IAChB,sBAAsB,EAAE,KAAK;IAC7B,0BAA0B,EAAE,KAAK;IACjC,SAAS,EAAE,KAAK;CACjB,CAAC;AAIF,MAAM,IAAI,GAA+B,EAAE,GAAG,QAAQ,EAAE,CAAC;AACzD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAa,CAAC;AAGrC,MAAM,KAAK,GAAoB,EAAE,CAAC;AAElC,MAAM,UAAU,sBAAsB,CAAC,IAAmB;IACxD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAsB;IAC9C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAgB,EAAE,CAAC;QACnD,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,kCAAkC,GAAG,aAAa,CAAC,CAAC;YACjE,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,GAAG,CAAsB,GAAM;IAC7C,OAAO,IAAI,CAAC,GAAG,CAAyB,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,GAAc;IACnC,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,MAAM;IACpB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAgB,EAAE,CAAC;QACvD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAG,IAAmC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;aAClE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;YAAG,IAAmC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;;YAC3F,IAAmC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACvD,CAAC;IACD,OAAO,CAAC,KAAK,EAAE,CAAC;IAChB,uFAAuF;IACvF,4FAA4F;AAC9F,CAAC"}
1
+ {"version":3,"file":"configure.js","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AA+B/B,MAAM,QAAQ,GAA+B;IAC3C,SAAS,EAAE,KAAK;IAChB,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,EAAE;IACjB,gBAAgB,EAAE,KAAK;IACvB,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,EAAE;IACd,eAAe,EAAE,EAAE;IACnB,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,CAAC;IAChB,sBAAsB,EAAE,KAAK;IAC7B,0BAA0B,EAAE,KAAK;IACjC,SAAS,EAAE,KAAK;CACjB,CAAC;AAIF,MAAM,IAAI,GAA+B,EAAE,GAAG,QAAQ,EAAE,CAAC;AACzD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAa,CAAC;AAGrC,MAAM,KAAK,GAAoB,EAAE,CAAC;AAElC,MAAM,UAAU,sBAAsB,CAAC,IAAmB;IACxD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAsB;IAC9C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAgB,EAAE,CAAC;QACnD,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,kCAAkC,GAAG,aAAa,CAAC,CAAC;YAC7D,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,GAAG,CAAsB,GAAM;IAC7C,OAAO,IAAI,CAAC,GAAG,CAAyB,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,GAAc;IACnC,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,MAAM;IACpB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAgB,EAAE,CAAC;QACvD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAG,IAAmC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;aAClE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;YAAG,IAAmC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;;YAC3F,IAAmC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACvD,CAAC;IACD,OAAO,CAAC,KAAK,EAAE,CAAC;IAChB,uFAAuF;IACvF,4FAA4F;AAC9F,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * DevTools capture layer for @testmuai/playwright-bindings.
3
3
  *
4
- * Lifecycle (mirrors v16-runner PlaywrightBrowser):
4
+ * Lifecycle:
5
5
  * 1. startCapture(page, context) — before user test code
6
6
  * 2. User test code runs, events accumulate
7
7
  * 3. devtoolsNetworkQuery(code) etc. execute JS code against captured data
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Common structured (accessibility-tree) DOM capture + serializer (TS).
3
+ *
4
+ * The serialize logic produces a stable, nested index space so a recorded
5
+ * extraction's `el(i)` references resolve consistently at record, replay, and heal
6
+ * time, matching the Python binding. It walks a binding-local `AxNode` built from CDP.
7
+ */
8
+ import type { Page } from 'playwright';
9
+ export interface AxNode {
10
+ role: string;
11
+ name: string;
12
+ description: string;
13
+ value: string;
14
+ url: string | null;
15
+ level: number | null;
16
+ checked: boolean | string | null;
17
+ disabled: boolean;
18
+ selected: boolean | null;
19
+ expanded: boolean | null;
20
+ pressed: boolean | string | null;
21
+ required: boolean;
22
+ readonly: boolean;
23
+ focused: boolean;
24
+ isVisible: boolean | null;
25
+ inViewport: boolean | null;
26
+ backendDomNodeId: number | null;
27
+ children: AxNode[];
28
+ }
29
+ export interface StructuredDom {
30
+ /** nested prompt snapshot */
31
+ text: string;
32
+ /** maps each rendered `[i]` to its CDP backend_dom_node_id for el(i) resolution */
33
+ indexToBackendId: Record<number, number>;
34
+ }
35
+ export declare function buildStructuredDom(root: AxNode): StructuredDom;
36
+ /**
37
+ * Capture the current viewport as a structured (nested) DOM snapshot.
38
+ *
39
+ * getFullAXTree → fetch DOM.getBoxModel boxes for visible non-container nodes →
40
+ * derive isVisible/inViewport → AxNode tree → buildStructuredDom. Returns null if
41
+ * the tree is empty or capture fails.
42
+ */
43
+ export declare function captureStructuredDom(page: Page): Promise<StructuredDom | null>;
44
+ //# sourceMappingURL=domStructured.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domStructured.d.ts","sourceRoot":"","sources":["../../../src/helpers/textualAnalyzer/domStructured.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,YAAY,CAAC;AAUnD,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAM9D;AAkKD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAyDpF"}
@@ -0,0 +1,242 @@
1
+ import { log } from '../../log.js';
2
+ // Structural-container roles that never render — children promoted to the
3
+ // container's depth (mirrors Playwright normalizeGenericRoles for always-redundant
4
+ // roles). 'generic' is handled separately (kept when structural).
5
+ const ALWAYS_COLLAPSE = new Set(['none', 'rootwebarea', 'webarea', 'genericcontainer']);
6
+ // Static-text roles render as `text: ...` without an index.
7
+ const TEXT_ROLES = new Set(['statictext', 'text']);
8
+ export function buildStructuredDom(root) {
9
+ const lines = [];
10
+ const indexToBackendId = {};
11
+ const counter = { value: 0 };
12
+ walk(root, 0, lines, indexToBackendId, counter);
13
+ return { text: lines.join('\n'), indexToBackendId };
14
+ }
15
+ function walk(node, depth, lines, indexToBackendId, counter) {
16
+ const role = (node.role || '').trim().toLowerCase();
17
+ // Visibility / viewport filter — exclude the node but still walk its children
18
+ // at the same depth (so a hidden wrapper doesn't drop visible descendants).
19
+ if (node.isVisible === false || node.inViewport === false) {
20
+ walkChildren(node, depth, lines, indexToBackendId, counter);
21
+ return;
22
+ }
23
+ if (TEXT_ROLES.has(role)) {
24
+ if (node.name)
25
+ lines.push(`${' '.repeat(depth)}text: ${node.name}`);
26
+ return;
27
+ }
28
+ if (shouldCollapse(role, node)) {
29
+ walkChildren(node, depth, lines, indexToBackendId, counter);
30
+ return;
31
+ }
32
+ counter.value += 1;
33
+ const index = counter.value;
34
+ const indent = ' '.repeat(depth);
35
+ lines.push(renderLine(node, role, index, indent));
36
+ if (node.backendDomNodeId != null)
37
+ indexToBackendId[index] = node.backendDomNodeId;
38
+ if (node.url)
39
+ lines.push(`${' '.repeat(depth + 1)}/url: ${node.url}`);
40
+ walkChildren(node, depth + 1, lines, indexToBackendId, counter);
41
+ }
42
+ function walkChildren(node, depth, lines, indexToBackendId, counter) {
43
+ for (const child of node.children) {
44
+ walk(child, depth, lines, indexToBackendId, counter);
45
+ }
46
+ }
47
+ function shouldCollapse(role, node) {
48
+ if (ALWAYS_COLLAPSE.has(role))
49
+ return true;
50
+ if (role === 'generic')
51
+ return visibleChildCount(node) < 2;
52
+ return false;
53
+ }
54
+ function visibleChildCount(node) {
55
+ return node.children.filter((c) => c.isVisible !== false && c.inViewport !== false).length;
56
+ }
57
+ function renderLine(node, role, index, indent) {
58
+ const parts = [`${indent}[${index}] ${role} "${node.name}"`];
59
+ if (node.level != null)
60
+ parts.push(`[level=${node.level}]`);
61
+ if (node.checked === true)
62
+ parts.push('[checked]');
63
+ else if (node.checked === 'mixed')
64
+ parts.push('[checked=mixed]');
65
+ if (node.disabled)
66
+ parts.push('[disabled]');
67
+ if (node.selected === true)
68
+ parts.push('[selected]');
69
+ if (node.expanded === true)
70
+ parts.push('[expanded]');
71
+ if (node.pressed === true)
72
+ parts.push('[pressed]');
73
+ if (node.required)
74
+ parts.push('[required]');
75
+ if (node.readonly)
76
+ parts.push('[readonly]');
77
+ if (node.focused)
78
+ parts.push('[focused]');
79
+ if (node.value)
80
+ parts.push(`value="${node.value}"`);
81
+ if (node.description)
82
+ parts.push(`[desc="${node.description}"]`);
83
+ return parts.join(' ');
84
+ }
85
+ // ---------------------------------------------------------------------------
86
+ // CDP tree capture (integration glue). Produces an AxNode tree with
87
+ // isVisible/inViewport derived from DOM.getBoxModel boxes so the serializer's
88
+ // viewport filter is effective. Not unit-tested (CDP I/O) — verified via the
89
+ // live export/autoheal end-to-end run.
90
+ // ---------------------------------------------------------------------------
91
+ const SKIP_BOX_ROLES = new Set(['none', 'generic', 'rootwebarea', 'webarea']);
92
+ function isVisible(box) {
93
+ if (box == null)
94
+ return null;
95
+ return box.width > 0 && box.height > 0;
96
+ }
97
+ function isInViewport(box, vw, vh) {
98
+ if (box == null)
99
+ return null;
100
+ const { x, y, width: w, height: h } = box;
101
+ if (x + w < 0 || x > vw)
102
+ return false;
103
+ if (y + h < 0 || y > vh)
104
+ return false;
105
+ return true;
106
+ }
107
+ function cdpProp(properties, name) {
108
+ if (!properties)
109
+ return null;
110
+ for (const p of properties) {
111
+ if (p['name'] === name) {
112
+ const v = p['value'];
113
+ return typeof v === 'object' && v !== null ? v.value : null;
114
+ }
115
+ }
116
+ return null;
117
+ }
118
+ function axValue(node, key) {
119
+ const info = node[key];
120
+ return typeof info === 'object' && info !== null
121
+ ? String(info.value ?? '')
122
+ : '';
123
+ }
124
+ function parseNode(node, byId, vw, vh) {
125
+ const props = node['properties'];
126
+ const box = node['_bounding_box'] ?? null;
127
+ const children = [];
128
+ for (const cid of node['childIds'] ?? []) {
129
+ const child = byId.get(cid);
130
+ if (child)
131
+ children.push(parseNode(child, byId, vw, vh));
132
+ }
133
+ const checked = cdpProp(props, 'checked');
134
+ const pressed = cdpProp(props, 'pressed');
135
+ const levelRaw = cdpProp(props, 'level');
136
+ return {
137
+ role: axValue(node, 'role'),
138
+ name: axValue(node, 'name'),
139
+ description: axValue(node, 'description'),
140
+ value: axValue(node, 'value'),
141
+ url: cdpProp(props, 'url') ?? null,
142
+ level: typeof levelRaw === 'number' ? levelRaw : (levelRaw != null ? Number(levelRaw) : null),
143
+ checked: checked ?? null,
144
+ disabled: Boolean(cdpProp(props, 'disabled')),
145
+ selected: cdpProp(props, 'selected') ?? null,
146
+ expanded: cdpProp(props, 'expanded') ?? null,
147
+ pressed: pressed ?? null,
148
+ required: Boolean(cdpProp(props, 'required')),
149
+ readonly: Boolean(cdpProp(props, 'readonly')),
150
+ focused: Boolean(cdpProp(props, 'focused')),
151
+ isVisible: isVisible(box),
152
+ inViewport: isInViewport(box, vw, vh),
153
+ backendDomNodeId: node['backendDOMNodeId'] ?? null,
154
+ children,
155
+ };
156
+ }
157
+ async function viewport(page) {
158
+ const vp = page.viewportSize();
159
+ if (vp && vp.width && vp.height)
160
+ return { vw: vp.width, vh: vp.height };
161
+ try {
162
+ const dims = await page.evaluate(() => ({ width: window.innerWidth, height: window.innerHeight }));
163
+ if (dims && dims.width && dims.height)
164
+ return { vw: dims.width, vh: dims.height };
165
+ }
166
+ catch {
167
+ // fall through to default
168
+ }
169
+ return { vw: 1280, vh: 800 };
170
+ }
171
+ /**
172
+ * Capture the current viewport as a structured (nested) DOM snapshot.
173
+ *
174
+ * getFullAXTree → fetch DOM.getBoxModel boxes for visible non-container nodes →
175
+ * derive isVisible/inViewport → AxNode tree → buildStructuredDom. Returns null if
176
+ * the tree is empty or capture fails.
177
+ */
178
+ export async function captureStructuredDom(page) {
179
+ const { vw, vh } = await viewport(page);
180
+ let cdp = null;
181
+ try {
182
+ cdp = await page.context().newCDPSession(page);
183
+ const result = (await cdp.send('Accessibility.getFullAXTree', {}));
184
+ const nodes = result.nodes ?? [];
185
+ if (nodes.length === 0)
186
+ return null;
187
+ const boxTargets = [];
188
+ for (const node of nodes) {
189
+ const bid = node['backendDOMNodeId'];
190
+ if (!bid)
191
+ continue;
192
+ const role = axValue(node, 'role').trim().toLowerCase();
193
+ if (!SKIP_BOX_ROLES.has(role))
194
+ boxTargets.push(bid);
195
+ }
196
+ const boxes = new Map();
197
+ const fetchBox = async (bid) => {
198
+ try {
199
+ const r = (await cdp.send('DOM.getBoxModel', { backendNodeId: bid }));
200
+ const border = r.model?.border ?? [];
201
+ if (border.length >= 8) {
202
+ const xs = [border[0], border[2], border[4], border[6]];
203
+ const ys = [border[1], border[3], border[5], border[7]];
204
+ const x = Math.min(...xs);
205
+ const y = Math.min(...ys);
206
+ boxes.set(bid, { x, y, width: Math.max(...xs) - x, height: Math.max(...ys) - y });
207
+ }
208
+ }
209
+ catch {
210
+ // node has no box (detached / display:none) — leave unset
211
+ }
212
+ };
213
+ if (boxTargets.length)
214
+ await Promise.all(boxTargets.map(fetchBox));
215
+ const byId = new Map();
216
+ for (const node of nodes) {
217
+ const nid = node['nodeId'];
218
+ if (!nid)
219
+ continue;
220
+ const bid = node['backendDOMNodeId'];
221
+ if (bid && boxes.has(bid))
222
+ node['_bounding_box'] = boxes.get(bid);
223
+ byId.set(nid, node);
224
+ }
225
+ const root = nodes.find((n) => !n['parentId']) ?? nodes[0];
226
+ const tree = parseNode(root, byId, vw, vh);
227
+ return buildStructuredDom(tree);
228
+ }
229
+ catch (e) {
230
+ log.warn(`[dom_structured] capture failed: ${e instanceof Error ? e.message : String(e)}`);
231
+ return null;
232
+ }
233
+ finally {
234
+ if (cdp) {
235
+ try {
236
+ await cdp.detach();
237
+ }
238
+ catch { /* ignore */ }
239
+ }
240
+ }
241
+ }
242
+ //# sourceMappingURL=domStructured.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domStructured.js","sourceRoot":"","sources":["../../../src/helpers/textualAnalyzer/domStructured.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Execute a recorded `(els) => {...}` extractor against resolved element handles.
3
+ *
4
+ * Playwright JS — UNLIKE Playwright Python — does NOT auto-invoke a *string*
5
+ * function expression with its arg (it returns the function object, which
6
+ * serializes to undefined). The python binding relies on that auto-invoke
7
+ * (`page.evaluate(wrapped_js, handles)`). To get identical behaviour here we
8
+ * reconstruct the recorded arrow as a real function whose source Playwright
9
+ * compiles natively via Runtime.callFunctionOn (NOT page-side eval — so no CSP
10
+ * `unsafe-eval` dependency), then call it with the handles array as its `els` arg.
11
+ */
12
+ import type { Page, ElementHandle } from 'playwright';
13
+ export declare function evaluateWrapped(page: Page, wrappedJs: string, handles: ElementHandle[]): Promise<unknown>;
14
+ //# sourceMappingURL=evaluate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../../src/helpers/textualAnalyzer/evaluate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEtD,wBAAsB,eAAe,CACnC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GACtD,OAAO,CAAC,OAAO,CAAC,CAGlB"}
@@ -0,0 +1,5 @@
1
+ export async function evaluateWrapped(page, wrappedJs, handles) {
2
+ const fn = new Function('els', `return (${wrappedJs})(els);`);
3
+ return page.evaluate(fn, handles);
4
+ }
5
+ //# sourceMappingURL=evaluate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../../src/helpers/textualAnalyzer/evaluate.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAU,EAAE,SAAiB,EAAE,OAAwB;IAEvD,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,WAAW,SAAS,SAAS,CAA8B,CAAC;IAC3F,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAoB,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Pure helpers for executing a recorded textual extraction expression.
3
+ *
4
+ * The extraction code may reference snapshot nodes via `el(i)`. We parse those
5
+ * indices, resolve each to a stable element handle, and wrap the code so `el(i)`
6
+ * returns the matching handle. The wrap format and index alignment are kept stable
7
+ * so a recorded extraction runs identically at record, replay, and export time
8
+ * across the Python and TypeScript bindings.
9
+ */
10
+ /** Return the el(i) indices referenced in `code`, unique, first-seen order. */
11
+ export declare function parseElReferences(code: string): number[];
12
+ /**
13
+ * Wrap `code` for `page.evaluate(fn, els)`.
14
+ *
15
+ * `els` is the array of resolved element handles in `indices` order; `el(i)` maps
16
+ * each referenced snapshot index to its handle's position. A boolean result is
17
+ * coerced to a lowercase `'true'`/`'false'` STRING so the value matches the
18
+ * analyzer node's runtime normalization; `null` and every other type pass through.
19
+ */
20
+ export declare function wrapExtractorCode(code: string, indices: number[]): string;
21
+ //# sourceMappingURL=extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../../src/helpers/textualAnalyzer/extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAOxD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAUzE"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Pure helpers for executing a recorded textual extraction expression.
3
+ *
4
+ * The extraction code may reference snapshot nodes via `el(i)`. We parse those
5
+ * indices, resolve each to a stable element handle, and wrap the code so `el(i)`
6
+ * returns the matching handle. The wrap format and index alignment are kept stable
7
+ * so a recorded extraction runs identically at record, replay, and export time
8
+ * across the Python and TypeScript bindings.
9
+ */
10
+ const EL_REFERENCE = /\bel\(\s*(\d+)\s*\)/g;
11
+ /** Return the el(i) indices referenced in `code`, unique, first-seen order. */
12
+ export function parseElReferences(code) {
13
+ const seen = [];
14
+ for (const match of code.matchAll(EL_REFERENCE)) {
15
+ const index = parseInt(match[1], 10);
16
+ if (!seen.includes(index))
17
+ seen.push(index);
18
+ }
19
+ return seen;
20
+ }
21
+ /**
22
+ * Wrap `code` for `page.evaluate(fn, els)`.
23
+ *
24
+ * `els` is the array of resolved element handles in `indices` order; `el(i)` maps
25
+ * each referenced snapshot index to its handle's position. A boolean result is
26
+ * coerced to a lowercase `'true'`/`'false'` STRING so the value matches the
27
+ * analyzer node's runtime normalization; `null` and every other type pass through.
28
+ */
29
+ export function wrapExtractorCode(code, indices) {
30
+ const posMap = indices.map((index, position) => `${index}: ${position}`).join(', ');
31
+ return ('(els) => {\n' +
32
+ ` const __m = {${posMap}};\n` +
33
+ ' const el = (i) => els[__m[i]];\n' +
34
+ ` const __v = (${code});\n` +
35
+ " return (typeof __v === 'boolean' ? String(__v) : __v);\n" +
36
+ '}');
37
+ }
38
+ //# sourceMappingURL=extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractor.js","sourceRoot":"","sources":["../../../src/helpers/textualAnalyzer/extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,YAAY,GAAG,sBAAsB,CAAC;AAE5C,+EAA+E;AAC/E,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,OAAiB;IAC/D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpF,OAAO,CACL,cAAc;QACd,kBAAkB,MAAM,MAAM;QAC9B,oCAAoC;QACpC,kBAAkB,IAAI,MAAM;QAC5B,4DAA4D;QAC5D,GAAG,CACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * TextualAnalyzer heal: regenerate the WHOLE extraction against a fresh page (TS).
3
+ *
4
+ * Flow: capture a fresh structured DOM snapshot → POST the heal endpoint
5
+ * (/api/v1/textual_analyzer/heal) to regenerate the el(i) code → resolve each el(i) to a
6
+ * stable locator → page.evaluate(wrap(code), handles).
7
+ *
8
+ * Returns a HealOutcome on success, or null on any miss (no usable code, a locator
9
+ * that won't resolve, or a null/empty result) — the caller then FAILS the step
10
+ * (there is no vision fallback for a textual heal).
11
+ */
12
+ import type { Page } from 'playwright';
13
+ export interface HealOutcome {
14
+ value: string;
15
+ }
16
+ export declare function runHeal(page: Page, query: string, expectedValue: string | null, needsUnitConversion: boolean): Promise<HealOutcome | null>;
17
+ //# sourceMappingURL=heal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heal.d.ts","sourceRoot":"","sources":["../../../src/helpers/textualAnalyzer/heal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,IAAI,EAAiB,MAAM,YAAY,CAAC;AAWtD,MAAM,WAAW,WAAW;IAK1B,KAAK,EAAE,MAAM,CAAC;CACf;AAkCD,wBAAsB,OAAO,CAC3B,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,EAAE,mBAAmB,EAAE,OAAO,GACpF,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAsC7B"}
@@ -0,0 +1,83 @@
1
+ import { config } from '../../config.js';
2
+ import { fetchWithAuth } from '../../http.js';
3
+ import { log } from '../../log.js';
4
+ import { captureStructuredDom } from './domStructured.js';
5
+ import { enrichElementLocator } from './locatorEnrichment.js';
6
+ import { evaluateWrapped } from './evaluate.js';
7
+ import { parseElReferences, wrapExtractorCode } from './extractor.js';
8
+ const HEAL_TIMEOUT_MS = 60_000;
9
+ function healUrl() {
10
+ return config.current.aiApiHost.replace(/\/+$/, '') + '/api/v1/textual_analyzer/heal';
11
+ }
12
+ async function postHeal(query, domSnapshot, expectedValue, needsUnit) {
13
+ const body = {
14
+ query,
15
+ dom_snapshot: domSnapshot,
16
+ expected_value: expectedValue,
17
+ needs_unit_conversion: needsUnit,
18
+ };
19
+ try {
20
+ const resp = await fetchWithAuth(healUrl(), {
21
+ method: 'POST',
22
+ headers: { 'content-type': 'application/json' },
23
+ body: JSON.stringify(body),
24
+ signal: AbortSignal.timeout(HEAL_TIMEOUT_MS),
25
+ });
26
+ if (!resp.ok) {
27
+ // 404 = no usable code / low confidence -> miss (fail the step).
28
+ log.helper(`[textual_analyzer] heal endpoint ${healUrl()} -> ${resp.status}`);
29
+ return null;
30
+ }
31
+ return (await resp.json());
32
+ }
33
+ catch (e) {
34
+ log.warn(`[textual_analyzer] heal POST failed: ${e instanceof Error ? e.message : String(e)}`);
35
+ return null;
36
+ }
37
+ }
38
+ export async function runHeal(page, query, expectedValue, needsUnitConversion) {
39
+ const structured = await captureStructuredDom(page);
40
+ if (structured == null || !structured.text)
41
+ return null;
42
+ const resp = await postHeal(query, structured.text, expectedValue, needsUnitConversion);
43
+ if (!resp || !resp['code'])
44
+ return null;
45
+ const code = String(resp['code']);
46
+ const indices = parseElReferences(code);
47
+ const handles = [];
48
+ const cdp = await page.context().newCDPSession(page);
49
+ try {
50
+ for (const i of indices) {
51
+ const bid = structured.indexToBackendId[i];
52
+ if (bid == null)
53
+ return null;
54
+ const enriched = await enrichElementLocator(cdp, { backendDomNodeId: bid });
55
+ const loc = enriched?.locator;
56
+ if (!loc)
57
+ return null;
58
+ const handle = await page.locator(loc).first().elementHandle();
59
+ if (handle == null)
60
+ return null;
61
+ handles.push(handle);
62
+ }
63
+ }
64
+ finally {
65
+ try {
66
+ await cdp.detach();
67
+ }
68
+ catch { /* ignore */ }
69
+ }
70
+ const wrapped = wrapExtractorCode(code, indices);
71
+ let value;
72
+ try {
73
+ value = await evaluateWrapped(page, wrapped, handles);
74
+ }
75
+ catch (e) {
76
+ log.warn(`[textual_analyzer] heal evaluate failed: ${e instanceof Error ? e.message : String(e)}`);
77
+ return null;
78
+ }
79
+ if (value == null || value === '')
80
+ return null; // regenerated code still missed
81
+ return { value: String(value) };
82
+ }
83
+ //# sourceMappingURL=heal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heal.js","sourceRoot":"","sources":["../../../src/helpers/textualAnalyzer/heal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * testmu.textualAnalyzer — the public helper exported test code calls (TS).
3
+ *
4
+ * Replaces the old raw `page.evaluate(wrappedJs, [handles...])`. Per recorded
5
+ * locator: STRICT visibility check (small timeout). If ALL are visible, resolve
6
+ * handles and run the recorded wrappedJs (the fast happy path). If ANY is not
7
+ * visible, AUTOHEAL — regenerate the whole extraction (runHeal) and recover the
8
+ * value. If heal misses, FAIL the step (no vision fallback).
9
+ */
10
+ import type { Page } from 'playwright';
11
+ export declare class TextualAnalyzerHealFailed extends Error {
12
+ }
13
+ export interface TextualAnalyzerOptions {
14
+ wrappedJs: string;
15
+ locators: string[];
16
+ query: string;
17
+ expectedValue?: string | null;
18
+ needsUnitConversion?: boolean;
19
+ operator?: string;
20
+ transforms?: string[];
21
+ }
22
+ /**
23
+ * Execute a recorded textual_visual extraction, healing on locator drift.
24
+ * Returns the extracted value (string; transforms applied downstream as today).
25
+ */
26
+ export declare function textualAnalyzer(page: Page, opts: TextualAnalyzerOptions): Promise<string | null>;
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/helpers/textualAnalyzer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,IAAI,EAAiB,MAAM,YAAY,CAAC;AAStD,qBAAa,yBAA0B,SAAQ,KAAK;CAAG;AAEvD,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAsBD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAwBtG"}
@@ -0,0 +1,50 @@
1
+ import { log, preview, repr } from '../../log.js';
2
+ import { evaluateWrapped } from './evaluate.js';
3
+ import { runHeal } from './heal.js';
4
+ // Strict "visible with eyes" gate — a recorded locator must be actually visible
5
+ // within this window or we heal. Small so we don't wait the default per locator.
6
+ const VISIBLE_TIMEOUT_MS = 1500;
7
+ export class TextualAnalyzerHealFailed extends Error {
8
+ }
9
+ async function staleAndHandles(page, locators) {
10
+ const stale = [];
11
+ const handles = [];
12
+ for (const loc of locators) {
13
+ const target = page.locator(loc).first();
14
+ try {
15
+ await target.waitFor({ state: 'visible', timeout: VISIBLE_TIMEOUT_MS });
16
+ const handle = await target.elementHandle();
17
+ if (handle == null)
18
+ stale.push(loc);
19
+ else
20
+ handles.push(handle);
21
+ }
22
+ catch {
23
+ // timeout / detached / strict-mode
24
+ stale.push(loc);
25
+ }
26
+ }
27
+ return { stale, handles };
28
+ }
29
+ /**
30
+ * Execute a recorded textual_visual extraction, healing on locator drift.
31
+ * Returns the extracted value (string; transforms applied downstream as today).
32
+ */
33
+ export async function textualAnalyzer(page, opts) {
34
+ const { wrappedJs, locators, query, expectedValue = null, needsUnitConversion = false } = opts;
35
+ const { stale, handles } = await staleAndHandles(page, locators);
36
+ // Happy path — every recorded locator visible.
37
+ if (stale.length === 0 && handles.length === locators.length) {
38
+ return (await evaluateWrapped(page, wrappedJs, handles));
39
+ }
40
+ // Drift — regenerate the whole extraction.
41
+ log.helper(`[textual_analyzer] ${stale.length}/${locators.length} locators not visible -> heal ` +
42
+ `(query=${repr(preview(query, 60).replace(/\.\.\.$/, ''))})`);
43
+ const outcome = await runHeal(page, query, expectedValue, needsUnitConversion);
44
+ if (outcome == null) {
45
+ throw new TextualAnalyzerHealFailed(`textualAnalyzer could not heal extraction for query=${repr(query)}; stale locators: ${JSON.stringify(stale)}`);
46
+ }
47
+ log.helper(`[textual_analyzer] healed locator drift -> ${repr(outcome.value)}`);
48
+ return outcome.value;
49
+ }
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/helpers/textualAnalyzer/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,gFAAgF;AAChF,iFAAiF;AACjF,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC,MAAM,OAAO,yBAA0B,SAAQ,KAAK;CAAG;AAYvD,KAAK,UAAU,eAAe,CAC5B,IAAU,EAAE,QAAkB;IAE9B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACxE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;YAC5C,IAAI,MAAM,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;gBAC/B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,mCAAmC;YACnC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAU,EAAE,IAA4B;IAC5E,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI,EAAE,mBAAmB,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;IAE/F,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEjE,+CAA+C;IAC/C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC7D,OAAO,CAAC,MAAM,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAkB,CAAC;IAC5E,CAAC;IAED,2CAA2C;IAC3C,GAAG,CAAC,MAAM,CACR,sBAAsB,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,gCAAgC;QACrF,UAAU,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAC7D,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,mBAAmB,CAAC,CAAC;IAC/E,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,yBAAyB,CACjC,uDAAuD,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAC/G,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,MAAM,CAAC,8CAA8C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChF,OAAO,OAAO,CAAC,KAAK,CAAC;AACvB,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Synthesize a stable selector for a DOM element via CDP (TS).
3
+ *
4
+ * Strategy:
5
+ * 1. backendDomNodeId → DOM.resolveNode + Runtime.callFunctionOn → JS selector
6
+ * 2. boundingBox only → Runtime.evaluate elementFromPoint(cx, cy) → same JS
7
+ * 3. else → null
8
+ *
9
+ * JS selector priority: #id → [data-testid="…"]/[data-test*] → tag[aria-label="…"]
10
+ * → minimal CSS path (tag:nth-of-type) → null.
11
+ */
12
+ import type { CDPSession } from 'playwright';
13
+ export interface EnrichTarget {
14
+ backendDomNodeId?: number | null;
15
+ boundingBox?: {
16
+ x: number;
17
+ y: number;
18
+ width: number;
19
+ height: number;
20
+ } | null;
21
+ }
22
+ /** Return {locator, locatorType} for a flat-DOM element, or null. */
23
+ export declare function enrichElementLocator(cdp: CDPSession, element: EnrichTarget): Promise<{
24
+ locator: string;
25
+ locatorType: string;
26
+ } | null>;
27
+ //# sourceMappingURL=locatorEnrichment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locatorEnrichment.d.ts","sourceRoot":"","sources":["../../../src/helpers/textualAnalyzer/locatorEnrichment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,MAAM,WAAW,YAAY;IAC3B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC9E;AAiFD,qEAAqE;AACrE,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,GACrC,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAiB1D"}
@@ -0,0 +1,99 @@
1
+ import { log } from '../../log.js';
2
+ // Kept BYTE-FOR-BYTE identical to the python _SELECTOR_JS so heal-time selector
3
+ // synthesis is the same across bindings.
4
+ const SELECTOR_JS = String.raw `
5
+ function() {
6
+ const el = this;
7
+ if (!el || el.nodeType !== 1) return null;
8
+
9
+ if (el.id && /^[A-Za-z][\w-]*$/.test(el.id)) {
10
+ return {locator: '#' + CSS.escape(el.id), locator_type: 'css'};
11
+ }
12
+ for (const a of ['data-testid','data-test-id','data-test','data-qa']) {
13
+ const v = el.getAttribute(a);
14
+ if (v) {
15
+ return {
16
+ locator: '[' + a + '="' + v.replace(/"/g,'\\"') + '"]',
17
+ locator_type: 'css',
18
+ };
19
+ }
20
+ }
21
+ const aria = el.getAttribute('aria-label');
22
+ if (aria) {
23
+ return {
24
+ locator: el.tagName.toLowerCase() + '[aria-label="' + aria.replace(/"/g,'\\"') + '"]',
25
+ locator_type: 'css',
26
+ };
27
+ }
28
+ function path(node) {
29
+ const segs = [];
30
+ while (node && node.nodeType === 1 && node !== document.body) {
31
+ let seg = node.tagName.toLowerCase();
32
+ if (node.parentNode) {
33
+ const sib = Array.from(node.parentNode.children || []).filter(
34
+ c => c.tagName === node.tagName
35
+ );
36
+ if (sib.length > 1) {
37
+ seg += ':nth-of-type(' + (sib.indexOf(node) + 1) + ')';
38
+ }
39
+ }
40
+ segs.unshift(seg);
41
+ node = node.parentNode;
42
+ }
43
+ return segs.join(' > ');
44
+ }
45
+ const css = path(el);
46
+ if (css) return {locator: css, locator_type: 'css'};
47
+ return null;
48
+ }
49
+ `;
50
+ async function resolveObjectId(cdp, element) {
51
+ const bid = element.backendDomNodeId;
52
+ if (bid != null) {
53
+ try {
54
+ const r = (await cdp.send('DOM.resolveNode', { backendNodeId: bid }));
55
+ return r.object?.objectId ?? null;
56
+ }
57
+ catch (e) {
58
+ log.warn(`[autoheal] DOM.resolveNode(backendNodeId=${bid}) failed: ${e instanceof Error ? e.message : String(e)}`);
59
+ }
60
+ }
61
+ const bbox = element.boundingBox;
62
+ if (bbox) {
63
+ const cx = Math.floor(bbox.x + bbox.width / 2);
64
+ const cy = Math.floor(bbox.y + bbox.height / 2);
65
+ try {
66
+ const r = (await cdp.send('Runtime.evaluate', {
67
+ expression: `document.elementFromPoint(${cx},${cy})`,
68
+ returnByValue: false,
69
+ }));
70
+ return r.result?.objectId ?? null;
71
+ }
72
+ catch (e) {
73
+ log.warn(`[autoheal] elementFromPoint(${cx},${cy}) failed: ${e instanceof Error ? e.message : String(e)}`);
74
+ }
75
+ }
76
+ return null;
77
+ }
78
+ /** Return {locator, locatorType} for a flat-DOM element, or null. */
79
+ export async function enrichElementLocator(cdp, element) {
80
+ const objectId = await resolveObjectId(cdp, element);
81
+ if (!objectId)
82
+ return null;
83
+ try {
84
+ const resp = (await cdp.send('Runtime.callFunctionOn', {
85
+ objectId,
86
+ functionDeclaration: SELECTOR_JS,
87
+ returnByValue: true,
88
+ }));
89
+ const r = resp.result?.value;
90
+ if (r && r.locator) {
91
+ return { locator: r.locator, locatorType: r.locator_type ?? 'css' };
92
+ }
93
+ }
94
+ catch (e) {
95
+ log.warn(`[autoheal] selector synthesis failed: ${e instanceof Error ? e.message : String(e)}`);
96
+ }
97
+ return null;
98
+ }
99
+ //# sourceMappingURL=locatorEnrichment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locatorEnrichment.js","sourceRoot":"","sources":["../../../src/helpers/textualAnalyzer/locatorEnrichment.ts"],"names":[],"mappings":"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"}
@@ -42,8 +42,8 @@ interface AxNode {
42
42
  } | unknown;
43
43
  }
44
44
  /**
45
- * Convert CDP Accessibility.getFullAXTree nodes to v16 flat-DOM format.
46
- * 1-based indexing to match v16-runner's full_flat_dom.py. PY parity.
45
+ * Convert CDP Accessibility.getFullAXTree nodes to the flat-DOM format.
46
+ * 1-based indexing matches the recorder's flat-DOM format. PY parity.
47
47
  */
48
48
  export declare function _buildFlatDom(a11yNodes: AxNode[]): FlatDomElement[];
49
49
  /**
@@ -67,7 +67,7 @@ export interface VisionQueryOptions {
67
67
  returnType?: string;
68
68
  /**
69
69
  * When 'true' or 'false', signals a boolean visibility/state check.
70
- * v16-server's analyzer activates its BOOLEAN CHECK prompt branch and
70
+ * The backend analyzer activates its boolean-check path and
71
71
  * returns 'true'/'false' instead of free-form page text. Omit for
72
72
  * value extraction.
73
73
  */
@@ -87,8 +87,8 @@ export interface TextualQueryOptions {
87
87
  returnType?: string;
88
88
  /**
89
89
  * When 'true' or 'false', signals a boolean state check (e.g.
90
- * checkbox.checked, radio.selected, aria-expanded). v16-server's
91
- * DOM analyzer activates its BOOLEAN CHECK prompt branch and
90
+ * checkbox.checked, radio.selected, aria-expanded). The backend
91
+ * DOM analyzer activates its boolean-check path and
92
92
  * returns 'true'/'false' instead of 'checked'/'on'/element text.
93
93
  * Applied only on the extract step.
94
94
  */
@@ -82,8 +82,8 @@ function() {
82
82
  }
83
83
  `;
84
84
  /**
85
- * Convert CDP Accessibility.getFullAXTree nodes to v16 flat-DOM format.
86
- * 1-based indexing to match v16-runner's full_flat_dom.py. PY parity.
85
+ * Convert CDP Accessibility.getFullAXTree nodes to the flat-DOM format.
86
+ * 1-based indexing matches the recorder's flat-DOM format. PY parity.
87
87
  */
88
88
  export function _buildFlatDom(a11yNodes) {
89
89
  const result = [];
@@ -216,7 +216,7 @@ async function _postAnalyzer(body, timeoutMs) {
216
216
  }
217
217
  return (await resp.json());
218
218
  }
219
- /** Get a CDP snapshot of a single element matching v16-runner format. PY parity. */
219
+ /** Get a CDP snapshot of a single element matching the recorder's format. PY parity. */
220
220
  async function _getElementSnapshot(cdp, backendDomNodeId) {
221
221
  const empty = {
222
222
  tag_name: '', text_content: '', attributes: {}, styles: {}, states: {},
@@ -1 +1 @@
1
- {"version":3,"file":"vision.js","sourceRoot":"","sources":["../../src/helpers/vision.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vision.js","sourceRoot":"","sources":["../../src/helpers/vision.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -8,6 +8,7 @@ import { executeJs } from './helpers/executeJs.js';
8
8
  import { executeApi } from './helpers/executeApi.js';
9
9
  import { executeDb } from './helpers/executeDb.js';
10
10
  import { visionQuery, textualQuery, visionWait, visionAction, getVisionCoordinates } from './helpers/vision.js';
11
+ import { textualAnalyzer } from './helpers/textualAnalyzer/index.js';
11
12
  import { verifyAssertion, evaluateBranch } from './helpers/assertion.js';
12
13
  import { evaluateNetworkAssertion, networkQuery } from './helpers/network.js';
13
14
  import { evaluateMath } from './helpers/math.js';
@@ -32,6 +33,7 @@ declare const testmu: {
32
33
  visionWait: typeof visionWait;
33
34
  visionAction: typeof visionAction;
34
35
  getVisionCoordinates: typeof getVisionCoordinates;
36
+ textualAnalyzer: typeof textualAnalyzer;
35
37
  verifyAssertion: typeof verifyAssertion;
36
38
  evaluateBranch: typeof evaluateBranch;
37
39
  evaluateNetworkAssertion: typeof evaluateNetworkAssertion;
@@ -67,6 +69,7 @@ export type { DbRequest } from './helpers/executeDb.js';
67
69
  export type { AssertionTree, AssertionResult, SubCheck } from './helpers/assertion.js';
68
70
  export type { NetworkNode, NetworkLeaf, NetworkComposite, NetworkQueryOptions } from './helpers/network.js';
69
71
  export type { VisionCoordinates } from './helpers/vision.js';
72
+ export type { TextualAnalyzerOptions } from './helpers/textualAnalyzer/index.js';
70
73
  export { ExecuteJsError } from './helpers/executeJs.js';
71
74
  export type { StepOpts, StepState, OnFailure } from './step.js';
72
75
  export type { ElementBounds, EndStepOpts } from './reporters/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAC1E,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,oBAAoB,EAAE,oBAAoB,EAC1C,oBAAoB,EAAE,oBAAoB,EAC1C,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,sBAAsB,EACtE,wBAAwB,EACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAkC,MAAM,uBAAuB,CAAC;AAEtF,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAeX,CAAC;AAEF,eAAe,MAAM,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;AACxE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACvE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrD,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACtF,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACvE,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvF,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC5G,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAChE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -8,6 +8,7 @@ import { executeJs } from './helpers/executeJs.js';
8
8
  import { executeApi } from './helpers/executeApi.js';
9
9
  import { executeDb } from './helpers/executeDb.js';
10
10
  import { visionQuery, textualQuery, visionWait, visionAction, getVisionCoordinates, } from './helpers/vision.js';
11
+ import { textualAnalyzer } from './helpers/textualAnalyzer/index.js';
11
12
  import { verifyAssertion, evaluateBranch } from './helpers/assertion.js';
12
13
  import { evaluateNetworkAssertion, networkQuery } from './helpers/network.js';
13
14
  import { evaluateMath } from './helpers/math.js';
@@ -23,6 +24,7 @@ const testmu = {
23
24
  configure, test, step, run,
24
25
  executeJs, executeApi, executeDb,
25
26
  visionQuery, textualQuery, visionWait, visionAction, getVisionCoordinates,
27
+ textualAnalyzer,
26
28
  verifyAssertion, evaluateBranch,
27
29
  evaluateNetworkAssertion, networkQuery,
28
30
  evaluateMath, smartuiSnapshot,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,GAC1E,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,oBAAoB,EAAE,oBAAoB,EAC1C,oBAAoB,EAAE,oBAAoB,EAC1C,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,sBAAsB,EACtE,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAkC,MAAM,uBAAuB,CAAC;AAEtF,MAAM,MAAM,GAAG;IACb,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG;IAC1B,SAAS,EAAE,UAAU,EAAE,SAAS;IAChC,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB;IACzE,eAAe,EAAE,cAAc;IAC/B,wBAAwB,EAAE,YAAY;IACtC,YAAY,EAAE,eAAe;IAC7B,SAAS,EAAE,SAAS;IACpB,mBAAmB,EAAE,cAAc;IACnC,aAAa;IACb,oBAAoB,EAAE,oBAAoB;IAC1C,oBAAoB,EAAE,oBAAoB;IAC1C,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,sBAAsB;IACtE,wBAAwB;IACxB,aAAa;CACd,CAAC;AAEF,eAAe,MAAM,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;AAOxE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAKvE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,GAC1E,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,oBAAoB,EAAE,oBAAoB,EAC1C,oBAAoB,EAAE,oBAAoB,EAC1C,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,sBAAsB,EACtE,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAkC,MAAM,uBAAuB,CAAC;AAEtF,MAAM,MAAM,GAAG;IACb,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG;IAC1B,SAAS,EAAE,UAAU,EAAE,SAAS;IAChC,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB;IACzE,eAAe;IACf,eAAe,EAAE,cAAc;IAC/B,wBAAwB,EAAE,YAAY;IACtC,YAAY,EAAE,eAAe;IAC7B,SAAS,EAAE,SAAS;IACpB,mBAAmB,EAAE,cAAc;IACnC,aAAa;IACb,oBAAoB,EAAE,oBAAoB;IAC1C,oBAAoB,EAAE,oBAAoB;IAC1C,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,sBAAsB;IACtE,wBAAwB;IACxB,aAAa;CACd,CAAC;AAEF,eAAe,MAAM,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;AAOxE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAMvE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@testmuai/playwright-bindings",
3
- "version": "0.1.15",
3
+ "version": "0.1.16",
4
4
  "description": "Testmu binding for Playwright — thin runtime for LambdaTest exports",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",