@testmuai/playwright-bindings 0.1.2-beta.1 → 0.1.2-beta.2

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 (60) hide show
  1. package/README.md +3 -3
  2. package/dist/config.d.ts +1 -0
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +3 -1
  5. package/dist/config.js.map +1 -1
  6. package/dist/configure.d.ts +5 -1
  7. package/dist/configure.d.ts.map +1 -1
  8. package/dist/configure.js +1 -0
  9. package/dist/configure.js.map +1 -1
  10. package/dist/helpers/assertion.d.ts.map +1 -1
  11. package/dist/helpers/assertion.js +9 -10
  12. package/dist/helpers/assertion.js.map +1 -1
  13. package/dist/helpers/executeApi.d.ts +12 -1
  14. package/dist/helpers/executeApi.d.ts.map +1 -1
  15. package/dist/helpers/executeApi.js +108 -20
  16. package/dist/helpers/executeApi.js.map +1 -1
  17. package/dist/helpers/kaneCli.d.ts +10 -1
  18. package/dist/helpers/kaneCli.d.ts.map +1 -1
  19. package/dist/helpers/kaneCli.js +122 -3
  20. package/dist/helpers/kaneCli.js.map +1 -1
  21. package/dist/helpers/math.d.ts +1 -1
  22. package/dist/helpers/math.d.ts.map +1 -1
  23. package/dist/helpers/math.js +6 -6
  24. package/dist/helpers/math.js.map +1 -1
  25. package/dist/helpers/network.d.ts +4 -4
  26. package/dist/helpers/network.d.ts.map +1 -1
  27. package/dist/helpers/network.js +16 -16
  28. package/dist/helpers/network.js.map +1 -1
  29. package/dist/helpers/smartui.d.ts +5 -1
  30. package/dist/helpers/smartui.d.ts.map +1 -1
  31. package/dist/helpers/smartui.js +45 -7
  32. package/dist/helpers/smartui.js.map +1 -1
  33. package/dist/helpers/vision.d.ts +50 -7
  34. package/dist/helpers/vision.d.ts.map +1 -1
  35. package/dist/helpers/vision.js +212 -29
  36. package/dist/helpers/vision.js.map +1 -1
  37. package/dist/helpers/wait.d.ts.map +1 -1
  38. package/dist/helpers/wait.js +1 -2
  39. package/dist/helpers/wait.js.map +1 -1
  40. package/dist/index.d.ts +2 -2
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +2 -2
  43. package/dist/index.js.map +1 -1
  44. package/dist/relayProxy.d.ts +46 -0
  45. package/dist/relayProxy.d.ts.map +1 -0
  46. package/dist/relayProxy.js +453 -0
  47. package/dist/relayProxy.js.map +1 -0
  48. package/dist/session.d.ts +6 -0
  49. package/dist/session.d.ts.map +1 -1
  50. package/dist/session.js +122 -12
  51. package/dist/session.js.map +1 -1
  52. package/dist/step.d.ts +1 -0
  53. package/dist/step.d.ts.map +1 -1
  54. package/dist/step.js +1 -0
  55. package/dist/step.js.map +1 -1
  56. package/dist/vars.d.ts +9 -20
  57. package/dist/vars.d.ts.map +1 -1
  58. package/dist/vars.js +23 -19
  59. package/dist/vars.js.map +1 -1
  60. package/package.json +9 -5
@@ -1 +1 @@
1
- {"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/helpers/math.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/helpers/math.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,15 @@
1
1
  type Operator = 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'greater_than' | 'greater_than_or_equal' | 'less_than' | 'less_than_or_equal' | 'start_with' | 'end_with';
2
2
  export interface NetworkLeaf {
3
3
  operator: Operator;
4
- left: unknown;
5
- right: unknown;
4
+ left_operand: unknown;
5
+ right_operand: unknown;
6
6
  }
7
7
  export interface NetworkComposite {
8
8
  operator: 'and' | 'or';
9
- children: NetworkNode[];
9
+ operands: NetworkNode[];
10
10
  }
11
11
  export type NetworkNode = NetworkLeaf | NetworkComposite;
12
- export declare function evaluateNetworkAssertion(node: NetworkNode): boolean;
12
+ export declare function evaluateNetworkAssertion(node: NetworkNode): Promise<boolean>;
13
13
  export interface NetworkQueryOptions {
14
14
  method: string;
15
15
  url: string;
@@ -1 +1 @@
1
- {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/helpers/network.ts"],"names":[],"mappings":"AAGA,KAAK,QAAQ,GACT,QAAQ,GAAG,YAAY,GACvB,UAAU,GAAG,cAAc,GAC3B,cAAc,GAAG,uBAAuB,GACxC,WAAW,GAAG,oBAAoB,GAClC,YAAY,GAAG,UAAU,CAAC;AAE9B,MAAM,WAAW,WAAW;IAAG,QAAQ,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;CAAE;AACnF,MAAM,WAAW,gBAAgB;IAAG,QAAQ,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;CAAE;AACtF,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,gBAAgB,CAAC;AA2BzD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAWnE;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAuB9E"}
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/helpers/network.ts"],"names":[],"mappings":"AAGA,KAAK,QAAQ,GACT,QAAQ,GAAG,YAAY,GACvB,UAAU,GAAG,cAAc,GAC3B,cAAc,GAAG,uBAAuB,GACxC,WAAW,GAAG,oBAAoB,GAClC,YAAY,GAAG,UAAU,CAAC;AAE9B,MAAM,WAAW,WAAW;IAAG,QAAQ,EAAE,QAAQ,CAAC;IAAC,YAAY,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAC;CAAE;AACnG,MAAM,WAAW,gBAAgB;IAAG,QAAQ,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;CAAE;AACtF,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAoCzD,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAIlF;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAuB9E"}
@@ -1,12 +1,12 @@
1
- import { v } from '../vars.js';
1
+ import { resolveVar } from '../vars.js';
2
2
  import { config } from '../config.js';
3
- function resolve(val) {
4
- return typeof val === 'string' ? v(val) : val;
3
+ async function resolve(val) {
4
+ return typeof val === 'string' ? resolveVar(val) : val;
5
5
  }
6
- function evaluateLeaf(l) {
7
- const a = resolve(l.left);
8
- const b = resolve(l.right);
9
- switch (l.operator) {
6
+ async function evaluateLeaf(l) {
7
+ const a = await resolve(l.left_operand);
8
+ const b = await resolve(l.right_operand);
9
+ switch (l.operator.toLowerCase()) {
10
10
  case 'equals': return a == b;
11
11
  case 'not_equals': return a != b;
12
12
  case 'contains': return String(a).includes(String(b));
@@ -20,18 +20,18 @@ function evaluateLeaf(l) {
20
20
  }
21
21
  }
22
22
  function isComposite(n) {
23
- return n.operator === 'and' || n.operator === 'or';
23
+ const op = n.operator.toLowerCase();
24
+ return op === 'and' || op === 'or';
24
25
  }
25
- export function evaluateNetworkAssertion(node) {
26
- let result;
26
+ async function _evaluateNode(node) {
27
27
  if (isComposite(node)) {
28
- result = node.operator === 'and'
29
- ? node.children.every(evaluateNetworkAssertion)
30
- : node.children.some(evaluateNetworkAssertion);
31
- }
32
- else {
33
- result = evaluateLeaf(node);
28
+ const childResults = await Promise.all(node.operands.map(_evaluateNode));
29
+ return node.operator.toLowerCase() === 'and' ? childResults.every(Boolean) : childResults.some(Boolean);
34
30
  }
31
+ return evaluateLeaf(node);
32
+ }
33
+ export async function evaluateNetworkAssertion(node) {
34
+ const result = await _evaluateNode(node);
35
35
  if (!result)
36
36
  throw new Error(`Network assertion failed: ${JSON.stringify(node)}`);
37
37
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/helpers/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAatC,SAAS,OAAO,CAAC,GAAY;IAC3B,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACzD,CAAC;AAED,SAAS,YAAY,CAAC,CAAc;IAClC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC3B,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;QACnB,KAAK,QAAQ,CAAC,CAAgB,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5C,KAAK,YAAY,CAAC,CAAY,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5C,KAAK,UAAU,CAAC,CAAc,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,KAAK,cAAc,CAAC,CAAU,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,KAAK,cAAc,CAAC,CAAU,OAAO,MAAM,CAAC,CAAC,CAAC,GAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5D,KAAK,uBAAuB,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5D,KAAK,WAAW,CAAC,CAAa,OAAO,MAAM,CAAC,CAAC,CAAC,GAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5D,KAAK,oBAAoB,CAAC,CAAI,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5D,KAAK,YAAY,CAAC,CAAY,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,KAAK,UAAU,CAAC,CAAc,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,CAAc;IACjC,OAAO,CAAC,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAAiB;IACxD,IAAI,MAAe,CAAC;IACpB,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,GAAG,IAAI,CAAC,QAAQ,KAAK,KAAK;YAC9B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,wBAAwB,CAAC;YAC/C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC;AACd,CAAC;AAWD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAyB;IAC1D,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IACtD,MAAM,GAAG,GAAG,uBAAuB,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IACjF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAqE,CAAC;gBACxG,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtG,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACtC,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,kBAAkB,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC/D,IAAI,MAAM,CAAC,EAAE;wBAAE,OAAO,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5C,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,iDAAiD;QACnD,CAAC;QACD,IAAI,CAAC,GAAG,QAAQ,GAAG,CAAC;YAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/helpers/network.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
1
  import type { Page } from 'playwright';
2
- export declare function smartuiSnapshot(page: Page, name: string): Promise<void>;
2
+ type SdkSnapshot = (p: Page, n: string, o: Record<string, unknown>) => Promise<void>;
3
+ export declare function _resolveSdkFn(mod: unknown): SdkSnapshot | null;
4
+ export declare function _isModuleNotFound(e: unknown): boolean;
5
+ export declare function smartuiSnapshot(page: Page, name: string, options?: Record<string, unknown>): Promise<void>;
6
+ export {};
3
7
  //# sourceMappingURL=smartui.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"smartui.d.ts","sourceRoot":"","sources":["../../src/helpers/smartui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,wBAAsB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO7E"}
1
+ {"version":3,"file":"smartui.d.ts","sourceRoot":"","sources":["../../src/helpers/smartui.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIvC,KAAK,WAAW,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAGrF,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAM9D;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAGrD;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACpC,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
@@ -1,11 +1,49 @@
1
1
  import { config } from '../config.js';
2
- export async function smartuiSnapshot(page, name) {
3
- if (!(config.current.smart && config.current.runTarget === 'cloud'))
2
+ import { log } from '../log.js';
3
+ // exported for unit testing — pure functions, no module side effects
4
+ export function _resolveSdkFn(mod) {
5
+ // CJS in Node ESM can surface as either top-level named export or .default
6
+ const m = mod;
7
+ if (typeof m?.smartuiSnapshot === 'function')
8
+ return m.smartuiSnapshot;
9
+ if (typeof m?.default?.smartuiSnapshot === 'function')
10
+ return m.default.smartuiSnapshot;
11
+ return null;
12
+ }
13
+ export function _isModuleNotFound(e) {
14
+ const code = e?.code;
15
+ return code === 'ERR_MODULE_NOT_FOUND' || code === 'MODULE_NOT_FOUND';
16
+ }
17
+ export async function smartuiSnapshot(page, name, options = {}) {
18
+ log.helper(`[smartui_snapshot] name=${name}`);
19
+ if (config.current.runTarget !== 'cloud') {
20
+ log.helper(`[smartui_snapshot] requires cloud run target — skipping name=${name}`);
4
21
  return;
5
- const payload = JSON.stringify({
6
- action: 'smartui.takeScreenshot',
7
- arguments: { screenshotName: name },
8
- });
9
- await page.evaluate('_ => {}', `lambdatest_action: ${payload}`);
22
+ }
23
+ let mod;
24
+ try {
25
+ // @ts-expect-error — SDK is not a declared dep; installed at HE runtime
26
+ mod = await import('@lambdatest/playwright-driver');
27
+ }
28
+ catch (e) {
29
+ if (_isModuleNotFound(e)) {
30
+ log.helper(`[smartui_snapshot] @lambdatest/playwright-driver not installed — install at HE runtime via code-export`);
31
+ }
32
+ else {
33
+ log.helper(`[smartui_snapshot] SDK import failed: ${String(e)}`);
34
+ }
35
+ throw e;
36
+ }
37
+ const snapshotFn = _resolveSdkFn(mod);
38
+ if (!snapshotFn) {
39
+ throw new Error('[smartui_snapshot] SDK loaded but smartuiSnapshot export not found');
40
+ }
41
+ try {
42
+ await snapshotFn(page, name, options);
43
+ log.helper(`[smartui_snapshot] captured name=${name}`);
44
+ }
45
+ catch (e) {
46
+ log.helper(`[smartui_snapshot] failed: ${String(e)}`);
47
+ }
10
48
  }
11
49
  //# sourceMappingURL=smartui.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"smartui.js","sourceRoot":"","sources":["../../src/helpers/smartui.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAU,EAAE,IAAY;IAC5D,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC;QAAE,OAAO;IAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,MAAM,EAAE,wBAAwB;QAChC,SAAS,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE;KACpC,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,sBAAsB,OAAO,EAAE,CAAC,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"smartui.js","sourceRoot":"","sources":["../../src/helpers/smartui.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAIhC,qEAAqE;AACrE,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,2EAA2E;IAC3E,MAAM,CAAC,GAAG,GAA6E,CAAC;IACxF,IAAI,OAAO,CAAC,EAAE,eAAe,KAAK,UAAU;QAAE,OAAO,CAAC,CAAC,eAA8B,CAAC;IACtF,IAAI,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,KAAK,UAAU;QAAE,OAAO,CAAC,CAAC,OAAO,CAAC,eAA8B,CAAC;IACvG,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,CAAU;IAC1C,MAAM,IAAI,GAAI,CAA8B,EAAE,IAAI,CAAC;IACnD,OAAO,IAAI,KAAK,sBAAsB,IAAI,IAAI,KAAK,kBAAkB,CAAC;AACxE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAU,EACV,IAAY,EACZ,UAAmC,EAAE;IAErC,GAAG,CAAC,MAAM,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC;IAC9C,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;QACzC,GAAG,CAAC,MAAM,CAAC,gEAAgE,IAAI,EAAE,CAAC,CAAC;QACnF,OAAO;IACT,CAAC;IACD,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,wEAAwE;QACxE,GAAG,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,MAAM,CAAC,wGAAwG,CAAC,CAAC;QACvH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,yCAAyC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;IACD,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACtC,GAAG,CAAC,MAAM,CAAC,oCAAoC,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,MAAM,CAAC,8BAA8B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;AACH,CAAC"}
@@ -3,6 +3,49 @@ export interface VisionCoordinates {
3
3
  x: number;
4
4
  y: number;
5
5
  }
6
+ interface FlatDomElement {
7
+ index: number;
8
+ role: string;
9
+ name: string;
10
+ backend_dom_node_id?: number;
11
+ disabled?: boolean;
12
+ checked?: unknown;
13
+ expanded?: unknown;
14
+ selected?: unknown;
15
+ pressed?: unknown;
16
+ focused?: unknown;
17
+ required?: unknown;
18
+ readonly?: unknown;
19
+ value?: unknown;
20
+ description?: string;
21
+ }
22
+ interface AxNode {
23
+ ignored?: boolean;
24
+ role?: {
25
+ value?: string;
26
+ } | string;
27
+ name?: {
28
+ value?: string;
29
+ } | string;
30
+ backendDOMNodeId?: number;
31
+ properties?: Array<{
32
+ name: string;
33
+ value?: {
34
+ value?: unknown;
35
+ } | unknown;
36
+ }>;
37
+ value?: {
38
+ value?: unknown;
39
+ } | unknown;
40
+ description?: {
41
+ value?: string;
42
+ } | unknown;
43
+ }
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.
47
+ */
48
+ export declare function _buildFlatDom(a11yNodes: AxNode[]): FlatDomElement[];
6
49
  /**
7
50
  * Get coordinates for a described element via vision API.
8
51
  *
@@ -22,16 +65,15 @@ export declare function getVisionCoordinates(page: Page, description: string, ac
22
65
  */
23
66
  export declare function visionQuery(page: Page, description: string, returnType?: string): Promise<string | null>;
24
67
  /**
25
- * Extract a value from a DOM element using analyzer API (textual/DOM mode).
68
+ * Extract a value from a DOM element using a 2-step DOM + analyzer API.
26
69
  *
27
- * NOTE: Python does a 5-step CDP flow (DOM.enable Accessibility.getFullAXTree →
28
- * identify via LLM Runtime.callFunctionOn snapshot extract via LLM).
29
- * For v0.1, simplified to a single API call with mode='textual_extract'.
30
- * Full CDP port deferred.
70
+ * Step 1: Build flat accessibility tree, identify target element via LLM.
71
+ * Step 2: Snapshot element via CDP, extract value via LLM.
31
72
  *
32
- * Smart-gated: returns null when smart is OFF.
73
+ * Smart-gated: returns null when smart is OFF. PY parity: vision.py:321.
74
+ * `returnType` kept for signature parity but not sent (PY doesn't send it either).
33
75
  */
34
- export declare function textualQuery(page: Page, description: string, returnType?: string): Promise<string | null>;
76
+ export declare function textualQuery(page: Page, description: string, _returnType?: string): Promise<string | null>;
35
77
  /**
36
78
  * Poll the vision wait API until the described condition is met.
37
79
  *
@@ -45,4 +87,5 @@ export declare function visionWait(page: Page, description: string, timeoutMs?:
45
87
  * Smart-gated via getVisionCoordinates: no-ops when smart is OFF or element not found.
46
88
  */
47
89
  export declare function visionAction(page: Page, description: string, actionType: string, direction?: string, amount?: number): Promise<void>;
90
+ export {};
48
91
  //# sourceMappingURL=vision.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vision.d.ts","sourceRoot":"","sources":["../../src/helpers/vision.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAOvC,MAAM,WAAW,iBAAiB;IAAG,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;CAAE;AAE5D;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,CAAC,CAAC,EAAE,MAAM,EACV,CAAC,CAAC,EAAE,MAAM,GACT,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA0BnC;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsB9G;AAED;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsB/G;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAyBtG;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,SAAS,SAAS,EAClB,MAAM,SAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAaf"}
1
+ {"version":3,"file":"vision.d.ts","sourceRoot":"","sources":["../../src/helpers/vision.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,YAAY,CAAC;AAKnD,MAAM,WAAW,iBAAiB;IAAG,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;CAAE;AAgE5D,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,MAAM;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC;IACnC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;IAC5E,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;IACtC,WAAW,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;CAC5C;AAUD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,CAsDnE;AAgED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,CAAC,CAAC,EAAE,MAAM,EACV,CAAC,CAAC,EAAE,MAAM,GACT,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA0BnC;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsB9G;AAED;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+CxB;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAyBtG;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,SAAS,SAAS,EAClB,MAAM,SAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAaf"}
@@ -1,7 +1,174 @@
1
1
  import { config } from '../config.js';
2
2
  import { fetchWithAuth } from '../http.js';
3
3
  import { log, preview } from '../log.js';
4
- const AI_HOST = () => process.env['TESTMU_AI_API_HOST'] ?? 'http://localhost:8000';
4
+ // CSS properties captured for DOM element snapshot — PY parity (vision.py:37-48)
5
+ const CSS_PROPERTIES = [
6
+ 'color',
7
+ 'background-color',
8
+ 'border-color',
9
+ 'font-size',
10
+ 'font-family',
11
+ 'font-weight',
12
+ 'font-style',
13
+ 'display',
14
+ 'visibility',
15
+ 'opacity',
16
+ ];
17
+ // Accessibility roles to skip when building flat DOM — PY parity (vision.py:51)
18
+ const SKIP_ROLES = new Set(['none', 'generic', 'rootwebarea', 'webarea', 'inlinetextbox']);
19
+ // JS function injected via Runtime.callFunctionOn to snapshot a single DOM element.
20
+ // PY parity (vision.py:54-93). `${...}` for CSS property list substitution.
21
+ const SNAPSHOT_JS = `
22
+ function() {
23
+ let el = this;
24
+ if (el.nodeType === 3 || !el.tagName) {
25
+ el = el.parentElement || el.parentNode;
26
+ }
27
+ if (!el || !el.tagName) {
28
+ return { tag_name: '', text_content: '', attributes: {}, styles: {}, states: {} };
29
+ }
30
+ const attrs = {};
31
+ for (const attr of el.attributes || []) {
32
+ attrs[attr.name] = attr.value;
33
+ }
34
+ const states = {};
35
+ if ('disabled' in el) states.disabled = el.disabled;
36
+ if ('checked' in el) states.checked = el.checked;
37
+ if ('readOnly' in el) states.readOnly = el.readOnly;
38
+ if ('required' in el) states.required = el.required;
39
+ if ('hidden' in el) states.hidden = el.hidden;
40
+ if ('selected' in el) states.selected = el.selected;
41
+ if ('value' in el) states.value = el.value;
42
+ if ('type' in el) states.type = el.type;
43
+ const styles = {};
44
+ try {
45
+ const cs = window.getComputedStyle(el);
46
+ const props = ${JSON.stringify(CSS_PROPERTIES)};
47
+ for (const p of props) {
48
+ const v = cs.getPropertyValue(p);
49
+ if (v) styles[p] = v;
50
+ }
51
+ } catch(e) {}
52
+ return {
53
+ tag_name: el.tagName.toLowerCase(),
54
+ text_content: (el.textContent || '').trim().substring(0, 500),
55
+ attributes: attrs,
56
+ states: states,
57
+ styles: styles,
58
+ };
59
+ }
60
+ `;
61
+ /**
62
+ * Convert CDP Accessibility.getFullAXTree nodes to v16 flat-DOM format.
63
+ * 1-based indexing to match v16-runner's full_flat_dom.py. PY parity.
64
+ */
65
+ export function _buildFlatDom(a11yNodes) {
66
+ const result = [];
67
+ let index = 1;
68
+ for (const node of a11yNodes) {
69
+ if (node.ignored)
70
+ continue;
71
+ const roleObj = node.role;
72
+ const roleRaw = typeof roleObj === 'object' && roleObj !== null
73
+ ? roleObj.value ?? ''
74
+ : String(roleObj ?? '');
75
+ const role = roleRaw.trim().toLowerCase();
76
+ if (SKIP_ROLES.has(role))
77
+ continue;
78
+ const nameObj = node.name;
79
+ const name = typeof nameObj === 'object' && nameObj !== null
80
+ ? nameObj.value ?? ''
81
+ : String(nameObj ?? '');
82
+ const element = { index, role, name };
83
+ if (node.backendDOMNodeId !== undefined) {
84
+ element.backend_dom_node_id = node.backendDOMNodeId;
85
+ }
86
+ const props = {};
87
+ for (const prop of node.properties ?? []) {
88
+ const propName = prop.name ?? '';
89
+ const propVal = prop.value;
90
+ const val = typeof propVal === 'object' && propVal !== null
91
+ ? propVal.value
92
+ : propVal;
93
+ if (val !== undefined && val !== null)
94
+ props[propName] = val;
95
+ }
96
+ if (props['disabled'])
97
+ element.disabled = true;
98
+ for (const key of ['checked', 'expanded', 'selected', 'pressed', 'focused', 'required', 'readonly']) {
99
+ if (key in props)
100
+ element[key] = props[key];
101
+ }
102
+ const valObj = node.value;
103
+ if (typeof valObj === 'object' && valObj !== null && valObj.value) {
104
+ element.value = valObj.value;
105
+ }
106
+ const descObj = node.description;
107
+ if (typeof descObj === 'object' && descObj !== null) {
108
+ const descVal = descObj.value;
109
+ if (descVal)
110
+ element.description = descVal;
111
+ }
112
+ result.push(element);
113
+ index += 1;
114
+ }
115
+ return result;
116
+ }
117
+ // PY parity: _QUERY_TIMEOUT = 60s (identify), _ANALYZER_TIMEOUT = 120s (extract)
118
+ const ANALYZER_QUERY_TIMEOUT_MS = 60_000;
119
+ const ANALYZER_EXTRACT_TIMEOUT_MS = 120_000;
120
+ /** POST to the analyzer endpoint and return parsed JSON. Strict 200-only check + timeout. PY parity. */
121
+ async function _postAnalyzer(body, timeoutMs) {
122
+ const ac = new AbortController();
123
+ const timer = setTimeout(() => ac.abort(), timeoutMs);
124
+ let resp;
125
+ try {
126
+ resp = await fetchWithAuth(`${config.current.aiApiHost}/api/v1/analyzer`, {
127
+ method: 'POST',
128
+ headers: { 'content-type': 'application/json' },
129
+ body: JSON.stringify(body),
130
+ signal: ac.signal,
131
+ });
132
+ }
133
+ finally {
134
+ clearTimeout(timer);
135
+ }
136
+ // Strict 200 — PY checks `resp.status != 200` (vision.py:107). 201-299 must NOT pass.
137
+ if (resp.status !== 200) {
138
+ const text = await resp.text().catch(() => '');
139
+ throw new Error(`Analyzer API error ${resp.status}: ${text}`);
140
+ }
141
+ return (await resp.json());
142
+ }
143
+ /** Get a CDP snapshot of a single element matching v16-runner format. PY parity. */
144
+ async function _getElementSnapshot(cdp, backendDomNodeId) {
145
+ const empty = {
146
+ tag_name: '', text_content: '', attributes: {}, styles: {}, states: {},
147
+ };
148
+ const resolveResp = await cdp.send('DOM.resolveNode', { backendNodeId: backendDomNodeId });
149
+ const objectId = resolveResp.object?.objectId;
150
+ if (!objectId)
151
+ return empty;
152
+ try {
153
+ const callResp = await cdp.send('Runtime.callFunctionOn', {
154
+ objectId,
155
+ functionDeclaration: SNAPSHOT_JS,
156
+ returnByValue: true,
157
+ });
158
+ const result = callResp.result?.value ?? {};
159
+ return {
160
+ tag_name: result.tag_name ?? '',
161
+ text_content: result.text_content ?? '',
162
+ attributes: result.attributes ?? {},
163
+ styles: result.styles ?? {},
164
+ states: result.states ?? {},
165
+ };
166
+ }
167
+ catch (e) {
168
+ log.helper(`[vision] Snapshot failed for backendNodeId=${backendDomNodeId}: ${String(e)}`);
169
+ return empty;
170
+ }
171
+ }
5
172
  /**
6
173
  * Get coordinates for a described element via vision API.
7
174
  *
@@ -22,7 +189,7 @@ export async function getVisionCoordinates(page, description, actionType, x, y)
22
189
  log.helper(`[get_vision_coordinates] query=${preview(description, 60)}`);
23
190
  const shot = await page.screenshot();
24
191
  const viewport = page.viewportSize?.() ?? { width: 1920, height: 1080 };
25
- const resp = await fetchWithAuth(`${AI_HOST()}/api/v1/vision/coordinates`, {
192
+ const resp = await fetchWithAuth(`${config.current.aiApiHost}/api/v1/vision/coordinates`, {
26
193
  method: 'POST',
27
194
  headers: { 'content-type': 'application/json' },
28
195
  body: JSON.stringify({
@@ -53,7 +220,7 @@ export async function visionQuery(page, description, returnType) {
53
220
  log.helper(`[vision_query] query=${preview(description, 80)}`);
54
221
  const shot = (await page.screenshot()).toString('base64');
55
222
  try {
56
- const resp = await fetchWithAuth(`${AI_HOST()}/api/v1/analyzer`, {
223
+ const resp = await fetchWithAuth(`${config.current.aiApiHost}/api/v1/analyzer`, {
57
224
  method: 'POST',
58
225
  headers: { 'content-type': 'application/json' },
59
226
  body: JSON.stringify({
@@ -74,39 +241,55 @@ export async function visionQuery(page, description, returnType) {
74
241
  }
75
242
  }
76
243
  /**
77
- * Extract a value from a DOM element using analyzer API (textual/DOM mode).
244
+ * Extract a value from a DOM element using a 2-step DOM + analyzer API.
78
245
  *
79
- * NOTE: Python does a 5-step CDP flow (DOM.enable Accessibility.getFullAXTree →
80
- * identify via LLM Runtime.callFunctionOn snapshot extract via LLM).
81
- * For v0.1, simplified to a single API call with mode='textual_extract'.
82
- * Full CDP port deferred.
246
+ * Step 1: Build flat accessibility tree, identify target element via LLM.
247
+ * Step 2: Snapshot element via CDP, extract value via LLM.
83
248
  *
84
- * Smart-gated: returns null when smart is OFF.
249
+ * Smart-gated: returns null when smart is OFF. PY parity: vision.py:321.
250
+ * `returnType` kept for signature parity but not sent (PY doesn't send it either).
85
251
  */
86
- export async function textualQuery(page, description, returnType) {
252
+ export async function textualQuery(page, description, _returnType) {
87
253
  if (!config.current.smart)
88
254
  return null;
89
255
  log.helper(`[textual_query] query=${preview(description, 80)}`);
90
- const shot = (await page.screenshot()).toString('base64');
256
+ const cdp = await page.context().newCDPSession(page);
91
257
  try {
92
- const resp = await fetchWithAuth(`${AI_HOST()}/api/v1/analyzer`, {
93
- method: 'POST',
94
- headers: { 'content-type': 'application/json' },
95
- body: JSON.stringify({
96
- type: 'dom',
97
- query: description,
98
- screenshot_b64: shot,
99
- return_type: returnType ?? 'string',
100
- }),
101
- });
102
- if (!resp.ok)
103
- return null;
104
- const body = (await resp.json());
105
- log.helper(`[textual_query] result=${preview(body.extracted_value ?? null, 120)}`);
106
- return body.extracted_value ?? null;
258
+ await cdp.send('DOM.enable');
259
+ const a11yResp = await cdp.send('Accessibility.getFullAXTree');
260
+ const flatDom = _buildFlatDom(a11yResp.nodes ?? []);
261
+ const screenshotBytes = await page.screenshot();
262
+ const screenshotB64 = screenshotBytes.toString('base64');
263
+ const identifyResp = await _postAnalyzer({
264
+ type: 'dom',
265
+ query: description,
266
+ full_dom_list: flatDom,
267
+ screenshot_b64: screenshotB64,
268
+ }, ANALYZER_QUERY_TIMEOUT_MS);
269
+ const domIndexRaw = identifyResp['dom_index'];
270
+ if (domIndexRaw === undefined || domIndexRaw === null) {
271
+ throw new Error(`DOM identify step returned no dom_index: ${JSON.stringify(identifyResp)}`);
272
+ }
273
+ const domIndex = Number(domIndexRaw);
274
+ const target = flatDom.find((el) => el.index === domIndex);
275
+ if (!target || target.backend_dom_node_id === undefined) {
276
+ throw new Error(`Element at dom_index=${domIndex} not found or missing backend_dom_node_id`);
277
+ }
278
+ const snapshot = await _getElementSnapshot(cdp, target.backend_dom_node_id);
279
+ const extractResp = await _postAnalyzer({
280
+ type: 'dom',
281
+ query: description,
282
+ element_snapshot: snapshot,
283
+ }, ANALYZER_EXTRACT_TIMEOUT_MS);
284
+ const extracted = extractResp['extracted_value'] ?? '';
285
+ log.helper(`[textual_query] result=${preview(extracted, 120)}`);
286
+ return extracted;
107
287
  }
108
- catch {
109
- return null;
288
+ finally {
289
+ try {
290
+ await cdp.detach();
291
+ }
292
+ catch { /* ignore */ }
110
293
  }
111
294
  }
112
295
  /**
@@ -124,7 +307,7 @@ export async function visionWait(page, description, timeoutMs = 30_000) {
124
307
  for (let i = 0; i < retries; i++) {
125
308
  const shot = (await page.screenshot()).toString('base64');
126
309
  try {
127
- const resp = await fetchWithAuth(`${AI_HOST()}/api/v1/wait/check`, {
310
+ const resp = await fetchWithAuth(`${config.current.aiApiHost}/api/v1/wait/check`, {
128
311
  method: 'POST',
129
312
  headers: { 'content-type': 'application/json' },
130
313
  body: JSON.stringify({ screenshot_b64: shot, query: description }),
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../src/helpers/wait.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAOvC,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAczF"}
1
+ {"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../src/helpers/wait.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAKvC,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAczF"}
@@ -1,7 +1,6 @@
1
1
  import { config } from '../config.js';
2
2
  import { fetchWithAuth } from '../http.js';
3
3
  import { log, preview } from '../log.js';
4
- const AI_HOST = () => process.env['TESTMU_AI_API_HOST'] ?? 'http://localhost:8000';
5
4
  export async function checkUntilCondition(page, condition) {
6
5
  if (!config.current.smart) {
7
6
  log.helper(`[check_until_condition] smart is OFF — returning False (condition skipped)`);
@@ -9,7 +8,7 @@ export async function checkUntilCondition(page, condition) {
9
8
  }
10
9
  log.helper(`[check_until_condition] condition=${preview(condition, 80)}`);
11
10
  const shot = (await page.screenshot()).toString('base64');
12
- const resp = await fetchWithAuth(`${AI_HOST()}/api/v1/wait/check`, {
11
+ const resp = await fetchWithAuth(`${config.current.aiApiHost}/api/v1/wait/check`, {
13
12
  method: 'POST', headers: { 'content-type': 'application/json' },
14
13
  body: JSON.stringify({ screenshot_b64: shot, query: condition }),
15
14
  });