@testmuai/playwright-bindings 0.1.2-beta.1 → 0.1.2-beta.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 (76) hide show
  1. package/README.md +3 -3
  2. package/dist/config.d.ts +2 -0
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +6 -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/healPatch.d.ts +9 -2
  11. package/dist/healPatch.d.ts.map +1 -1
  12. package/dist/healPatch.js +25 -8
  13. package/dist/healPatch.js.map +1 -1
  14. package/dist/helpers/assertion.d.ts.map +1 -1
  15. package/dist/helpers/assertion.js +18 -12
  16. package/dist/helpers/assertion.js.map +1 -1
  17. package/dist/helpers/drag.d.ts.map +1 -1
  18. package/dist/helpers/drag.js +2 -0
  19. package/dist/helpers/drag.js.map +1 -1
  20. package/dist/helpers/executeApi.d.ts +12 -1
  21. package/dist/helpers/executeApi.d.ts.map +1 -1
  22. package/dist/helpers/executeApi.js +108 -20
  23. package/dist/helpers/executeApi.js.map +1 -1
  24. package/dist/helpers/executeDb.js +1 -1
  25. package/dist/helpers/executeDb.js.map +1 -1
  26. package/dist/helpers/kaneCli.d.ts +10 -1
  27. package/dist/helpers/kaneCli.d.ts.map +1 -1
  28. package/dist/helpers/kaneCli.js +122 -3
  29. package/dist/helpers/kaneCli.js.map +1 -1
  30. package/dist/helpers/math.d.ts +1 -1
  31. package/dist/helpers/math.d.ts.map +1 -1
  32. package/dist/helpers/math.js +8 -6
  33. package/dist/helpers/math.js.map +1 -1
  34. package/dist/helpers/network.d.ts +4 -4
  35. package/dist/helpers/network.d.ts.map +1 -1
  36. package/dist/helpers/network.js +19 -16
  37. package/dist/helpers/network.js.map +1 -1
  38. package/dist/helpers/smartui.d.ts +5 -1
  39. package/dist/helpers/smartui.d.ts.map +1 -1
  40. package/dist/helpers/smartui.js +45 -7
  41. package/dist/helpers/smartui.js.map +1 -1
  42. package/dist/helpers/tabs.d.ts.map +1 -1
  43. package/dist/helpers/tabs.js +2 -0
  44. package/dist/helpers/tabs.js.map +1 -1
  45. package/dist/helpers/vision.d.ts +50 -7
  46. package/dist/helpers/vision.d.ts.map +1 -1
  47. package/dist/helpers/vision.js +212 -29
  48. package/dist/helpers/vision.js.map +1 -1
  49. package/dist/helpers/wait.d.ts.map +1 -1
  50. package/dist/helpers/wait.js +1 -2
  51. package/dist/helpers/wait.js.map +1 -1
  52. package/dist/index.d.ts +3 -4
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +4 -6
  55. package/dist/index.js.map +1 -1
  56. package/dist/loadEnv.d.ts +2 -0
  57. package/dist/loadEnv.d.ts.map +1 -0
  58. package/dist/loadEnv.js +12 -0
  59. package/dist/loadEnv.js.map +1 -0
  60. package/dist/relayProxy.d.ts +46 -0
  61. package/dist/relayProxy.d.ts.map +1 -0
  62. package/dist/relayProxy.js +453 -0
  63. package/dist/relayProxy.js.map +1 -0
  64. package/dist/session.d.ts +6 -0
  65. package/dist/session.d.ts.map +1 -1
  66. package/dist/session.js +130 -16
  67. package/dist/session.js.map +1 -1
  68. package/dist/step.d.ts +23 -6
  69. package/dist/step.d.ts.map +1 -1
  70. package/dist/step.js +23 -27
  71. package/dist/step.js.map +1 -1
  72. package/dist/vars.d.ts +9 -20
  73. package/dist/vars.d.ts.map +1 -1
  74. package/dist/vars.js +62 -26
  75. package/dist/vars.js.map +1 -1
  76. package/package.json +10 -5
@@ -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
  });
@@ -1 +1 @@
1
- {"version":3,"file":"wait.js","sourceRoot":"","sources":["../../src/helpers/wait.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,OAAO,GAAG,GAAW,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,uBAAuB,CAAC;AAE3F,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAU,EAAE,SAAiB;IACrE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC1B,GAAG,CAAC,MAAM,CAAC,4EAA4E,CAAC,CAAC;QACzF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,GAAG,CAAC,MAAM,CAAC,qCAAqC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,GAAG,OAAO,EAAE,oBAAoB,EAAE;QACjE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/D,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;KACjE,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAC3B,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAA0B,CAAC;IAC1D,OAAO,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"wait.js","sourceRoot":"","sources":["../../src/helpers/wait.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAU,EAAE,SAAiB;IACrE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC1B,GAAG,CAAC,MAAM,CAAC,4EAA4E,CAAC,CAAC;QACzF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,GAAG,CAAC,MAAM,CAAC,qCAAqC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,oBAAoB,EAAE;QAChF,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/D,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;KACjE,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAC3B,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAA0B,CAAC;IAC1D,OAAO,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC;AAChC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { configure } from './configure.js';
2
2
  import { test } from './test.js';
3
- import { step, done } from './step.js';
3
+ import { step } from './step.js';
4
4
  import { run } from './session.js';
5
- import { v, setVar, vAsync } from './vars.js';
5
+ import { resolveVar, setVar } from './vars.js';
6
6
  import { TestmuConfigError } from './errors.js';
7
7
  import { executeJs } from './helpers/executeJs.js';
8
8
  import { executeApi } from './helpers/executeApi.js';
@@ -20,7 +20,6 @@ declare const testmu: {
20
20
  configure: typeof configure;
21
21
  test: typeof test;
22
22
  step: typeof step;
23
- done: typeof done;
24
23
  run: typeof run;
25
24
  executeJs: typeof executeJs;
26
25
  executeApi: typeof executeApi;
@@ -42,7 +41,7 @@ declare const testmu: {
42
41
  executeKaneCli: typeof executeKaneCli;
43
42
  };
44
43
  export default testmu;
45
- export { v, setVar, vAsync, TestmuConfigError };
44
+ export { resolveVar, setVar, TestmuConfigError };
46
45
  export type { ConfigureOptions, GlobalVariable } from './configure.js';
47
46
  export type { RunTarget, Config } from './config.js';
48
47
  export type { Reporter } from './reporters/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAC1E,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAKtD,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;CASX,CAAC;AAEF,eAAe,MAAM,CAAC;AACtB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACvE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrD,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACtF,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvF,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC5G,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAC1E,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;CASX,CAAC;AAEF,eAAe,MAAM,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;AACjD,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACvE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrD,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACtF,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvF,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC5G,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { configure } from './configure.js';
2
2
  import { test } from './test.js';
3
- import { step, done } from './step.js';
3
+ import { step } from './step.js';
4
4
  import { run } from './session.js';
5
- import { v, setVar, vAsync } from './vars.js';
5
+ import { resolveVar, setVar } from './vars.js';
6
6
  import { TestmuConfigError } from './errors.js';
7
7
  import { executeJs } from './helpers/executeJs.js';
8
8
  import { executeApi } from './helpers/executeApi.js';
@@ -16,10 +16,8 @@ import { switchTab } from './helpers/tabs.js';
16
16
  import { clickDrag } from './helpers/drag.js';
17
17
  import { checkUntilCondition } from './helpers/wait.js';
18
18
  import { executeKaneCli } from './helpers/kaneCli.js';
19
- import { installHealPatch } from './healPatch.js';
20
- installHealPatch();
21
19
  const testmu = {
22
- configure, test, step, done, run,
20
+ configure, test, step, run,
23
21
  executeJs, executeApi, executeDb,
24
22
  visionQuery, textualQuery, visionWait, visionAction, getVisionCoordinates,
25
23
  verifyAssertion, evaluateBranch,
@@ -29,6 +27,6 @@ const testmu = {
29
27
  checkUntilCondition, executeKaneCli,
30
28
  };
31
29
  export default testmu;
32
- export { v, setVar, vAsync, TestmuConfigError };
30
+ export { resolveVar, setVar, TestmuConfigError };
33
31
  export { ExecuteJsError } from './helpers/executeJs.js';
34
32
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,GAC1E,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,gBAAgB,EAAE,CAAC;AAEnB,MAAM,MAAM,GAAG;IACb,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG;IAChC,SAAS,EAAE,UAAU,EAAE,SAAS;IAChC,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB;IACzE,eAAe,EAAE,cAAc;IAC/B,wBAAwB,EAAE,YAAY;IACtC,YAAY,EAAE,eAAe;IAC7B,SAAS,EAAE,SAAS;IACpB,mBAAmB,EAAE,cAAc;CACpC,CAAC;AAEF,eAAe,MAAM,CAAC;AACtB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;AAUhD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,GAC1E,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,MAAM,GAAG;IACb,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG;IAC1B,SAAS,EAAE,UAAU,EAAE,SAAS;IAChC,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB;IACzE,eAAe,EAAE,cAAc;IAC/B,wBAAwB,EAAE,YAAY;IACtC,YAAY,EAAE,eAAe;IAC7B,SAAS,EAAE,SAAS;IACpB,mBAAmB,EAAE,cAAc;CACpC,CAAC;AAEF,eAAe,MAAM,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;AAUjD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=loadEnv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadEnv.d.ts","sourceRoot":"","sources":["../src/loadEnv.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ // Auto-load .env from the consumer's cwd at package import time.
2
+ //
3
+ // Mirrors the Python binding's `load_dotenv()` call in testmu/__init__.py.
4
+ // Side-effect-only module — import this file before any code that reads
5
+ // process.env at module load (e.g., src/config.ts).
6
+ //
7
+ // dotenv defaults: existing process.env vars are NOT overridden, so values
8
+ // injected by HyperExecute or set in the user's shell take precedence over
9
+ // the local .env file. This matches PY parity.
10
+ import { config as loadDotenv } from 'dotenv';
11
+ loadDotenv();
12
+ //# sourceMappingURL=loadEnv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadEnv.js","sourceRoot":"","sources":["../src/loadEnv.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,2EAA2E;AAC3E,wEAAwE;AACxE,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,+CAA+C;AAE/C,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE9C,UAAU,EAAE,CAAC"}
@@ -0,0 +1,46 @@
1
+ export declare class UpstreamConnectionError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export declare class MessageBuffer {
5
+ private readonly maxSize;
6
+ private buffer;
7
+ constructor(maxSize?: number);
8
+ add(message: string | Buffer): void;
9
+ flush(): (string | Buffer)[];
10
+ get length(): number;
11
+ }
12
+ export declare class ObjectSnapshot {
13
+ private objects;
14
+ track(message: string | Buffer): void;
15
+ static isLifecycleMessage(message: string | Buffer): boolean;
16
+ replay(): string[];
17
+ }
18
+ export declare class PlaywrightRelayProxy {
19
+ private readonly upstreamUrl;
20
+ localPort: number;
21
+ private upstreamWs;
22
+ private clientWs;
23
+ private snapshot;
24
+ private buffer;
25
+ private ready;
26
+ private shutdownEv;
27
+ private server;
28
+ private drainTask;
29
+ private drainAbort;
30
+ private initialized;
31
+ private initResponse;
32
+ private serverMessages;
33
+ private clientConnected;
34
+ private clientDisconnected;
35
+ constructor(upstreamUrl: string, localPort?: number);
36
+ waitReady(): Promise<void>;
37
+ shutdown(): void;
38
+ start(): Promise<void>;
39
+ private trackServerMessage;
40
+ private drainUpstream;
41
+ private handleClient;
42
+ private handleFirstClient;
43
+ private handleReconnectingClient;
44
+ private relay;
45
+ }
46
+ //# sourceMappingURL=relayProxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relayProxy.d.ts","sourceRoot":"","sources":["../src/relayProxy.ts"],"names":[],"mappings":"AAMA,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM;CAI5B;AA4FD,qBAAa,aAAa;IAEZ,OAAO,CAAC,QAAQ,CAAC,OAAO;IADpC,OAAO,CAAC,MAAM,CAA2B;gBACZ,OAAO,SAAO;IAE3C,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKnC,KAAK,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE;IAM5B,IAAI,MAAM,IAAI,MAAM,CAA+B;CACpD;AAID,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAA6B;IAE5C,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAWrC,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAQ5D,MAAM,IAAI,MAAM,EAAE;CAGnB;AAID,qBAAa,oBAAoB;IAiB7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IACrB,SAAS,EAAE,MAAM;IAjB1B,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,kBAAkB,CAAiB;gBAGxB,WAAW,EAAE,MAAM,EAC7B,SAAS,GAAE,MAAU;IAK9B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAC1B,QAAQ,IAAI,IAAI;IAEV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoD5B,OAAO,CAAC,kBAAkB;YAgBZ,aAAa;YA6Cb,YAAY;YA0CZ,iBAAiB;YAuCjB,wBAAwB;YAyBxB,KAAK;CAoCpB"}