@healflow/playwright 0.1.1 → 0.1.3

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 (165) hide show
  1. package/README.md +38 -21
  2. package/dist/index.d.ts +2 -22
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +4 -691
  5. package/dist/index.js.map +1 -1
  6. package/dist/plugin/classification.d.ts +6 -0
  7. package/dist/plugin/classification.d.ts.map +1 -0
  8. package/dist/plugin/classification.js +343 -0
  9. package/dist/plugin/classification.js.map +1 -0
  10. package/dist/plugin/constants.d.ts +5 -0
  11. package/dist/plugin/constants.d.ts.map +1 -0
  12. package/dist/plugin/constants.js +55 -0
  13. package/dist/plugin/constants.js.map +1 -0
  14. package/dist/plugin/heal-emit.d.ts +5 -0
  15. package/dist/plugin/heal-emit.d.ts.map +1 -0
  16. package/dist/plugin/heal-emit.js +69 -0
  17. package/dist/plugin/heal-emit.js.map +1 -0
  18. package/dist/plugin/index.d.ts +5 -0
  19. package/dist/plugin/index.d.ts.map +1 -0
  20. package/dist/plugin/index.js +11 -0
  21. package/dist/plugin/index.js.map +1 -0
  22. package/dist/plugin/locator-wrap.d.ts +4 -0
  23. package/dist/plugin/locator-wrap.d.ts.map +1 -0
  24. package/dist/plugin/locator-wrap.js +68 -0
  25. package/dist/plugin/locator-wrap.js.map +1 -0
  26. package/dist/plugin/options.d.ts +3 -0
  27. package/dist/plugin/options.d.ts.map +1 -0
  28. package/dist/plugin/options.js +25 -0
  29. package/dist/plugin/options.js.map +1 -0
  30. package/dist/plugin/page-wrap.d.ts +9 -0
  31. package/dist/plugin/page-wrap.d.ts.map +1 -0
  32. package/dist/plugin/page-wrap.js +99 -0
  33. package/dist/plugin/page-wrap.js.map +1 -0
  34. package/dist/plugin/types.d.ts +19 -0
  35. package/dist/plugin/types.d.ts.map +1 -0
  36. package/dist/plugin/types.js +3 -0
  37. package/dist/plugin/types.js.map +1 -0
  38. package/dist/report-html/build.d.ts +7 -0
  39. package/dist/report-html/build.d.ts.map +1 -0
  40. package/dist/report-html/build.js +138 -0
  41. package/dist/report-html/build.js.map +1 -0
  42. package/dist/report-html/format.d.ts +6 -0
  43. package/dist/report-html/format.d.ts.map +1 -0
  44. package/dist/report-html/format.js +37 -0
  45. package/dist/report-html/format.js.map +1 -0
  46. package/dist/report-html/icons.d.ts +4 -0
  47. package/dist/report-html/icons.d.ts.map +1 -0
  48. package/dist/report-html/icons.js +7 -0
  49. package/dist/report-html/icons.js.map +1 -0
  50. package/dist/report-html/index.d.ts +3 -0
  51. package/dist/report-html/index.d.ts.map +1 -0
  52. package/dist/report-html/index.js +6 -0
  53. package/dist/report-html/index.js.map +1 -0
  54. package/dist/report-html/render.d.ts +6 -0
  55. package/dist/report-html/render.d.ts.map +1 -0
  56. package/dist/report-html/render.js +139 -0
  57. package/dist/report-html/render.js.map +1 -0
  58. package/dist/report-html/script.d.ts +2 -0
  59. package/dist/report-html/script.d.ts.map +1 -0
  60. package/dist/report-html/script.js +75 -0
  61. package/dist/report-html/script.js.map +1 -0
  62. package/dist/report-html/status.d.ts +2 -0
  63. package/dist/report-html/status.d.ts.map +1 -0
  64. package/dist/report-html/status.js +13 -0
  65. package/dist/report-html/status.js.map +1 -0
  66. package/dist/report-html/styles.d.ts +2 -0
  67. package/dist/report-html/styles.d.ts.map +1 -0
  68. package/dist/report-html/styles.js +441 -0
  69. package/dist/report-html/styles.js.map +1 -0
  70. package/dist/report-html/tree.d.ts +8 -0
  71. package/dist/report-html/tree.d.ts.map +1 -0
  72. package/dist/report-html/tree.js +57 -0
  73. package/dist/report-html/tree.js.map +1 -0
  74. package/dist/report-html/types.d.ts +19 -0
  75. package/dist/report-html/types.d.ts.map +1 -0
  76. package/dist/report-html/types.js +3 -0
  77. package/dist/report-html/types.js.map +1 -0
  78. package/dist/report-html.d.ts +2 -6
  79. package/dist/report-html.d.ts.map +1 -1
  80. package/dist/report-html.js +3 -859
  81. package/dist/report-html.js.map +1 -1
  82. package/dist/runtime-ladder.d.ts +17 -0
  83. package/dist/runtime-ladder.d.ts.map +1 -0
  84. package/dist/runtime-ladder.js +61 -0
  85. package/dist/runtime-ladder.js.map +1 -0
  86. package/dist/runtime-techniques/heal-helpers.d.ts +10 -0
  87. package/dist/runtime-techniques/heal-helpers.d.ts.map +1 -0
  88. package/dist/runtime-techniques/heal-helpers.js +304 -0
  89. package/dist/runtime-techniques/heal-helpers.js.map +1 -0
  90. package/dist/runtime-techniques/index.d.ts +11 -0
  91. package/dist/runtime-techniques/index.d.ts.map +1 -0
  92. package/dist/runtime-techniques/index.js +34 -0
  93. package/dist/runtime-techniques/index.js.map +1 -0
  94. package/dist/runtime-techniques/registry.d.ts +5 -0
  95. package/dist/runtime-techniques/registry.d.ts.map +1 -0
  96. package/dist/runtime-techniques/registry.js +29 -0
  97. package/dist/runtime-techniques/registry.js.map +1 -0
  98. package/dist/runtime-techniques/shared/constants.d.ts +4 -0
  99. package/dist/runtime-techniques/shared/constants.d.ts.map +1 -0
  100. package/dist/runtime-techniques/shared/constants.js +7 -0
  101. package/dist/runtime-techniques/shared/constants.js.map +1 -0
  102. package/dist/runtime-techniques/shared/error-utils.d.ts +9 -0
  103. package/dist/runtime-techniques/shared/error-utils.d.ts.map +1 -0
  104. package/dist/runtime-techniques/shared/error-utils.js +27 -0
  105. package/dist/runtime-techniques/shared/error-utils.js.map +1 -0
  106. package/dist/runtime-techniques/shared/heal-alternate.d.ts +6 -0
  107. package/dist/runtime-techniques/shared/heal-alternate.d.ts.map +1 -0
  108. package/dist/runtime-techniques/shared/heal-alternate.js +130 -0
  109. package/dist/runtime-techniques/shared/heal-alternate.js.map +1 -0
  110. package/dist/runtime-techniques/shared/heal-candidates.d.ts +11 -0
  111. package/dist/runtime-techniques/shared/heal-candidates.d.ts.map +1 -0
  112. package/dist/runtime-techniques/shared/heal-candidates.js +127 -0
  113. package/dist/runtime-techniques/shared/heal-candidates.js.map +1 -0
  114. package/dist/runtime-techniques/shared/heal-history.d.ts +10 -0
  115. package/dist/runtime-techniques/shared/heal-history.d.ts.map +1 -0
  116. package/dist/runtime-techniques/shared/heal-history.js +42 -0
  117. package/dist/runtime-techniques/shared/heal-history.js.map +1 -0
  118. package/dist/runtime-techniques/shared/locator-actions.d.ts +6 -0
  119. package/dist/runtime-techniques/shared/locator-actions.d.ts.map +1 -0
  120. package/dist/runtime-techniques/shared/locator-actions.js +66 -0
  121. package/dist/runtime-techniques/shared/locator-actions.js.map +1 -0
  122. package/dist/runtime-techniques/shared/page-waits.d.ts +6 -0
  123. package/dist/runtime-techniques/shared/page-waits.d.ts.map +1 -0
  124. package/dist/runtime-techniques/shared/page-waits.js +57 -0
  125. package/dist/runtime-techniques/shared/page-waits.js.map +1 -0
  126. package/dist/runtime-techniques/shared.d.ts +8 -0
  127. package/dist/runtime-techniques/shared.d.ts.map +1 -0
  128. package/dist/runtime-techniques/shared.js +24 -0
  129. package/dist/runtime-techniques/shared.js.map +1 -0
  130. package/dist/runtime-techniques/t0-retry.d.ts +4 -0
  131. package/dist/runtime-techniques/t0-retry.d.ts.map +1 -0
  132. package/dist/runtime-techniques/t0-retry.js +334 -0
  133. package/dist/runtime-techniques/t0-retry.js.map +1 -0
  134. package/dist/runtime-techniques/t1-scope.d.ts +4 -0
  135. package/dist/runtime-techniques/t1-scope.d.ts.map +1 -0
  136. package/dist/runtime-techniques/t1-scope.js +70 -0
  137. package/dist/runtime-techniques/t1-scope.js.map +1 -0
  138. package/dist/runtime-techniques/t2-normalize.d.ts +3 -0
  139. package/dist/runtime-techniques/t2-normalize.d.ts.map +1 -0
  140. package/dist/runtime-techniques/t2-normalize.js +12 -0
  141. package/dist/runtime-techniques/t2-normalize.js.map +1 -0
  142. package/dist/runtime-techniques/t3-fingerprint.d.ts +4 -0
  143. package/dist/runtime-techniques/t3-fingerprint.d.ts.map +1 -0
  144. package/dist/runtime-techniques/t3-fingerprint.js +13 -0
  145. package/dist/runtime-techniques/t3-fingerprint.js.map +1 -0
  146. package/dist/runtime-techniques/t4-trace.d.ts +4 -0
  147. package/dist/runtime-techniques/t4-trace.d.ts.map +1 -0
  148. package/dist/runtime-techniques/t4-trace.js +125 -0
  149. package/dist/runtime-techniques/t4-trace.js.map +1 -0
  150. package/dist/runtime-techniques/t5-history.d.ts +3 -0
  151. package/dist/runtime-techniques/t5-history.d.ts.map +1 -0
  152. package/dist/runtime-techniques/t5-history.js +50 -0
  153. package/dist/runtime-techniques/t5-history.js.map +1 -0
  154. package/dist/runtime-techniques/types.d.ts +36 -0
  155. package/dist/runtime-techniques/types.d.ts.map +1 -0
  156. package/dist/runtime-techniques/types.js +3 -0
  157. package/dist/runtime-techniques/types.js.map +1 -0
  158. package/dist/runtime-techniques.d.ts +2 -0
  159. package/dist/runtime-techniques.d.ts.map +1 -0
  160. package/dist/runtime-techniques.js +18 -0
  161. package/dist/runtime-techniques.js.map +1 -0
  162. package/dist/terminal.d.ts.map +1 -1
  163. package/dist/terminal.js +52 -3
  164. package/dist/terminal.js.map +1 -1
  165. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"report-html.js","sourceRoot":"","sources":["../src/report-html.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report-html.js","sourceRoot":"","sources":["../src/report-html.ts"],"names":[],"mappings":";;;AACA,mDAAyD;AAAhD,2GAAA,eAAe,OAAA"}
@@ -0,0 +1,17 @@
1
+ import { type ClassificationResult } from '@healflow/shared';
2
+ import type { HealFlowConfig } from '@healflow/shared/config';
3
+ import type { Page, Locator } from '@playwright/test';
4
+ import { type HealResult, type LocatorAction } from './runtime-techniques.js';
5
+ export type PrepareHealOutcome = {
6
+ type: 'retry';
7
+ heal?: HealResult;
8
+ } | {
9
+ type: 'done';
10
+ result: unknown;
11
+ heal?: HealResult;
12
+ } | {
13
+ type: 'abort';
14
+ };
15
+ export declare function enrichRuntimeClassification(classification: ClassificationResult, errorMessage: string): ClassificationResult;
16
+ export declare function executeRuntimeTechniqueLadder(rawPage: Page, locator: Locator, action: LocatorAction, args: unknown[], error: Error, classification: ClassificationResult, config: HealFlowConfig, testFile?: string): Promise<PrepareHealOutcome>;
17
+ //# sourceMappingURL=runtime-ladder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-ladder.d.ts","sourceRoot":"","sources":["../src/runtime-ladder.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,oBAAoB,EAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,aAAa,EAEnB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAWtB,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,oBAAoB,EACpC,YAAY,EAAE,MAAM,GACnB,oBAAoB,CAEtB;AAED,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,OAAO,EAAE,EACf,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,oBAAoB,EACpC,MAAM,EAAE,cAAc,EACtB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,CAoD7B"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.enrichRuntimeClassification = enrichRuntimeClassification;
4
+ exports.executeRuntimeTechniqueLadder = executeRuntimeTechniqueLadder;
5
+ const shared_1 = require("@healflow/shared");
6
+ const runtime_techniques_js_1 = require("./runtime-techniques.js");
7
+ function runtimeStack(classification) {
8
+ const fromMatrix = (classification.techniqueStack ?? []).filter((t) => t !== shared_1.HealingTechnique.T6_AST && t !== shared_1.HealingTechnique.T7_AI);
9
+ const base = fromMatrix.length > 0 ? fromMatrix : runtime_techniques_js_1.RUNTIME_TECHNIQUE_ORDER;
10
+ const withoutT0 = base.filter((t) => t !== shared_1.HealingTechnique.T0_RETRY);
11
+ return [shared_1.HealingTechnique.T0_RETRY, ...withoutT0];
12
+ }
13
+ function enrichRuntimeClassification(classification, errorMessage) {
14
+ return (0, shared_1.enrichClassificationWithMatrix)(classification, errorMessage);
15
+ }
16
+ async function executeRuntimeTechniqueLadder(rawPage, locator, action, args, error, classification, config, testFile) {
17
+ const enriched = enrichRuntimeClassification(classification, (0, runtime_techniques_js_1.errorHaystack)(error));
18
+ if (enriched.matrixEntryId) {
19
+ const entry = (0, shared_1.matchMatrixEntry)((0, runtime_techniques_js_1.errorHaystack)(error), enriched.category, enriched.matrixEntryId);
20
+ if (entry && !(0, shared_1.isRuntimeHealAllowed)(entry.entry)) {
21
+ return { type: 'abort' };
22
+ }
23
+ }
24
+ const ctx = {
25
+ rawPage,
26
+ locator,
27
+ action,
28
+ args,
29
+ error,
30
+ classification: enriched,
31
+ config,
32
+ testFile,
33
+ };
34
+ const stack = runtimeStack(enriched);
35
+ for (const technique of stack) {
36
+ const executor = runtime_techniques_js_1.RUNTIME_TECHNIQUE_EXECUTORS[technique];
37
+ const outcome = await executor(ctx);
38
+ const attachMeta = (heal) => heal
39
+ ? {
40
+ ...heal,
41
+ matrixEntryId: enriched.matrixEntryId,
42
+ technique: heal.technique ?? technique,
43
+ }
44
+ : undefined;
45
+ if (outcome.type === 'done') {
46
+ return {
47
+ type: 'done',
48
+ result: outcome.result,
49
+ heal: attachMeta(outcome.heal),
50
+ };
51
+ }
52
+ if (outcome.type === 'retry') {
53
+ return { type: 'retry', heal: attachMeta(outcome.heal) };
54
+ }
55
+ if (outcome.type === 'abort') {
56
+ return { type: 'abort' };
57
+ }
58
+ }
59
+ return { type: 'abort' };
60
+ }
61
+ //# sourceMappingURL=runtime-ladder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-ladder.js","sourceRoot":"","sources":["../src/runtime-ladder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Page, Locator } from '@playwright/test';
2
+ import { HealingTechnique } from '@healflow/shared';
3
+ import type { HealFlowConfig } from '@healflow/shared/config';
4
+ import type { HealResult, LocatorAction } from './types.js';
5
+ import type { TraceHint } from './shared.js';
6
+ export declare function healSelector(rawPage: Page, action: LocatorAction, args: unknown[], error: Error, technique: HealingTechnique): Promise<HealResult | null>;
7
+ export declare function healIframe(rawPage: Page, locator: Locator, action: LocatorAction, args: unknown[], error: Error, traceHints?: TraceHint): Promise<HealResult | null>;
8
+ export declare function healShadowDom(rawPage: Page, action: LocatorAction, args: unknown[], error: Error, traceHints?: TraceHint): Promise<HealResult | null>;
9
+ export declare function healAuth(rawPage: Page, config: HealFlowConfig): Promise<HealResult | null>;
10
+ //# sourceMappingURL=heal-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heal-helpers.d.ts","sourceRoot":"","sources":["../../src/runtime-techniques/heal-helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAmB,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAc7C,wBAAsB,YAAY,CAChC,OAAO,EAAE,IAAI,EACb,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,OAAO,EAAE,EACf,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA6G5B;AAmBD,wBAAsB,UAAU,CAC9B,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,OAAO,EAAE,EACf,KAAK,EAAE,KAAK,EACZ,UAAU,CAAC,EAAE,SAAS,GACrB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA2E5B;AACD,wBAAsB,aAAa,CACjC,OAAO,EAAE,IAAI,EACb,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,OAAO,EAAE,EACf,KAAK,EAAE,KAAK,EACZ,UAAU,CAAC,EAAE,SAAS,GACrB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAgC5B;AACD,wBAAsB,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA0DhG"}
@@ -0,0 +1,304 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.healSelector = healSelector;
4
+ exports.healIframe = healIframe;
5
+ exports.healShadowDom = healShadowDom;
6
+ exports.healAuth = healAuth;
7
+ const node_fs_1 = require("node:fs");
8
+ const shared_1 = require("@healflow/shared");
9
+ const shared_js_1 = require("./shared.js");
10
+ async function healSelector(rawPage, action, args, error, technique) {
11
+ const haystack = (0, shared_js_1.errorHaystack)(error);
12
+ const staleIdMatch = haystack.match(/getByTestId\(['"]([^'"]+)['"]\)/i);
13
+ const staleId = staleIdMatch?.[1] ?? null;
14
+ if (/strict mode violation|resolved to \d+ elements/i.test(haystack)) {
15
+ const alternate = await (0, shared_js_1.healAlternateLocators)(rawPage, action, args, error, technique);
16
+ if (alternate)
17
+ return alternate;
18
+ }
19
+ const candidates = (0, shared_js_1.buildFingerprintCandidates)(rawPage, staleId, error, technique);
20
+ for (const candidate of candidates) {
21
+ const confident = await (0, shared_js_1.assertUniqueVisibleCandidate)(candidate.locator);
22
+ if (!confident)
23
+ continue;
24
+ try {
25
+ const resolvedLocator = candidate.locator.first();
26
+ await (0, shared_js_1.runLocatorAction)(resolvedLocator, action, (0, shared_js_1.healActionArgs)(action, args));
27
+ const resolvedTestId = await resolvedLocator.getAttribute('data-testid').catch(() => null);
28
+ const ariaLabel = await resolvedLocator.getAttribute('aria-label').catch(() => null);
29
+ return {
30
+ oldValue: staleId ?? undefined,
31
+ newValue: resolvedTestId ?? ariaLabel ?? candidate.label,
32
+ category: shared_1.FailureCategory.SELECTOR,
33
+ rootCause: technique === shared_1.HealingTechnique.T3_FINGERPRINT
34
+ ? 'Fingerprint Match'
35
+ : 'Selector Normalize',
36
+ confidence: technique === shared_1.HealingTechnique.T3_FINGERPRINT ? 0.95 : 0.9,
37
+ technique,
38
+ };
39
+ }
40
+ catch {
41
+ // try next candidate
42
+ }
43
+ }
44
+ const alternate = await (0, shared_js_1.healAlternateLocators)(rawPage, action, args, error, technique);
45
+ if (alternate)
46
+ return alternate;
47
+ if (/iframe-action|widget-iframe|iframe-action-btn/i.test(haystack) ||
48
+ /iframe-action/i.test(staleId ?? '')) {
49
+ const iframeHeal = await healIframe(rawPage, rawPage.locator('body'), action, args, error);
50
+ if (iframeHeal) {
51
+ return { ...iframeHeal, technique };
52
+ }
53
+ }
54
+ if (/not visible|hidden|opacity|not enabled|disabled/i.test(haystack) && staleId) {
55
+ for (const normalized of (0, shared_js_1.normalizeStaleTestIds)(staleId)) {
56
+ const target = rawPage.getByTestId(normalized);
57
+ if ((await target.count().catch(() => 0)) !== 1)
58
+ continue;
59
+ if (action === 'fill' || action === 'type' || action === 'press') {
60
+ try {
61
+ await (0, shared_js_1.runLocatorAction)(target.first(), action, (0, shared_js_1.healActionArgs)(action, args));
62
+ return {
63
+ category: shared_1.FailureCategory.SELECTOR,
64
+ rootCause: 'Stale Input Fallback',
65
+ confidence: 0.84,
66
+ technique,
67
+ oldValue: staleId,
68
+ newValue: normalized,
69
+ };
70
+ }
71
+ catch {
72
+ // try force click path
73
+ }
74
+ }
75
+ const forced = await (0, shared_js_1.healAttachedForceAction)(target, action, args);
76
+ if (forced) {
77
+ return {
78
+ category: shared_1.FailureCategory.SELECTOR,
79
+ rootCause: 'Force Click Hidden',
80
+ confidence: 0.75,
81
+ technique,
82
+ oldValue: staleId ?? undefined,
83
+ newValue: normalized,
84
+ };
85
+ }
86
+ }
87
+ }
88
+ if (staleId && (action === 'click' || action === 'tap')) {
89
+ for (const normalized of (0, shared_js_1.normalizeStaleTestIds)(staleId)) {
90
+ const target = rawPage.getByTestId(normalized);
91
+ if ((await target.count().catch(() => 0)) !== 1)
92
+ continue;
93
+ const forced = await (0, shared_js_1.healAttachedForceAction)(target, action, args);
94
+ if (forced) {
95
+ return {
96
+ category: shared_1.FailureCategory.SELECTOR,
97
+ rootCause: 'Force Click Stale Target',
98
+ confidence: 0.76,
99
+ technique,
100
+ oldValue: staleId,
101
+ newValue: normalized,
102
+ };
103
+ }
104
+ }
105
+ }
106
+ if (/not visible|hidden|opacity/i.test(haystack)) {
107
+ const forced = await (0, shared_js_1.healAttachedForceAction)(staleId ? rawPage.getByTestId(staleId) : rawPage.locator('#matrix-mount button'), action, args);
108
+ if (forced) {
109
+ return {
110
+ category: shared_1.FailureCategory.SELECTOR,
111
+ rootCause: 'Force Click Hidden',
112
+ confidence: 0.75,
113
+ technique,
114
+ oldValue: staleId ?? undefined,
115
+ };
116
+ }
117
+ }
118
+ return null;
119
+ }
120
+ function isValidFrameSelector(selector) {
121
+ return selector.length > 1 && !/^[\]"')}\s]+$/.test(selector) && !selector.startsWith('-');
122
+ }
123
+ function extractIframeSelector(message) {
124
+ const frameMatch = message.match(/frame(?:Locator)?\(['"]([^'"]+)['"]\)/i);
125
+ if (frameMatch?.[1] && isValidFrameSelector(frameMatch[1]))
126
+ return frameMatch[1];
127
+ const dataTestIdMatch = message.match(/\[data-testid="([^"]*iframe[^"]*)"\]/i);
128
+ if (dataTestIdMatch?.[1]) {
129
+ return `[data-testid="${dataTestIdMatch[1]}"]`;
130
+ }
131
+ const nameMatch = message.match(/iframe[^'"]*['"]([^'"]+)['"]/i);
132
+ if (nameMatch?.[1] && isValidFrameSelector(nameMatch[1]))
133
+ return nameMatch[1];
134
+ return null;
135
+ }
136
+ function extractShadowSelector(message) {
137
+ const selectorMatch = message.match(/locator\(['"]([^'"]+)['"]\)/i);
138
+ return selectorMatch?.[1] ?? null;
139
+ }
140
+ async function healIframe(rawPage, locator, action, args, error, traceHints) {
141
+ const haystack = (0, shared_js_1.errorHaystack)(error);
142
+ const extracted = traceHints?.frameSelector ?? extractIframeSelector(haystack);
143
+ const targetTestIdRaw = traceHints?.targetTestId ??
144
+ haystack.match(/getByTestId\(['"]([^'"]+)['"]\)/i)?.[1] ??
145
+ 'iframe-action-btn';
146
+ const targetTestIds = [
147
+ ...new Set([targetTestIdRaw, ...(0, shared_js_1.normalizeStaleTestIds)(targetTestIdRaw)].filter((id) => /^[\w-]+$/.test(id))),
148
+ ];
149
+ const frameSelectors = [
150
+ ...new Set([extracted, '[data-testid="widget-iframe"]', '#widget-frame', 'iframe'].filter((s) => typeof s === 'string' && s.length > 0)),
151
+ ];
152
+ for (const selector of frameSelectors) {
153
+ if (!isValidFrameSelector(selector))
154
+ continue;
155
+ const frameLocator = rawPage.frameLocator(selector);
156
+ const innerCandidates = [
157
+ ...targetTestIds.flatMap((targetTestId) => [frameLocator.getByTestId(targetTestId)]),
158
+ frameLocator.locator('[data-testid]'),
159
+ frameLocator.getByRole('button'),
160
+ ];
161
+ for (const candidate of innerCandidates) {
162
+ const confident = await (0, shared_js_1.assertUniqueVisibleCandidate)(candidate);
163
+ if (!confident)
164
+ continue;
165
+ try {
166
+ await (0, shared_js_1.runLocatorAction)(candidate.first(), action, (0, shared_js_1.healActionArgs)(action, args));
167
+ return {
168
+ oldValue: error.message.slice(0, 80),
169
+ newValue: `frameLocator('${selector}') >> ${targetTestIdRaw}`,
170
+ category: shared_1.FailureCategory.IFRAME,
171
+ rootCause: 'Iframe Context',
172
+ confidence: 0.85,
173
+ };
174
+ }
175
+ catch {
176
+ // try next candidate
177
+ }
178
+ }
179
+ }
180
+ for (const frame of rawPage.frames()) {
181
+ if (frame === rawPage.mainFrame())
182
+ continue;
183
+ const frameBody = frame.locator('[data-testid], button, a');
184
+ const count = await frameBody.count().catch(() => 0);
185
+ if (count !== 1)
186
+ continue;
187
+ try {
188
+ await (0, shared_js_1.runLocatorAction)(frameBody.first(), action, (0, shared_js_1.healActionArgs)(action, args));
189
+ return {
190
+ category: shared_1.FailureCategory.IFRAME,
191
+ rootCause: 'Iframe Context',
192
+ confidence: 0.82,
193
+ };
194
+ }
195
+ catch {
196
+ // try next frame
197
+ }
198
+ }
199
+ try {
200
+ for (const frame of rawPage.frames()) {
201
+ await frame.waitForLoadState('domcontentloaded').catch(() => { });
202
+ }
203
+ await (0, shared_js_1.waitForLocator)(locator);
204
+ return {
205
+ category: shared_1.FailureCategory.IFRAME,
206
+ rootCause: 'Iframe Context',
207
+ confidence: 0.8,
208
+ };
209
+ }
210
+ catch {
211
+ return null;
212
+ }
213
+ }
214
+ async function healShadowDom(rawPage, action, args, error, traceHints) {
215
+ if (/closed shadow/i.test((0, shared_js_1.errorHaystack)(error)))
216
+ return null;
217
+ const baseSelector = extractShadowSelector((0, shared_js_1.errorHaystack)(error)) ??
218
+ (traceHints?.targetTestId ? `[data-testid="${traceHints.targetTestId}"]` : null);
219
+ const pierceCandidates = [];
220
+ if (baseSelector) {
221
+ pierceCandidates.push(rawPage.locator(`${baseSelector.replace(/\s*>>>\s*.*/, '')} >>> *`));
222
+ }
223
+ pierceCandidates.push(rawPage.locator('renamed-custom-element >>> button'), rawPage.locator('open-shadow-host >>> button'), rawPage.locator('#matrix-mount >>> button'), rawPage.locator('[data-testid="shadow-inner-btn"]'));
224
+ for (const pierced of pierceCandidates) {
225
+ const confident = await (0, shared_js_1.assertUniqueVisibleCandidate)(pierced);
226
+ if (!confident)
227
+ continue;
228
+ try {
229
+ await (0, shared_js_1.runLocatorAction)(pierced.first(), action, (0, shared_js_1.healActionArgs)(action, args));
230
+ return {
231
+ oldValue: baseSelector ?? 'shadow host',
232
+ newValue: 'shadow pierce candidate',
233
+ category: shared_1.FailureCategory.SHADOW_DOM,
234
+ rootCause: 'Shadow DOM',
235
+ confidence: 0.8,
236
+ };
237
+ }
238
+ catch {
239
+ // try next candidate
240
+ }
241
+ }
242
+ return null;
243
+ }
244
+ async function healAuth(rawPage, config) {
245
+ const authConfig = config.auth;
246
+ const storageStatePath = authConfig?.storageStatePath;
247
+ if (storageStatePath && (0, node_fs_1.existsSync)(storageStatePath)) {
248
+ try {
249
+ const state = JSON.parse((0, node_fs_1.readFileSync)(storageStatePath, 'utf-8'));
250
+ if (state.cookies?.length) {
251
+ await rawPage.context().addCookies(state.cookies);
252
+ await rawPage.reload({ waitUntil: 'domcontentloaded' });
253
+ return {
254
+ category: shared_1.FailureCategory.AUTH,
255
+ rootCause: 'Auth Session Restore',
256
+ newValue: storageStatePath,
257
+ confidence: 0.85,
258
+ };
259
+ }
260
+ }
261
+ catch {
262
+ // fall through
263
+ }
264
+ }
265
+ await rawPage
266
+ .context()
267
+ .addCookies([
268
+ { name: 'healflow-auth', value: 'valid', domain: '127.0.0.1', path: '/' },
269
+ { name: 'healflow-session', value: 'active', domain: '127.0.0.1', path: '/' },
270
+ ]);
271
+ await rawPage.evaluate(() => localStorage.setItem('healflow-auth', 'valid')).catch(() => { });
272
+ const currentUrl = rawPage.url();
273
+ if (/\/session\.html/.test(currentUrl)) {
274
+ await rawPage
275
+ .reload({ waitUntil: 'domcontentloaded', timeout: shared_js_1.HEAL_RETRY_TIMEOUT_MS })
276
+ .catch(() => { });
277
+ return {
278
+ category: shared_1.FailureCategory.SESSION,
279
+ rootCause: 'Auth Session Restore',
280
+ newValue: 'healflow-session=active',
281
+ confidence: 0.78,
282
+ };
283
+ }
284
+ const loginUrl = authConfig?.loginUrl;
285
+ if (loginUrl) {
286
+ await rawPage.goto(loginUrl, { waitUntil: 'domcontentloaded', timeout: shared_js_1.HEAL_RETRY_TIMEOUT_MS });
287
+ return {
288
+ category: shared_1.FailureCategory.AUTH,
289
+ rootCause: 'Auth Redirect',
290
+ newValue: loginUrl,
291
+ confidence: 0.8,
292
+ };
293
+ }
294
+ await rawPage
295
+ .goto('/protected.html', { waitUntil: 'domcontentloaded', timeout: shared_js_1.HEAL_RETRY_TIMEOUT_MS })
296
+ .catch(() => { });
297
+ return {
298
+ category: shared_1.FailureCategory.AUTH,
299
+ rootCause: 'Auth Session Restore',
300
+ newValue: 'healflow-auth=valid',
301
+ confidence: 0.78,
302
+ };
303
+ }
304
+ //# sourceMappingURL=heal-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heal-helpers.js","sourceRoot":"","sources":["../../src/runtime-techniques/heal-helpers.ts"],"names":[],"mappings":";;AAmBA,oCAmHC;AAmBD,gCAkFC;AACD,sCAsCC;AACD,4BA0DC;AA7UD,qCAAmD;AAEnD,6CAAqE;AAIrE,2CAWqB;AAEd,KAAK,UAAU,YAAY,CAChC,OAAa,EACb,MAAqB,EACrB,IAAe,EACf,KAAY,EACZ,SAA2B;IAE3B,MAAM,QAAQ,GAAG,IAAA,yBAAa,EAAC,KAAK,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC1C,IAAI,iDAAiD,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrE,MAAM,SAAS,GAAG,MAAM,IAAA,iCAAqB,EAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACvF,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC;IAClC,CAAC;IACD,MAAM,UAAU,GAAG,IAAA,sCAA0B,EAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAClF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,MAAM,IAAA,wCAA4B,EAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACxE,IAAI,CAAC,SAAS;YAAE,SAAS;QACzB,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAClD,MAAM,IAAA,4BAAgB,EAAC,eAAe,EAAE,MAAM,EAAE,IAAA,0BAAc,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YAC9E,MAAM,cAAc,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAC3F,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACrF,OAAO;gBACL,QAAQ,EAAE,OAAO,IAAI,SAAS;gBAC9B,QAAQ,EAAE,cAAc,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK;gBACxD,QAAQ,EAAE,wBAAe,CAAC,QAAQ;gBAClC,SAAS,EACP,SAAS,KAAK,yBAAgB,CAAC,cAAc;oBAC3C,CAAC,CAAC,mBAAmB;oBACrB,CAAC,CAAC,oBAAoB;gBAC1B,UAAU,EAAE,SAAS,KAAK,yBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;gBACtE,SAAS;aACV,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;IACH,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,IAAA,iCAAqB,EAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACvF,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,IACE,gDAAgD,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/D,gBAAgB,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EACpC,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3F,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,EAAE,GAAG,UAAU,EAAE,SAAS,EAAE,CAAC;QACtC,CAAC;IACH,CAAC;IACD,IAAI,kDAAkD,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,OAAO,EAAE,CAAC;QACjF,KAAK,MAAM,UAAU,IAAI,IAAA,iCAAqB,EAAC,OAAO,CAAC,EAAE,CAAC;YACxD,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAC/C,IAAI,CAAC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAAE,SAAS;YAC1D,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACjE,IAAI,CAAC;oBACH,MAAM,IAAA,4BAAgB,EAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAA,0BAAc,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;oBAC7E,OAAO;wBACL,QAAQ,EAAE,wBAAe,CAAC,QAAQ;wBAClC,SAAS,EAAE,sBAAsB;wBACjC,UAAU,EAAE,IAAI;wBAChB,SAAS;wBACT,QAAQ,EAAE,OAAO;wBACjB,QAAQ,EAAE,UAAU;qBACrB,CAAC;gBACJ,CAAC;gBAAC,MAAM,CAAC;oBACP,uBAAuB;gBACzB,CAAC;YACH,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAA,mCAAuB,EAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACnE,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO;oBACL,QAAQ,EAAE,wBAAe,CAAC,QAAQ;oBAClC,SAAS,EAAE,oBAAoB;oBAC/B,UAAU,EAAE,IAAI;oBAChB,SAAS;oBACT,QAAQ,EAAE,OAAO,IAAI,SAAS;oBAC9B,QAAQ,EAAE,UAAU;iBACrB,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,CAAC;QACxD,KAAK,MAAM,UAAU,IAAI,IAAA,iCAAqB,EAAC,OAAO,CAAC,EAAE,CAAC;YACxD,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAC/C,IAAI,CAAC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAAE,SAAS;YAC1D,MAAM,MAAM,GAAG,MAAM,IAAA,mCAAuB,EAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACnE,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO;oBACL,QAAQ,EAAE,wBAAe,CAAC,QAAQ;oBAClC,SAAS,EAAE,0BAA0B;oBACrC,UAAU,EAAE,IAAI;oBAChB,SAAS;oBACT,QAAQ,EAAE,OAAO;oBACjB,QAAQ,EAAE,UAAU;iBACrB,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,IAAA,mCAAuB,EAC1C,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAChF,MAAM,EACN,IAAI,CACL,CAAC;QACF,IAAI,MAAM,EAAE,CAAC;YACX,OAAO;gBACL,QAAQ,EAAE,wBAAe,CAAC,QAAQ;gBAClC,SAAS,EAAE,oBAAoB;gBAC/B,UAAU,EAAE,IAAI;gBAChB,SAAS;gBACT,QAAQ,EAAE,OAAO,IAAI,SAAS;aAC/B,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AACD,SAAS,oBAAoB,CAAC,QAAgB;IAC5C,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7F,CAAC;AACD,SAAS,qBAAqB,CAAC,OAAe;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC3E,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC/E,IAAI,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,OAAO,iBAAiB,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;IACjD,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACjE,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;IAC9E,OAAO,IAAI,CAAC;AACd,CAAC;AACD,SAAS,qBAAqB,CAAC,OAAe;IAC5C,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACpE,OAAO,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACpC,CAAC;AACM,KAAK,UAAU,UAAU,CAC9B,OAAa,EACb,OAAgB,EAChB,MAAqB,EACrB,IAAe,EACf,KAAY,EACZ,UAAsB;IAEtB,MAAM,QAAQ,GAAG,IAAA,yBAAa,EAAC,KAAK,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,UAAU,EAAE,aAAa,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC/E,MAAM,eAAe,GACnB,UAAU,EAAE,YAAY;QACxB,QAAQ,CAAC,KAAK,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvD,mBAAmB,CAAC;IACtB,MAAM,aAAa,GAAG;QACpB,GAAG,IAAI,GAAG,CACR,CAAC,eAAe,EAAE,GAAG,IAAA,iCAAqB,EAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CACzE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CACpB,CACF;KACF,CAAC;IACF,MAAM,cAAc,GAAG;QACrB,GAAG,IAAI,GAAG,CACR,CAAC,SAAS,EAAE,+BAA+B,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,MAAM,CAC5E,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAC1D,CACF;KACF,CAAC;IACF,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;QACtC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;YAAE,SAAS;QAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,eAAe,GAAG;YACtB,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;YACpF,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC;YACrC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC;SACjC,CAAC;QACF,KAAK,MAAM,SAAS,IAAI,eAAe,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,MAAM,IAAA,wCAA4B,EAAC,SAAS,CAAC,CAAC;YAChE,IAAI,CAAC,SAAS;gBAAE,SAAS;YACzB,IAAI,CAAC;gBACH,MAAM,IAAA,4BAAgB,EAAC,SAAS,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAA,0BAAc,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;gBAChF,OAAO;oBACL,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;oBACpC,QAAQ,EAAE,iBAAiB,QAAQ,SAAS,eAAe,EAAE;oBAC7D,QAAQ,EAAE,wBAAe,CAAC,MAAM;oBAChC,SAAS,EAAE,gBAAgB;oBAC3B,UAAU,EAAE,IAAI;iBACjB,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,qBAAqB;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACrC,IAAI,KAAK,KAAK,OAAO,CAAC,SAAS,EAAE;YAAE,SAAS;QAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,KAAK,KAAK,CAAC;YAAE,SAAS;QAC1B,IAAI,CAAC;YACH,MAAM,IAAA,4BAAgB,EAAC,SAAS,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAA,0BAAc,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YAChF,OAAO;gBACL,QAAQ,EAAE,wBAAe,CAAC,MAAM;gBAChC,SAAS,EAAE,gBAAgB;gBAC3B,UAAU,EAAE,IAAI;aACjB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;IACH,CAAC;IACD,IAAI,CAAC;QACH,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,MAAM,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,IAAA,0BAAc,EAAC,OAAO,CAAC,CAAC;QAC9B,OAAO;YACL,QAAQ,EAAE,wBAAe,CAAC,MAAM;YAChC,SAAS,EAAE,gBAAgB;YAC3B,UAAU,EAAE,GAAG;SAChB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AACM,KAAK,UAAU,aAAa,CACjC,OAAa,EACb,MAAqB,EACrB,IAAe,EACf,KAAY,EACZ,UAAsB;IAEtB,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAA,yBAAa,EAAC,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7D,MAAM,YAAY,GAChB,qBAAqB,CAAC,IAAA,yBAAa,EAAC,KAAK,CAAC,CAAC;QAC3C,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,iBAAiB,UAAU,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACnF,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAC5B,IAAI,YAAY,EAAE,CAAC;QACjB,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7F,CAAC;IACD,gBAAgB,CAAC,IAAI,CACnB,OAAO,CAAC,OAAO,CAAC,mCAAmC,CAAC,EACpD,OAAO,CAAC,OAAO,CAAC,6BAA6B,CAAC,EAC9C,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,EAC3C,OAAO,CAAC,OAAO,CAAC,kCAAkC,CAAC,CACpD,CAAC;IACF,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,MAAM,IAAA,wCAA4B,EAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,CAAC,SAAS;YAAE,SAAS;QACzB,IAAI,CAAC;YACH,MAAM,IAAA,4BAAgB,EAAC,OAAO,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAA,0BAAc,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YAC9E,OAAO;gBACL,QAAQ,EAAE,YAAY,IAAI,aAAa;gBACvC,QAAQ,EAAE,yBAAyB;gBACnC,QAAQ,EAAE,wBAAe,CAAC,UAAU;gBACpC,SAAS,EAAE,YAAY;gBACvB,UAAU,EAAE,GAAG;aAChB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AACM,KAAK,UAAU,QAAQ,CAAC,OAAa,EAAE,MAAsB;IAClE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;IAC/B,MAAM,gBAAgB,GAAG,UAAU,EAAE,gBAAgB,CAAC;IACtD,IAAI,gBAAgB,IAAI,IAAA,oBAAU,EAAC,gBAAgB,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;YAClE,IAAI,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;gBAC1B,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAClD,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBACxD,OAAO;oBACL,QAAQ,EAAE,wBAAe,CAAC,IAAI;oBAC9B,SAAS,EAAE,sBAAsB;oBACjC,QAAQ,EAAE,gBAAgB;oBAC1B,UAAU,EAAE,IAAI;iBACjB,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IACD,MAAM,OAAO;SACV,OAAO,EAAE;SACT,UAAU,CAAC;QACV,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE;QACzE,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE;KAC9E,CAAC,CAAC;IACL,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC7F,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACjC,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACvC,MAAM,OAAO;aACV,MAAM,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,iCAAqB,EAAE,CAAC;aACzE,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACnB,OAAO;YACL,QAAQ,EAAE,wBAAe,CAAC,OAAO;YACjC,SAAS,EAAE,sBAAsB;YACjC,QAAQ,EAAE,yBAAyB;YACnC,UAAU,EAAE,IAAI;SACjB,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,UAAU,EAAE,QAAQ,CAAC;IACtC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,iCAAqB,EAAE,CAAC,CAAC;QAChG,OAAO;YACL,QAAQ,EAAE,wBAAe,CAAC,IAAI;YAC9B,SAAS,EAAE,eAAe;YAC1B,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE,GAAG;SAChB,CAAC;IACJ,CAAC;IACD,MAAM,OAAO;SACV,IAAI,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,iCAAqB,EAAE,CAAC;SAC1F,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACnB,OAAO;QACL,QAAQ,EAAE,wBAAe,CAAC,IAAI;QAC9B,SAAS,EAAE,sBAAsB;QACjC,QAAQ,EAAE,qBAAqB;QAC/B,UAAU,EAAE,IAAI;KACjB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ export * from './types.js';
2
+ export * from './shared.js';
3
+ export { executeT0Retry } from './t0-retry.js';
4
+ export { executeT1Scope } from './t1-scope.js';
5
+ export { executeT2Normalize } from './t2-normalize.js';
6
+ export { executeT3Fingerprint } from './t3-fingerprint.js';
7
+ export { executeT4Trace } from './t4-trace.js';
8
+ export { executeT5History } from './t5-history.js';
9
+ export * from './heal-helpers.js';
10
+ export * from './registry.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime-techniques/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.executeT5History = exports.executeT4Trace = exports.executeT3Fingerprint = exports.executeT2Normalize = exports.executeT1Scope = exports.executeT0Retry = void 0;
18
+ __exportStar(require("./types.js"), exports);
19
+ __exportStar(require("./shared.js"), exports);
20
+ var t0_retry_js_1 = require("./t0-retry.js");
21
+ Object.defineProperty(exports, "executeT0Retry", { enumerable: true, get: function () { return t0_retry_js_1.executeT0Retry; } });
22
+ var t1_scope_js_1 = require("./t1-scope.js");
23
+ Object.defineProperty(exports, "executeT1Scope", { enumerable: true, get: function () { return t1_scope_js_1.executeT1Scope; } });
24
+ var t2_normalize_js_1 = require("./t2-normalize.js");
25
+ Object.defineProperty(exports, "executeT2Normalize", { enumerable: true, get: function () { return t2_normalize_js_1.executeT2Normalize; } });
26
+ var t3_fingerprint_js_1 = require("./t3-fingerprint.js");
27
+ Object.defineProperty(exports, "executeT3Fingerprint", { enumerable: true, get: function () { return t3_fingerprint_js_1.executeT3Fingerprint; } });
28
+ var t4_trace_js_1 = require("./t4-trace.js");
29
+ Object.defineProperty(exports, "executeT4Trace", { enumerable: true, get: function () { return t4_trace_js_1.executeT4Trace; } });
30
+ var t5_history_js_1 = require("./t5-history.js");
31
+ Object.defineProperty(exports, "executeT5History", { enumerable: true, get: function () { return t5_history_js_1.executeT5History; } });
32
+ __exportStar(require("./heal-helpers.js"), exports);
33
+ __exportStar(require("./registry.js"), exports);
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime-techniques/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,8CAA4B;AAC5B,6CAA+C;AAAtC,6GAAA,cAAc,OAAA;AACvB,6CAA+C;AAAtC,6GAAA,cAAc,OAAA;AACvB,qDAAuD;AAA9C,qHAAA,kBAAkB,OAAA;AAC3B,yDAA2D;AAAlD,yHAAA,oBAAoB,OAAA;AAC7B,6CAA+C;AAAtC,6GAAA,cAAc,OAAA;AACvB,iDAAmD;AAA1C,iHAAA,gBAAgB,OAAA;AACzB,oDAAkC;AAClC,gDAA8B"}
@@ -0,0 +1,5 @@
1
+ import { HealingTechnique } from '@healflow/shared';
2
+ import type { RuntimeTechniqueContext, RuntimeTechniqueOutcome } from './types.js';
3
+ export declare const RUNTIME_TECHNIQUE_ORDER: HealingTechnique[];
4
+ export declare const RUNTIME_TECHNIQUE_EXECUTORS: Record<HealingTechnique, (ctx: RuntimeTechniqueContext) => Promise<RuntimeTechniqueOutcome>>;
5
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/runtime-techniques/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAQnF,eAAO,MAAM,uBAAuB,EAAE,gBAAgB,EAOrD,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAC9C,gBAAgB,EAChB,CAAC,GAAG,EAAE,uBAAuB,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAUnE,CAAC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RUNTIME_TECHNIQUE_EXECUTORS = exports.RUNTIME_TECHNIQUE_ORDER = void 0;
4
+ const shared_1 = require("@healflow/shared");
5
+ const t0_retry_js_1 = require("./t0-retry.js");
6
+ const t1_scope_js_1 = require("./t1-scope.js");
7
+ const t2_normalize_js_1 = require("./t2-normalize.js");
8
+ const t3_fingerprint_js_1 = require("./t3-fingerprint.js");
9
+ const t4_trace_js_1 = require("./t4-trace.js");
10
+ const t5_history_js_1 = require("./t5-history.js");
11
+ exports.RUNTIME_TECHNIQUE_ORDER = [
12
+ shared_1.HealingTechnique.T0_RETRY,
13
+ shared_1.HealingTechnique.T1_SCOPE,
14
+ shared_1.HealingTechnique.T2_NORMALIZE,
15
+ shared_1.HealingTechnique.T3_FINGERPRINT,
16
+ shared_1.HealingTechnique.T4_TRACE,
17
+ shared_1.HealingTechnique.T5_HISTORY,
18
+ ];
19
+ exports.RUNTIME_TECHNIQUE_EXECUTORS = {
20
+ [shared_1.HealingTechnique.T0_RETRY]: t0_retry_js_1.executeT0Retry,
21
+ [shared_1.HealingTechnique.T1_SCOPE]: t1_scope_js_1.executeT1Scope,
22
+ [shared_1.HealingTechnique.T2_NORMALIZE]: t2_normalize_js_1.executeT2Normalize,
23
+ [shared_1.HealingTechnique.T3_FINGERPRINT]: t3_fingerprint_js_1.executeT3Fingerprint,
24
+ [shared_1.HealingTechnique.T4_TRACE]: t4_trace_js_1.executeT4Trace,
25
+ [shared_1.HealingTechnique.T5_HISTORY]: t5_history_js_1.executeT5History,
26
+ [shared_1.HealingTechnique.T6_AST]: async () => ({ type: 'continue' }),
27
+ [shared_1.HealingTechnique.T7_AI]: async () => ({ type: 'continue' }),
28
+ };
29
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/runtime-techniques/registry.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AAEpD,+CAA+C;AAC/C,+CAA+C;AAC/C,uDAAuD;AACvD,2DAA2D;AAC3D,+CAA+C;AAC/C,mDAAmD;AAEtC,QAAA,uBAAuB,GAAuB;IACzD,yBAAgB,CAAC,QAAQ;IACzB,yBAAgB,CAAC,QAAQ;IACzB,yBAAgB,CAAC,YAAY;IAC7B,yBAAgB,CAAC,cAAc;IAC/B,yBAAgB,CAAC,QAAQ;IACzB,yBAAgB,CAAC,UAAU;CAC5B,CAAC;AAEW,QAAA,2BAA2B,GAGpC;IACF,CAAC,yBAAgB,CAAC,QAAQ,CAAC,EAAE,4BAAc;IAC3C,CAAC,yBAAgB,CAAC,QAAQ,CAAC,EAAE,4BAAc;IAC3C,CAAC,yBAAgB,CAAC,YAAY,CAAC,EAAE,oCAAkB;IACnD,CAAC,yBAAgB,CAAC,cAAc,CAAC,EAAE,wCAAoB;IACvD,CAAC,yBAAgB,CAAC,QAAQ,CAAC,EAAE,4BAAc;IAC3C,CAAC,yBAAgB,CAAC,UAAU,CAAC,EAAE,gCAAgB;IAC/C,CAAC,yBAAgB,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC7D,CAAC,yBAAgB,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;CAC7D,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const HEAL_FIRST_ATTEMPT_TIMEOUT_MS = 3000;
2
+ export declare const HEAL_RETRY_TIMEOUT_MS = 15000;
3
+ export declare const T0_QUICK_TIMEOUT_MS = 4000;
4
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/runtime-techniques/shared/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,6BAA6B,OAAQ,CAAC;AACnD,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAC5C,eAAO,MAAM,mBAAmB,OAAQ,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.T0_QUICK_TIMEOUT_MS = exports.HEAL_RETRY_TIMEOUT_MS = exports.HEAL_FIRST_ATTEMPT_TIMEOUT_MS = void 0;
4
+ exports.HEAL_FIRST_ATTEMPT_TIMEOUT_MS = 3_000;
5
+ exports.HEAL_RETRY_TIMEOUT_MS = 15_000;
6
+ exports.T0_QUICK_TIMEOUT_MS = 4_000;
7
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/runtime-techniques/shared/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,6BAA6B,GAAG,KAAK,CAAC;AACtC,QAAA,qBAAqB,GAAG,MAAM,CAAC;AAC/B,QAAA,mBAAmB,GAAG,KAAK,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare function errorHaystack(error: Error): string;
2
+ export interface TraceHint {
3
+ frameSelector?: string;
4
+ targetTestId?: string;
5
+ targetRole?: string;
6
+ targetName?: string;
7
+ }
8
+ export declare function parsePlaywrightTraceHints(error: Error): TraceHint;
9
+ //# sourceMappingURL=error-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-utils.d.ts","sourceRoot":"","sources":["../../../src/runtime-techniques/shared/error-utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAElD;AAED,MAAM,WAAW,SAAS;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAqBjE"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.errorHaystack = errorHaystack;
4
+ exports.parsePlaywrightTraceHints = parsePlaywrightTraceHints;
5
+ function errorHaystack(error) {
6
+ return `${error.message}\n${error.stack ?? ''}`;
7
+ }
8
+ function parsePlaywrightTraceHints(error) {
9
+ const haystack = errorHaystack(error);
10
+ const hints = {};
11
+ const frameMatch = haystack.match(/frame(?:Locator)?\(['"]([^'"]+)['"]\)/i);
12
+ if (frameMatch?.[1])
13
+ hints.frameSelector = frameMatch[1];
14
+ const testIdMatch = haystack.match(/data-testid="([^"]+)"/i);
15
+ if (testIdMatch?.[1] && /^[\w-]+$/.test(testIdMatch[1]))
16
+ hints.targetTestId = testIdMatch[1];
17
+ const roleMatch = haystack.match(/getByRole\(['"]([^'"]+)['"],\s*\{\s*name:\s*['"]([^'"]+)['"]/i);
18
+ if (roleMatch?.[1] && roleMatch[2]) {
19
+ hints.targetRole = roleMatch[1];
20
+ hints.targetName = roleMatch[2];
21
+ }
22
+ const resolvedMatch = haystack.match(/locator resolved to <[^>]+data-testid="([^"]+)"/i);
23
+ if (resolvedMatch?.[1] && /^[\w-]+$/.test(resolvedMatch[1]))
24
+ hints.targetTestId = resolvedMatch[1];
25
+ return hints;
26
+ }
27
+ //# sourceMappingURL=error-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-utils.js","sourceRoot":"","sources":["../../../src/runtime-techniques/shared/error-utils.ts"],"names":[],"mappings":";;AAAA,sCAEC;AASD,8DAqBC;AAhCD,SAAgB,aAAa,CAAC,KAAY;IACxC,OAAO,GAAG,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;AAClD,CAAC;AASD,SAAgB,yBAAyB,CAAC,KAAY;IACpD,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,KAAK,GAAc,EAAE,CAAC;IAE5B,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5E,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC;QAAE,KAAK,CAAC,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAEzD,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC7D,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAAE,KAAK,CAAC,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAE7F,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;IAClG,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAChC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACzF,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACzD,KAAK,CAAC,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAExC,OAAO,KAAK,CAAC;AACf,CAAC"}