@testmuai/playwright-bindings 0.1.37-beta.2 → 0.1.37

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.
@@ -6,12 +6,20 @@
6
6
  * stable locator → page.evaluate(wrap(code), handles).
7
7
  *
8
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).
9
+ * that won't resolve, or a null/empty result). A miss is retried with exponential
10
+ * backoff (see HEAL_MAX_ATTEMPTS); once the attempts are spent the caller FAILS the
11
+ * step (there is no vision fallback for a textual heal).
11
12
  */
12
13
  import type { Page } from 'playwright';
13
14
  export interface HealOutcome {
14
15
  value: string;
15
16
  }
17
+ /**
18
+ * Heal, retrying a miss up to HEAL_MAX_ATTEMPTS times with exponential backoff.
19
+ *
20
+ * Every attempt re-captures the DOM and re-POSTs, so a page that simply had not
21
+ * settled by the caller's visibility gate gets another look; a transient endpoint
22
+ * error gets another try. Returns null once the attempts are spent.
23
+ */
16
24
  export declare function runHeal(page: Page, query: string, expectedValue: string | null, needsUnitConversion: boolean, condition?: string | null, previousCode?: string | null): Promise<HealOutcome | null>;
17
25
  //# sourceMappingURL=heal.d.ts.map
@@ -1 +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;AAyCD,wBAAsB,OAAO,CAC3B,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,EAAE,mBAAmB,EAAE,OAAO,EACrF,SAAS,GAAE,MAAM,GAAG,IAAW,EAAE,YAAY,GAAE,MAAM,GAAG,IAAW,GAClE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAwC7B"}
1
+ {"version":3,"file":"heal.d.ts","sourceRoot":"","sources":["../../../src/helpers/textualAnalyzer/heal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,IAAI,EAAiB,MAAM,YAAY,CAAC;AAiBtD,MAAM,WAAW,WAAW;IAK1B,KAAK,EAAE,MAAM,CAAC;CACf;AAyCD;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,EAAE,mBAAmB,EAAE,OAAO,EACrF,SAAS,GAAE,MAAM,GAAG,IAAW,EAAE,YAAY,GAAE,MAAM,GAAG,IAAW,GAClE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAuB7B"}
@@ -6,6 +6,11 @@ import { enrichElementLocator } from './locatorEnrichment.js';
6
6
  import { evaluateWrapped } from './evaluate.js';
7
7
  import { parseElReferences, wrapExtractorCode } from './extractor.js';
8
8
  const HEAL_TIMEOUT_MS = 60_000;
9
+ // A heal miss is retried: the page may not have settled yet, or the endpoint may have
10
+ // blipped. Exponential backoff between attempts — 1s, then 2s — so a genuinely absent
11
+ // element costs ~3s of waiting rather than a fixed poll.
12
+ const HEAL_MAX_ATTEMPTS = 3;
13
+ const HEAL_BACKOFF_BASE_MS = 1000;
9
14
  function healUrl() {
10
15
  return config.current.aiApiHost.replace(/\/+$/, '') + '/api/v1/textual_analyzer/heal';
11
16
  }
@@ -41,7 +46,33 @@ async function postHeal(query, domSnapshot, expectedValue, needsUnit, condition
41
46
  return null;
42
47
  }
43
48
  }
49
+ /**
50
+ * Heal, retrying a miss up to HEAL_MAX_ATTEMPTS times with exponential backoff.
51
+ *
52
+ * Every attempt re-captures the DOM and re-POSTs, so a page that simply had not
53
+ * settled by the caller's visibility gate gets another look; a transient endpoint
54
+ * error gets another try. Returns null once the attempts are spent.
55
+ */
44
56
  export async function runHeal(page, query, expectedValue, needsUnitConversion, condition = null, previousCode = null) {
57
+ for (let attempt = 1; attempt <= HEAL_MAX_ATTEMPTS; attempt++) {
58
+ const outcome = await attemptHeal(page, query, expectedValue, needsUnitConversion, condition, previousCode);
59
+ if (outcome != null) {
60
+ if (attempt > 1) {
61
+ log.helper(`[textual_analyzer] heal succeeded on attempt ${attempt}/${HEAL_MAX_ATTEMPTS}`);
62
+ }
63
+ return outcome;
64
+ }
65
+ if (attempt < HEAL_MAX_ATTEMPTS) {
66
+ const delayMs = HEAL_BACKOFF_BASE_MS * 2 ** (attempt - 1);
67
+ log.helper(`[textual_analyzer] heal attempt ${attempt}/${HEAL_MAX_ATTEMPTS} missed -> ` +
68
+ `retry in ${(delayMs / 1000).toFixed(1)}s`);
69
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
70
+ }
71
+ }
72
+ log.helper(`[textual_analyzer] heal missed after ${HEAL_MAX_ATTEMPTS} attempt(s)`);
73
+ return null;
74
+ }
75
+ async function attemptHeal(page, query, expectedValue, needsUnitConversion, condition = null, previousCode = null) {
45
76
  const structured = await captureStructuredDom(page);
46
77
  if (structured == null || !structured.text)
47
78
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"heal.js","sourceRoot":"","sources":["../../../src/helpers/textualAnalyzer/heal.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEtE,MAAM,eAAe,GAAG,MAAM,CAAC;AAU/B,SAAS,OAAO;IACd,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,+BAA+B,CAAC;AACxF,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,KAAa,EAAE,WAAmB,EAAE,aAA4B,EAAE,SAAkB,EACpF,YAA2B,IAAI,EAAE,eAA8B,IAAI;IAEnE,MAAM,IAAI,GAAG;QACX,KAAK;QACL,YAAY,EAAE,WAAW;QACzB,cAAc,EAAE,aAAa;QAC7B,qBAAqB,EAAE,SAAS;QAChC,0EAA0E;QAC1E,wEAAwE;QACxE,SAAS,EAAE,SAAS,IAAI,EAAE;QAC1B,yEAAyE;QACzE,iEAAiE;QACjE,aAAa,EAAE,YAAY,IAAI,EAAE;KAClC,CAAC;IACF,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,EAAE;YAC1C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC;SAC7C,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,iEAAiE;YACjE,GAAG,CAAC,MAAM,CAAC,oCAAoC,OAAO,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9E,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAA4B,CAAC;IACxD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,wCAAwC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/F,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,IAAU,EAAE,KAAa,EAAE,aAA4B,EAAE,mBAA4B,EACrF,YAA2B,IAAI,EAAE,eAA8B,IAAI;IAEnE,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,UAAU,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAExD,MAAM,IAAI,GAAG,MAAM,QAAQ,CACzB,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,mBAAmB,EAAE,SAAS,EAAE,YAAY,CACpF,CAAC;IACF,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAExC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAExC,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,CAAC;QACH,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,GAAG,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;YAC7B,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;YAClF,MAAM,GAAG,GAAG,QAAQ,EAAE,OAAO,CAAC;YAC9B,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC;YACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,aAAa,EAAE,CAAC;YAC/D,IAAI,MAAM,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YAAC,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnG,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC,CAAC,gCAAgC;IAEhF,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"heal.js","sourceRoot":"","sources":["../../../src/helpers/textualAnalyzer/heal.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@testmuai/playwright-bindings",
3
- "version": "0.1.37-beta.2",
3
+ "version": "0.1.37",
4
4
  "description": "Testmu binding for Playwright — thin runtime for LambdaTest exports",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",