craftdriver 1.8.0 → 1.9.0

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 (108) hide show
  1. package/CHANGELOG.md +6 -5
  2. package/README.md +3 -2
  3. package/dist/cli/pageSemantics.d.ts +3 -39
  4. package/dist/cli/pageSemantics.d.ts.map +1 -1
  5. package/dist/cli/pageSemantics.js +3 -191
  6. package/dist/cli/pageSemantics.js.map +1 -1
  7. package/dist/cli/selector.d.ts +3 -3
  8. package/dist/cli/selector.d.ts.map +1 -1
  9. package/dist/cli/selector.js +6 -9
  10. package/dist/cli/selector.js.map +1 -1
  11. package/dist/cli/snapshot.d.ts +5 -6
  12. package/dist/cli/snapshot.d.ts.map +1 -1
  13. package/dist/cli/snapshot.js +59 -18
  14. package/dist/cli/snapshot.js.map +1 -1
  15. package/dist/index.d.ts +2 -1
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +1 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/lib/a11y.d.ts +6 -2
  20. package/dist/lib/a11y.d.ts.map +1 -1
  21. package/dist/lib/a11y.js +3 -1
  22. package/dist/lib/a11y.js.map +1 -1
  23. package/dist/lib/bidi/evaluate.d.ts +11 -0
  24. package/dist/lib/bidi/evaluate.d.ts.map +1 -0
  25. package/dist/lib/bidi/evaluate.js +25 -0
  26. package/dist/lib/bidi/evaluate.js.map +1 -0
  27. package/dist/lib/bidi/types.d.ts +2 -0
  28. package/dist/lib/bidi/types.d.ts.map +1 -1
  29. package/dist/lib/browser.d.ts +1 -1
  30. package/dist/lib/browser.d.ts.map +1 -1
  31. package/dist/lib/browser.js +46 -35
  32. package/dist/lib/browser.js.map +1 -1
  33. package/dist/lib/browserContext.d.ts +4 -6
  34. package/dist/lib/browserContext.d.ts.map +1 -1
  35. package/dist/lib/browserContext.js +5 -7
  36. package/dist/lib/browserContext.js.map +1 -1
  37. package/dist/lib/by.d.ts +65 -27
  38. package/dist/lib/by.d.ts.map +1 -1
  39. package/dist/lib/by.js +47 -20
  40. package/dist/lib/by.js.map +1 -1
  41. package/dist/lib/clearFastPath.d.ts.map +1 -1
  42. package/dist/lib/clearFastPath.js +2 -0
  43. package/dist/lib/clearFastPath.js.map +1 -1
  44. package/dist/lib/clickFastPath.d.ts.map +1 -1
  45. package/dist/lib/clickFastPath.js +2 -0
  46. package/dist/lib/clickFastPath.js.map +1 -1
  47. package/dist/lib/driver.d.ts +19 -0
  48. package/dist/lib/driver.d.ts.map +1 -1
  49. package/dist/lib/driver.js +111 -4
  50. package/dist/lib/driver.js.map +1 -1
  51. package/dist/lib/elementHandle.d.ts +13 -10
  52. package/dist/lib/elementHandle.d.ts.map +1 -1
  53. package/dist/lib/elementHandle.js +119 -50
  54. package/dist/lib/elementHandle.js.map +1 -1
  55. package/dist/lib/errors.d.ts +5 -1
  56. package/dist/lib/errors.d.ts.map +1 -1
  57. package/dist/lib/errors.js +5 -1
  58. package/dist/lib/errors.js.map +1 -1
  59. package/dist/lib/expect.d.ts +10 -0
  60. package/dist/lib/expect.d.ts.map +1 -1
  61. package/dist/lib/expect.js +76 -49
  62. package/dist/lib/expect.js.map +1 -1
  63. package/dist/lib/fillFastPath.d.ts.map +1 -1
  64. package/dist/lib/fillFastPath.js +2 -0
  65. package/dist/lib/fillFastPath.js.map +1 -1
  66. package/dist/lib/frame.d.ts.map +1 -1
  67. package/dist/lib/frame.js +29 -17
  68. package/dist/lib/frame.js.map +1 -1
  69. package/dist/lib/locator.d.ts +21 -54
  70. package/dist/lib/locator.d.ts.map +1 -1
  71. package/dist/lib/locator.js +165 -208
  72. package/dist/lib/locator.js.map +1 -1
  73. package/dist/lib/page.d.ts.map +1 -1
  74. package/dist/lib/page.js +23 -13
  75. package/dist/lib/page.js.map +1 -1
  76. package/dist/lib/pageSemantics.d.ts +42 -0
  77. package/dist/lib/pageSemantics.d.ts.map +1 -0
  78. package/dist/lib/pageSemantics.js +216 -0
  79. package/dist/lib/pageSemantics.js.map +1 -0
  80. package/dist/lib/query.d.ts +68 -0
  81. package/dist/lib/query.d.ts.map +1 -0
  82. package/dist/lib/query.js +590 -0
  83. package/dist/lib/query.js.map +1 -0
  84. package/dist/lib/shadowRoot.d.ts +21 -0
  85. package/dist/lib/shadowRoot.d.ts.map +1 -0
  86. package/dist/lib/shadowRoot.js +29 -0
  87. package/dist/lib/shadowRoot.js.map +1 -0
  88. package/dist/lib/shadowRootLocator.d.ts +31 -0
  89. package/dist/lib/shadowRootLocator.d.ts.map +1 -0
  90. package/dist/lib/shadowRootLocator.js +55 -0
  91. package/dist/lib/shadowRootLocator.js.map +1 -0
  92. package/dist/lib/timing.d.ts +2 -2
  93. package/dist/lib/timing.js +2 -2
  94. package/docs/accessibility.md +9 -1
  95. package/docs/api-reference.md +4 -1
  96. package/docs/browser-api.md +3 -3
  97. package/docs/browser-context.md +3 -3
  98. package/docs/cli.md +10 -7
  99. package/docs/error-codes.md +3 -1
  100. package/docs/getting-started.md +1 -1
  101. package/docs/mcp.md +9 -5
  102. package/docs/public/examples/iframe-child.html +12 -1
  103. package/docs/public/examples/shadow-dom.html +137 -0
  104. package/docs/recipes/login-once-reuse-session.md +1 -1
  105. package/docs/selectors.md +61 -0
  106. package/docs/session-management.md +17 -10
  107. package/package.json +3 -3
  108. package/skills/craftdriver/patterns.md +3 -0
package/dist/lib/page.js CHANGED
@@ -18,6 +18,7 @@ import { DEFAULT_NAVIGATION_TIMEOUT_MS, STATE_POLL_INTERVAL_MS } from './timing.
18
18
  import { CraftdriverError, ErrorCode } from './errors.js';
19
19
  import { clickWithFastPath } from './clickFastPath.js';
20
20
  import { fillWithFastPath } from './fillFastPath.js';
21
+ import { withRealmRetry } from './bidi/evaluate.js';
21
22
  export function isNoSuchWindowError(err) {
22
23
  if (!CraftdriverError.is(err, ErrorCode.DRIVER_ERROR))
23
24
  return false;
@@ -290,25 +291,25 @@ export class Page {
290
291
  // ── Evaluate ─────────────────────────────────────────────────────────────
291
292
  async evaluate(fn, ...args) {
292
293
  const fnSrc = typeof fn === 'function' ? fn.toString() : fn;
293
- if (this.conn) {
294
+ const conn = this.conn;
295
+ if (conn) {
294
296
  const target = { context: this.contextId };
295
- let result;
296
- if (typeof fn === 'function') {
297
- result = await this.conn.send('script.callFunction', {
298
- functionDeclaration: fnSrc,
299
- target,
300
- arguments: args.map(serializeLocalValue),
301
- awaitPromise: true,
302
- });
303
- }
304
- else {
305
- result = await this.conn.send('script.callFunction', {
297
+ const result = await withRealmRetry(() => {
298
+ if (typeof fn === 'function') {
299
+ return conn.send('script.callFunction', {
300
+ functionDeclaration: fnSrc,
301
+ target,
302
+ arguments: args.map(serializeLocalValue),
303
+ awaitPromise: true,
304
+ });
305
+ }
306
+ return conn.send('script.callFunction', {
306
307
  functionDeclaration: `function() { ${fnSrc} }`,
307
308
  target,
308
309
  arguments: [],
309
310
  awaitPromise: true,
310
311
  });
311
- }
312
+ });
312
313
  if (result.type === 'exception') {
313
314
  throw new CraftdriverError(ErrorCode.EVAL_THREW, `evaluate() threw an exception: ${result.exceptionDetails?.text ?? 'unknown error'}`, { detail: { exception: result.exceptionDetails?.text ?? null } });
314
315
  }
@@ -376,6 +377,9 @@ export class Page {
376
377
  const sw = this._makeContextSwitcher();
377
378
  if (sw)
378
379
  handle.withContext(sw);
380
+ handle.withBiDi(() => this.conn?.isConnected()
381
+ ? { connection: this.conn, contextId: this.contextId }
382
+ : undefined);
379
383
  return handle;
380
384
  }
381
385
  locator(selector) {
@@ -384,6 +388,9 @@ export class Page {
384
388
  const sw = this._makeContextSwitcher();
385
389
  if (sw)
386
390
  loc.withContext(sw);
391
+ loc.withBiDi(() => this.conn?.isConnected()
392
+ ? { connection: this.conn, contextId: this.contextId }
393
+ : undefined);
387
394
  return loc;
388
395
  }
389
396
  expect(selector) {
@@ -398,6 +405,9 @@ export class Page {
398
405
  const handle = ElementHandle.fromWebElement(this.driver, we, this.getDefaultTimeout);
399
406
  if (sw)
400
407
  handle.withContext(sw);
408
+ handle.withBiDi(() => this.conn?.isConnected()
409
+ ? { connection: this.conn, contextId: this.contextId }
410
+ : undefined);
401
411
  return handle;
402
412
  });
403
413
  }
@@ -1 +1 @@
1
- {"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/lib/page.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/lib/page.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Page-side role and accessible-name extraction, shared by the snapshot and
3
+ * the locator-candidate builder.
4
+ *
5
+ * These two surfaces must agree, and both must agree with `By.role` — that is
6
+ * the whole point of the module. The snapshot tells an agent an element is a
7
+ * `listbox`; the candidate builder proposes `role=listbox[name=Colors]`; and
8
+ * `By.role('listbox', { name: 'Colors' })` has to actually resolve it in the
9
+ * committed test. When those three drifted apart, the recommended locator for
10
+ * a multi-select was a brittle `text=RedBlue`.
11
+ *
12
+ * So the mapping lives here once, `src/lib/by.ts` stays the resolution
13
+ * authority, and `tests/cli/role-conformance.test.ts` pins the agreement
14
+ * against a real browser.
15
+ *
16
+ * Emitted as JS **source text**: both callers assemble a body for
17
+ * `page.evaluate`, and the build has no DOM lib. Keep it dependency-free and
18
+ * side-effect-free — it is concatenated into larger scripts.
19
+ *
20
+ * ## The ARIA role / display token split
21
+ *
22
+ * `ariaRole` returns a real ARIA role or `null`. `null` is not a failure: an
23
+ * `<input type="password">` genuinely has no ARIA role, and pretending it is a
24
+ * `textbox` produces a `role=textbox[name=Password]` that resolves to nothing.
25
+ * The snapshot falls back to `displayRole` (the tag name) so the element still
26
+ * appears, while the candidate builder proposes a role locator only when
27
+ * `ariaRole` is non-null. Honest over convenient.
28
+ */
29
+ /**
30
+ * Function declarations injected into a page-side script.
31
+ *
32
+ * Provides `firstRoleToken`, `hasSectioningAncestor`, `ariaRole`,
33
+ * `displayRole`, `associatedLabel` and `accName`.
34
+ */
35
+ export declare const PAGE_SEMANTICS_JS = "\nfunction firstRoleToken(el) {\n const role = (el.getAttribute('role') || '').trim();\n return role ? role.split(/\\s+/)[0] : null;\n}\n// Mirrors HAS_SECTIONING_ANCESTOR in src/lib/by.ts: header/footer are only\n// banner/contentinfo when not nested in sectioning content.\nfunction hasSectioningAncestor(el) {\n for (let p = el.parentElement; p; p = p.parentElement) {\n const t = p.tagName.toLowerCase();\n if (t === 'article' || t === 'aside' || t === 'main' || t === 'nav' || t === 'section') {\n return true;\n }\n const role = firstRoleToken(p);\n if (\n role === 'article' ||\n role === 'complementary' ||\n role === 'main' ||\n role === 'navigation' ||\n role === 'region'\n ) {\n return true;\n }\n }\n return false;\n}\n// The ARIA role, or null when the element has none that By.role can resolve.\n// Every branch here must have a counterpart in IMPLICIT_ROLE_XPATH.\nfunction ariaRole(el) {\n const explicit = firstRoleToken(el);\n if (explicit) return explicit;\n const t = el.tagName.toLowerCase();\n if (t === 'a' || t === 'area') return el.hasAttribute('href') ? 'link' : null;\n if (t === 'button' || t === 'summary') return 'button';\n if (t === 'input') {\n const it = (el.getAttribute('type') || 'text').toLowerCase();\n if (it === 'submit' || it === 'button' || it === 'reset' || it === 'image') return 'button';\n if (it === 'checkbox') return 'checkbox';\n if (it === 'radio') return 'radio';\n if (it === 'search') return 'searchbox';\n if (it === 'number') return 'spinbutton';\n if (it === 'range') return 'slider';\n if (it === 'text' || it === 'email' || it === 'tel' || it === 'url') return 'textbox';\n // password, date, file, color, hidden\u2026 have no corresponding ARIA role.\n return el.hasAttribute('type') ? null : 'textbox';\n }\n if (t === 'textarea') return 'textbox';\n // multiple/size are reflected IDL attributes, so reading the properties\n // stays equivalent to the attribute test By.role compiles to XPath.\n if (t === 'select') return el.multiple || el.size > 1 ? 'listbox' : 'combobox';\n if (/^h[1-6]$/.test(t)) return 'heading';\n if (t === 'img') return 'img';\n if (t === 'ul' || t === 'ol') return 'list';\n if (t === 'li') return 'listitem';\n if (t === 'table') return 'table';\n if (t === 'tr') return 'row';\n if (t === 'td') return 'cell';\n if (t === 'th') return 'columnheader';\n if (t === 'nav') return 'navigation';\n if (t === 'main') return 'main';\n if (t === 'article') return 'article';\n if (t === 'form') return 'form';\n if (t === 'header') return hasSectioningAncestor(el) ? null : 'banner';\n if (t === 'footer') return hasSectioningAncestor(el) ? null : 'contentinfo';\n return null;\n}\n// What the snapshot prints. Falls back to the tag name so an element with no\n// ARIA role is still listed and still addressable by ref.\nfunction displayRole(el) {\n return ariaRole(el) || el.tagName.toLowerCase();\n}\nfunction semanticRoot(el) {\n const root = el && el.getRootNode ? el.getRootNode() : null;\n return root && typeof root.querySelectorAll === 'function' ? root : document;\n}\nfunction elementByIdInRoot(root, id) {\n if (!id) return null;\n if (typeof root.getElementById === 'function') return root.getElementById(id);\n const nodes = root.querySelectorAll('[id]');\n for (let i = 0; i < nodes.length; i++) {\n if (nodes[i].id === id) return nodes[i];\n }\n return null;\n}\n// The <label> a user reads for a form control, independent of accName \u2014\n// By.labelText resolves against exactly this.\nfunction associatedLabel(el) {\n const t = el.tagName;\n if (t !== 'INPUT' && t !== 'TEXTAREA' && t !== 'SELECT') return null;\n if (el.labels && el.labels.length) {\n const nativeLabel = el.labels[0];\n return (nativeLabel.textContent || '').trim() || null;\n }\n if (el.id) {\n const root = semanticRoot(el);\n const labels = root.querySelectorAll('label[for]');\n for (let i = 0; i < labels.length; i++) {\n if (labels[i].getAttribute('for') === el.id) {\n return (labels[i].textContent || '').trim() || null;\n }\n }\n }\n const parentLabel = el.closest('label');\n if (parentLabel) return (parentLabel.textContent || '').trim() || null;\n return null;\n}\n// Approximates the accessible name, in the same source order By.role's name\n// predicate checks. Sources By.role cannot match must not appear here.\nfunction accName(el) {\n const aria = el.getAttribute('aria-label');\n if (aria && aria.trim()) return aria.trim();\n const labelledby = el.getAttribute('aria-labelledby');\n if (labelledby) {\n // Single id only \u2014 By.role's @aria-labelledby test is an equality match.\n const ref = elementByIdInRoot(semanticRoot(el), labelledby);\n if (ref) {\n const t = (ref.textContent || '').trim();\n if (t) return t;\n }\n }\n const label = associatedLabel(el);\n if (label) return label;\n const tag = el.tagName;\n if (tag === 'INPUT') {\n const it = (el.getAttribute('type') || 'text').toLowerCase();\n // Native buttons carry their name in value=, not in text content.\n if (it === 'submit' || it === 'button' || it === 'reset') {\n const v = el.getAttribute('value');\n if (v && v.trim()) return v.trim();\n }\n if (it === 'image') {\n const alt = el.getAttribute('alt');\n if (alt && alt.trim()) return alt.trim();\n }\n }\n if (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT') {\n const placeholder = el.getAttribute('placeholder');\n if (placeholder && placeholder.trim()) return placeholder.trim();\n }\n if (tag === 'IMG') {\n const alt = el.getAttribute('alt');\n if (alt && alt.trim()) return alt.trim();\n }\n const text = (el.textContent || '').trim().replace(/\\s+/g, ' ');\n if (text) return text;\n const title = el.getAttribute('title');\n if (title && title.trim()) return title.trim();\n return '';\n}\n";
36
+ /**
37
+ * Every role `ariaRole` can emit for a native element. The conformance test
38
+ * walks this list, so a new branch above without a `By.role` counterpart
39
+ * fails CI rather than shipping an unresolvable recommendation.
40
+ */
41
+ export declare const EMITTABLE_ROLES: readonly ["link", "button", "checkbox", "radio", "searchbox", "spinbutton", "slider", "textbox", "listbox", "combobox", "heading", "img", "list", "listitem", "table", "row", "cell", "columnheader", "navigation", "main", "article", "form", "banner", "contentinfo"];
42
+ //# sourceMappingURL=pageSemantics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageSemantics.d.ts","sourceRoot":"","sources":["../../src/lib/pageSemantics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,g3LAqJ7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,yQAyBlB,CAAC"}
@@ -0,0 +1,216 @@
1
+ /**
2
+ * Page-side role and accessible-name extraction, shared by the snapshot and
3
+ * the locator-candidate builder.
4
+ *
5
+ * These two surfaces must agree, and both must agree with `By.role` — that is
6
+ * the whole point of the module. The snapshot tells an agent an element is a
7
+ * `listbox`; the candidate builder proposes `role=listbox[name=Colors]`; and
8
+ * `By.role('listbox', { name: 'Colors' })` has to actually resolve it in the
9
+ * committed test. When those three drifted apart, the recommended locator for
10
+ * a multi-select was a brittle `text=RedBlue`.
11
+ *
12
+ * So the mapping lives here once, `src/lib/by.ts` stays the resolution
13
+ * authority, and `tests/cli/role-conformance.test.ts` pins the agreement
14
+ * against a real browser.
15
+ *
16
+ * Emitted as JS **source text**: both callers assemble a body for
17
+ * `page.evaluate`, and the build has no DOM lib. Keep it dependency-free and
18
+ * side-effect-free — it is concatenated into larger scripts.
19
+ *
20
+ * ## The ARIA role / display token split
21
+ *
22
+ * `ariaRole` returns a real ARIA role or `null`. `null` is not a failure: an
23
+ * `<input type="password">` genuinely has no ARIA role, and pretending it is a
24
+ * `textbox` produces a `role=textbox[name=Password]` that resolves to nothing.
25
+ * The snapshot falls back to `displayRole` (the tag name) so the element still
26
+ * appears, while the candidate builder proposes a role locator only when
27
+ * `ariaRole` is non-null. Honest over convenient.
28
+ */
29
+ /**
30
+ * Function declarations injected into a page-side script.
31
+ *
32
+ * Provides `firstRoleToken`, `hasSectioningAncestor`, `ariaRole`,
33
+ * `displayRole`, `associatedLabel` and `accName`.
34
+ */
35
+ export const PAGE_SEMANTICS_JS = `
36
+ function firstRoleToken(el) {
37
+ const role = (el.getAttribute('role') || '').trim();
38
+ return role ? role.split(/\\s+/)[0] : null;
39
+ }
40
+ // Mirrors HAS_SECTIONING_ANCESTOR in src/lib/by.ts: header/footer are only
41
+ // banner/contentinfo when not nested in sectioning content.
42
+ function hasSectioningAncestor(el) {
43
+ for (let p = el.parentElement; p; p = p.parentElement) {
44
+ const t = p.tagName.toLowerCase();
45
+ if (t === 'article' || t === 'aside' || t === 'main' || t === 'nav' || t === 'section') {
46
+ return true;
47
+ }
48
+ const role = firstRoleToken(p);
49
+ if (
50
+ role === 'article' ||
51
+ role === 'complementary' ||
52
+ role === 'main' ||
53
+ role === 'navigation' ||
54
+ role === 'region'
55
+ ) {
56
+ return true;
57
+ }
58
+ }
59
+ return false;
60
+ }
61
+ // The ARIA role, or null when the element has none that By.role can resolve.
62
+ // Every branch here must have a counterpart in IMPLICIT_ROLE_XPATH.
63
+ function ariaRole(el) {
64
+ const explicit = firstRoleToken(el);
65
+ if (explicit) return explicit;
66
+ const t = el.tagName.toLowerCase();
67
+ if (t === 'a' || t === 'area') return el.hasAttribute('href') ? 'link' : null;
68
+ if (t === 'button' || t === 'summary') return 'button';
69
+ if (t === 'input') {
70
+ const it = (el.getAttribute('type') || 'text').toLowerCase();
71
+ if (it === 'submit' || it === 'button' || it === 'reset' || it === 'image') return 'button';
72
+ if (it === 'checkbox') return 'checkbox';
73
+ if (it === 'radio') return 'radio';
74
+ if (it === 'search') return 'searchbox';
75
+ if (it === 'number') return 'spinbutton';
76
+ if (it === 'range') return 'slider';
77
+ if (it === 'text' || it === 'email' || it === 'tel' || it === 'url') return 'textbox';
78
+ // password, date, file, color, hidden… have no corresponding ARIA role.
79
+ return el.hasAttribute('type') ? null : 'textbox';
80
+ }
81
+ if (t === 'textarea') return 'textbox';
82
+ // multiple/size are reflected IDL attributes, so reading the properties
83
+ // stays equivalent to the attribute test By.role compiles to XPath.
84
+ if (t === 'select') return el.multiple || el.size > 1 ? 'listbox' : 'combobox';
85
+ if (/^h[1-6]$/.test(t)) return 'heading';
86
+ if (t === 'img') return 'img';
87
+ if (t === 'ul' || t === 'ol') return 'list';
88
+ if (t === 'li') return 'listitem';
89
+ if (t === 'table') return 'table';
90
+ if (t === 'tr') return 'row';
91
+ if (t === 'td') return 'cell';
92
+ if (t === 'th') return 'columnheader';
93
+ if (t === 'nav') return 'navigation';
94
+ if (t === 'main') return 'main';
95
+ if (t === 'article') return 'article';
96
+ if (t === 'form') return 'form';
97
+ if (t === 'header') return hasSectioningAncestor(el) ? null : 'banner';
98
+ if (t === 'footer') return hasSectioningAncestor(el) ? null : 'contentinfo';
99
+ return null;
100
+ }
101
+ // What the snapshot prints. Falls back to the tag name so an element with no
102
+ // ARIA role is still listed and still addressable by ref.
103
+ function displayRole(el) {
104
+ return ariaRole(el) || el.tagName.toLowerCase();
105
+ }
106
+ function semanticRoot(el) {
107
+ const root = el && el.getRootNode ? el.getRootNode() : null;
108
+ return root && typeof root.querySelectorAll === 'function' ? root : document;
109
+ }
110
+ function elementByIdInRoot(root, id) {
111
+ if (!id) return null;
112
+ if (typeof root.getElementById === 'function') return root.getElementById(id);
113
+ const nodes = root.querySelectorAll('[id]');
114
+ for (let i = 0; i < nodes.length; i++) {
115
+ if (nodes[i].id === id) return nodes[i];
116
+ }
117
+ return null;
118
+ }
119
+ // The <label> a user reads for a form control, independent of accName —
120
+ // By.labelText resolves against exactly this.
121
+ function associatedLabel(el) {
122
+ const t = el.tagName;
123
+ if (t !== 'INPUT' && t !== 'TEXTAREA' && t !== 'SELECT') return null;
124
+ if (el.labels && el.labels.length) {
125
+ const nativeLabel = el.labels[0];
126
+ return (nativeLabel.textContent || '').trim() || null;
127
+ }
128
+ if (el.id) {
129
+ const root = semanticRoot(el);
130
+ const labels = root.querySelectorAll('label[for]');
131
+ for (let i = 0; i < labels.length; i++) {
132
+ if (labels[i].getAttribute('for') === el.id) {
133
+ return (labels[i].textContent || '').trim() || null;
134
+ }
135
+ }
136
+ }
137
+ const parentLabel = el.closest('label');
138
+ if (parentLabel) return (parentLabel.textContent || '').trim() || null;
139
+ return null;
140
+ }
141
+ // Approximates the accessible name, in the same source order By.role's name
142
+ // predicate checks. Sources By.role cannot match must not appear here.
143
+ function accName(el) {
144
+ const aria = el.getAttribute('aria-label');
145
+ if (aria && aria.trim()) return aria.trim();
146
+ const labelledby = el.getAttribute('aria-labelledby');
147
+ if (labelledby) {
148
+ // Single id only — By.role's @aria-labelledby test is an equality match.
149
+ const ref = elementByIdInRoot(semanticRoot(el), labelledby);
150
+ if (ref) {
151
+ const t = (ref.textContent || '').trim();
152
+ if (t) return t;
153
+ }
154
+ }
155
+ const label = associatedLabel(el);
156
+ if (label) return label;
157
+ const tag = el.tagName;
158
+ if (tag === 'INPUT') {
159
+ const it = (el.getAttribute('type') || 'text').toLowerCase();
160
+ // Native buttons carry their name in value=, not in text content.
161
+ if (it === 'submit' || it === 'button' || it === 'reset') {
162
+ const v = el.getAttribute('value');
163
+ if (v && v.trim()) return v.trim();
164
+ }
165
+ if (it === 'image') {
166
+ const alt = el.getAttribute('alt');
167
+ if (alt && alt.trim()) return alt.trim();
168
+ }
169
+ }
170
+ if (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT') {
171
+ const placeholder = el.getAttribute('placeholder');
172
+ if (placeholder && placeholder.trim()) return placeholder.trim();
173
+ }
174
+ if (tag === 'IMG') {
175
+ const alt = el.getAttribute('alt');
176
+ if (alt && alt.trim()) return alt.trim();
177
+ }
178
+ const text = (el.textContent || '').trim().replace(/\\s+/g, ' ');
179
+ if (text) return text;
180
+ const title = el.getAttribute('title');
181
+ if (title && title.trim()) return title.trim();
182
+ return '';
183
+ }
184
+ `;
185
+ /**
186
+ * Every role `ariaRole` can emit for a native element. The conformance test
187
+ * walks this list, so a new branch above without a `By.role` counterpart
188
+ * fails CI rather than shipping an unresolvable recommendation.
189
+ */
190
+ export const EMITTABLE_ROLES = [
191
+ 'link',
192
+ 'button',
193
+ 'checkbox',
194
+ 'radio',
195
+ 'searchbox',
196
+ 'spinbutton',
197
+ 'slider',
198
+ 'textbox',
199
+ 'listbox',
200
+ 'combobox',
201
+ 'heading',
202
+ 'img',
203
+ 'list',
204
+ 'listitem',
205
+ 'table',
206
+ 'row',
207
+ 'cell',
208
+ 'columnheader',
209
+ 'navigation',
210
+ 'main',
211
+ 'article',
212
+ 'form',
213
+ 'banner',
214
+ 'contentinfo',
215
+ ];
216
+ //# sourceMappingURL=pageSemantics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageSemantics.js","sourceRoot":"","sources":["../../src/lib/pageSemantics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqJhC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM;IACN,QAAQ;IACR,UAAU;IACV,OAAO;IACP,WAAW;IACX,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,SAAS;IACT,UAAU;IACV,SAAS;IACT,KAAK;IACL,MAAM;IACN,UAAU;IACV,OAAO;IACP,KAAK;IACL,MAAM;IACN,cAAc;IACd,YAAY;IACZ,MAAM;IACN,SAAS;IACT,MAAM;IACN,QAAQ;IACR,aAAa;CACL,CAAC"}
@@ -0,0 +1,68 @@
1
+ import type { By } from './by.js';
2
+ import type { BiDiConnection } from './bidi/connection.js';
3
+ import type { Driver } from './driver.js';
4
+ import { CraftdriverError } from './errors.js';
5
+ import type { WebElement } from './webelement.js';
6
+ export type ContextSwitcher = {
7
+ in: () => Promise<void>;
8
+ out: () => Promise<void>;
9
+ };
10
+ export interface QueryBiDiContext {
11
+ connection: BiDiConnection;
12
+ contextId: string;
13
+ }
14
+ export type QueryBiDiProvider = () => QueryBiDiContext | undefined;
15
+ export type ElementTargetPlan = {
16
+ kind: 'locator';
17
+ plan: LocatorPlan;
18
+ } | {
19
+ kind: 'fixed';
20
+ element: WebElement;
21
+ };
22
+ export type SearchRootPlan = {
23
+ kind: 'document';
24
+ } | {
25
+ kind: 'element';
26
+ target: ElementTargetPlan;
27
+ } | {
28
+ kind: 'shadow';
29
+ host: ElementTargetPlan;
30
+ };
31
+ export interface LocatorPlan {
32
+ root: SearchRootPlan;
33
+ by: By;
34
+ index: number | 'last' | null;
35
+ filterText: string | RegExp | null;
36
+ filterHas: LocatorPlan | null;
37
+ }
38
+ export declare function createLocatorPlan(by: By, root?: SearchRootPlan): LocatorPlan;
39
+ export declare function cloneLocatorPlan(plan: LocatorPlan): LocatorPlan;
40
+ /** Rebase a locator used by `filter({ has })` beneath the candidate element. */
41
+ export declare function rebaseLocatorPlan(plan: LocatorPlan, base: SearchRootPlan, origin?: SearchRootPlan): LocatorPlan;
42
+ export declare function describeTarget(target: ElementTargetPlan): string;
43
+ export declare function describeRoot(root: SearchRootPlan): string;
44
+ export declare function describeBy(by: By): string;
45
+ export declare function describeLocatorPlan(plan: LocatorPlan): string;
46
+ export declare function isTerminalQueryError(error: unknown): boolean;
47
+ export declare function isDetachedShadowError(error: unknown): error is CraftdriverError;
48
+ /** Attach retry diagnostics when detachment remained the terminal outcome. */
49
+ export declare function withShadowRetryAttempts(error: unknown, attempts: number): unknown;
50
+ export declare class QueryEnvironment {
51
+ readonly driver: Driver;
52
+ private contextSwitcher?;
53
+ private bidiProvider?;
54
+ constructor(driver: Driver, options?: {
55
+ contextSwitcher?: ContextSwitcher;
56
+ bidiProvider?: QueryBiDiProvider;
57
+ });
58
+ setContextSwitcher(switcher: ContextSwitcher): void;
59
+ setBiDiProvider(provider: QueryBiDiProvider): void;
60
+ withContext<T>(operation: () => Promise<T>): Promise<T>;
61
+ resolveTarget(target: ElementTargetPlan): Promise<WebElement | null>;
62
+ resolveAll(plan: LocatorPlan): Promise<WebElement[]>;
63
+ private resolveRoot;
64
+ private openShadowRoot;
65
+ private findFromRoot;
66
+ private findSemanticFromBidiRoot;
67
+ }
68
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/lib/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAmB,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAa,MAAM,aAAa,CAAC;AAG1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,MAAM,eAAe,GAAG;IAAE,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC;AAEpF,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,cAAc,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAEnE,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,CAAC;AAE3C,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAEhD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,EAAE,EAAE,EAAE,CAAC;IACP,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACnC,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC;CAC/B;AAYD,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,EAAE,EACN,IAAI,GAAE,cAAqC,GAC1C,WAAW,CAEb;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,CAM/D;AA+ED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,cAAc,EACpB,MAAM,CAAC,EAAE,cAAc,GACtB,WAAW,CAMb;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAEhE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAIzD;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CAiBzC;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAO7D;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAU5D;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAE/E;AAED,8EAA8E;AAC9E,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOjF;AAwND,qBAAa,gBAAgB;IAKzB,QAAQ,CAAC,MAAM,EAAE,MAAM;IAJzB,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,YAAY,CAAC,CAAoB;gBAG9B,MAAM,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,eAAe,CAAC;QAAC,YAAY,CAAC,EAAE,iBAAiB,CAAA;KAAE;IAMnF,kBAAkB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAInD,eAAe,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAI5C,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAUvD,aAAa,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IA2BpE,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YA4C5C,WAAW;YAWX,cAAc;YA8Gd,YAAY;YA4EZ,wBAAwB;CAoBvC"}