craftdriver 0.1.0 → 0.2.1

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 (186) hide show
  1. package/CHANGELOG.md +111 -0
  2. package/README.md +157 -45
  3. package/bin/craftdriver.mjs +26 -0
  4. package/dist/cli/client.d.ts +17 -0
  5. package/dist/cli/client.d.ts.map +1 -0
  6. package/dist/cli/client.js +88 -0
  7. package/dist/cli/client.js.map +1 -0
  8. package/dist/cli/daemon.d.ts +15 -0
  9. package/dist/cli/daemon.d.ts.map +1 -0
  10. package/dist/cli/daemon.js +145 -0
  11. package/dist/cli/daemon.js.map +1 -0
  12. package/dist/cli/defaults.d.ts +10 -0
  13. package/dist/cli/defaults.d.ts.map +1 -0
  14. package/dist/cli/defaults.js +42 -0
  15. package/dist/cli/defaults.js.map +1 -0
  16. package/dist/cli/dispatcher.d.ts +28 -0
  17. package/dist/cli/dispatcher.d.ts.map +1 -0
  18. package/dist/cli/dispatcher.js +319 -0
  19. package/dist/cli/dispatcher.js.map +1 -0
  20. package/dist/cli/index.d.ts +2 -0
  21. package/dist/cli/index.d.ts.map +1 -0
  22. package/dist/cli/index.js +404 -0
  23. package/dist/cli/index.js.map +1 -0
  24. package/dist/cli/init.d.ts +24 -0
  25. package/dist/cli/init.d.ts.map +1 -0
  26. package/dist/cli/init.js +192 -0
  27. package/dist/cli/init.js.map +1 -0
  28. package/dist/cli/mcp/artifacts.d.ts +43 -0
  29. package/dist/cli/mcp/artifacts.d.ts.map +1 -0
  30. package/dist/cli/mcp/artifacts.js +104 -0
  31. package/dist/cli/mcp/artifacts.js.map +1 -0
  32. package/dist/cli/mcp/server.d.ts +34 -0
  33. package/dist/cli/mcp/server.d.ts.map +1 -0
  34. package/dist/cli/mcp/server.js +214 -0
  35. package/dist/cli/mcp/server.js.map +1 -0
  36. package/dist/cli/mcp/tools.d.ts +34 -0
  37. package/dist/cli/mcp/tools.d.ts.map +1 -0
  38. package/dist/cli/mcp/tools.js +236 -0
  39. package/dist/cli/mcp/tools.js.map +1 -0
  40. package/dist/cli/parseArgs.d.ts +37 -0
  41. package/dist/cli/parseArgs.d.ts.map +1 -0
  42. package/dist/cli/parseArgs.js +215 -0
  43. package/dist/cli/parseArgs.js.map +1 -0
  44. package/dist/cli/protocol.d.ts +34 -0
  45. package/dist/cli/protocol.d.ts.map +1 -0
  46. package/dist/cli/protocol.js +2 -0
  47. package/dist/cli/protocol.js.map +1 -0
  48. package/dist/cli/selector.d.ts +29 -0
  49. package/dist/cli/selector.d.ts.map +1 -0
  50. package/dist/cli/selector.js +100 -0
  51. package/dist/cli/selector.js.map +1 -0
  52. package/dist/cli/snapshot.d.ts +48 -0
  53. package/dist/cli/snapshot.d.ts.map +1 -0
  54. package/dist/cli/snapshot.js +179 -0
  55. package/dist/cli/snapshot.js.map +1 -0
  56. package/dist/index.d.ts +14 -2
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +15 -1
  59. package/dist/index.js.map +1 -1
  60. package/dist/lib/a11y.d.ts +81 -0
  61. package/dist/lib/a11y.d.ts.map +1 -0
  62. package/dist/lib/a11y.js +171 -0
  63. package/dist/lib/a11y.js.map +1 -0
  64. package/dist/lib/bidi/index.d.ts +26 -1
  65. package/dist/lib/bidi/index.d.ts.map +1 -1
  66. package/dist/lib/bidi/index.js +49 -0
  67. package/dist/lib/bidi/index.js.map +1 -1
  68. package/dist/lib/bidi/logs.d.ts +2 -2
  69. package/dist/lib/bidi/logs.d.ts.map +1 -1
  70. package/dist/lib/bidi/logs.js +2 -2
  71. package/dist/lib/bidi/logs.js.map +1 -1
  72. package/dist/lib/bidi/network.d.ts +74 -1
  73. package/dist/lib/bidi/network.d.ts.map +1 -1
  74. package/dist/lib/bidi/network.js +222 -4
  75. package/dist/lib/bidi/network.js.map +1 -1
  76. package/dist/lib/bidi/storage.d.ts +5 -3
  77. package/dist/lib/bidi/storage.d.ts.map +1 -1
  78. package/dist/lib/bidi/storage.js +14 -7
  79. package/dist/lib/bidi/storage.js.map +1 -1
  80. package/dist/lib/bidi/types.d.ts +27 -6
  81. package/dist/lib/bidi/types.d.ts.map +1 -1
  82. package/dist/lib/browser.d.ts +637 -16
  83. package/dist/lib/browser.d.ts.map +1 -1
  84. package/dist/lib/browser.js +1428 -102
  85. package/dist/lib/browser.js.map +1 -1
  86. package/dist/lib/browserContext.d.ts +486 -0
  87. package/dist/lib/browserContext.d.ts.map +1 -0
  88. package/dist/lib/browserContext.js +937 -0
  89. package/dist/lib/browserContext.js.map +1 -0
  90. package/dist/lib/builder.d.ts +3 -0
  91. package/dist/lib/builder.d.ts.map +1 -1
  92. package/dist/lib/builder.js +31 -4
  93. package/dist/lib/builder.js.map +1 -1
  94. package/dist/lib/by.d.ts +18 -2
  95. package/dist/lib/by.d.ts.map +1 -1
  96. package/dist/lib/by.js +20 -2
  97. package/dist/lib/by.js.map +1 -1
  98. package/dist/lib/chrome.d.ts +13 -1
  99. package/dist/lib/chrome.d.ts.map +1 -1
  100. package/dist/lib/chrome.js +13 -17
  101. package/dist/lib/chrome.js.map +1 -1
  102. package/dist/lib/clock.d.ts +115 -0
  103. package/dist/lib/clock.d.ts.map +1 -0
  104. package/dist/lib/clock.js +407 -0
  105. package/dist/lib/clock.js.map +1 -0
  106. package/dist/lib/driver.d.ts +43 -0
  107. package/dist/lib/driver.d.ts.map +1 -1
  108. package/dist/lib/driver.js +120 -0
  109. package/dist/lib/driver.js.map +1 -1
  110. package/dist/lib/driverManager.d.ts +25 -0
  111. package/dist/lib/driverManager.d.ts.map +1 -0
  112. package/dist/lib/driverManager.js +399 -0
  113. package/dist/lib/driverManager.js.map +1 -0
  114. package/dist/lib/elementHandle.d.ts +67 -3
  115. package/dist/lib/elementHandle.d.ts.map +1 -1
  116. package/dist/lib/elementHandle.js +209 -67
  117. package/dist/lib/elementHandle.js.map +1 -1
  118. package/dist/lib/errors.d.ts +71 -0
  119. package/dist/lib/errors.d.ts.map +1 -0
  120. package/dist/lib/errors.js +73 -0
  121. package/dist/lib/errors.js.map +1 -0
  122. package/dist/lib/expect.d.ts +6 -1
  123. package/dist/lib/expect.d.ts.map +1 -1
  124. package/dist/lib/expect.js +55 -37
  125. package/dist/lib/expect.js.map +1 -1
  126. package/dist/lib/firefox.d.ts +18 -0
  127. package/dist/lib/firefox.d.ts.map +1 -0
  128. package/dist/lib/firefox.js +33 -0
  129. package/dist/lib/firefox.js.map +1 -0
  130. package/dist/lib/frame.d.ts +57 -0
  131. package/dist/lib/frame.d.ts.map +1 -0
  132. package/dist/lib/frame.js +277 -0
  133. package/dist/lib/frame.js.map +1 -0
  134. package/dist/lib/keyboard.d.ts +1 -1
  135. package/dist/lib/keyboard.d.ts.map +1 -1
  136. package/dist/lib/keyboard.js +1 -1
  137. package/dist/lib/keyboard.js.map +1 -1
  138. package/dist/lib/locator.d.ts +71 -2
  139. package/dist/lib/locator.d.ts.map +1 -1
  140. package/dist/lib/locator.js +289 -31
  141. package/dist/lib/locator.js.map +1 -1
  142. package/dist/lib/mouse.d.ts +1 -1
  143. package/dist/lib/mouse.d.ts.map +1 -1
  144. package/dist/lib/mouse.js +1 -1
  145. package/dist/lib/mouse.js.map +1 -1
  146. package/dist/lib/page.d.ts +107 -0
  147. package/dist/lib/page.d.ts.map +1 -0
  148. package/dist/lib/page.js +388 -0
  149. package/dist/lib/page.js.map +1 -0
  150. package/dist/lib/tracing.d.ts +128 -0
  151. package/dist/lib/tracing.d.ts.map +1 -0
  152. package/dist/lib/tracing.js +272 -0
  153. package/dist/lib/tracing.js.map +1 -0
  154. package/dist/lib/wait.d.ts.map +1 -1
  155. package/dist/lib/wait.js +14 -1
  156. package/dist/lib/wait.js.map +1 -1
  157. package/dist/lib/webelement.d.ts +2 -0
  158. package/dist/lib/webelement.d.ts.map +1 -1
  159. package/dist/lib/webelement.js +18 -0
  160. package/dist/lib/webelement.js.map +1 -1
  161. package/docs/accessibility.md +177 -0
  162. package/docs/api-reference.md +71 -0
  163. package/docs/assertions.md +182 -0
  164. package/docs/bidi-features.md +462 -0
  165. package/docs/browser-api.md +673 -0
  166. package/docs/browser-context.md +522 -0
  167. package/docs/cli.md +233 -0
  168. package/docs/clock.md +245 -0
  169. package/docs/dialogs.md +143 -0
  170. package/docs/driver-configuration.md +64 -0
  171. package/docs/element-api.md +219 -0
  172. package/docs/emulation.md +155 -0
  173. package/docs/error-codes.md +67 -0
  174. package/docs/getting-started.md +168 -0
  175. package/docs/keyboard-mouse.md +250 -0
  176. package/docs/mcp.md +250 -0
  177. package/docs/mobile-emulation.md +194 -0
  178. package/docs/screenshots.md +146 -0
  179. package/docs/selectors.md +382 -0
  180. package/docs/session-management.md +229 -0
  181. package/docs/tracing.md +282 -0
  182. package/package.json +26 -8
  183. package/skills/craftdriver/SKILL.md +84 -0
  184. package/skills/craftdriver/cheatsheet.md +194 -0
  185. package/skills/craftdriver/cli.md +104 -0
  186. package/skills/craftdriver/patterns.md +139 -0
@@ -0,0 +1,277 @@
1
+ /**
2
+ * Frame — represents a nested browsing context (iframe).
3
+ *
4
+ * Obtain via `browser.frame(selector)` or `browser.frames()`.
5
+ * All element methods (click, fill, find, locator, expect, evaluate, waitForLoadState)
6
+ * are automatically scoped to the iframe's browsing context.
7
+ *
8
+ * BiDi path: actions target the child browsing context directly via context id.
9
+ * Classic fallback: switchToFrame → action → switchToFrame(null).
10
+ */
11
+ import { By } from './by.js';
12
+ import { ElementHandle } from './elementHandle.js';
13
+ import { Locator } from './locator.js';
14
+ import { expectSelector } from './expect.js';
15
+ import { until } from './wait.js';
16
+ export class Frame {
17
+ frameElementId;
18
+ driver;
19
+ getDefaultTimeout;
20
+ contextSwitcher;
21
+ /**
22
+ * BiDi context id of the iframe (only set in BiDi mode).
23
+ * Used for evaluate / waitForLoadState.
24
+ */
25
+ bidiContextId;
26
+ conn;
27
+ constructor(driver, frameElementId, getDefaultTimeout, opts) {
28
+ this.frameElementId = frameElementId;
29
+ this.driver = driver;
30
+ this.getDefaultTimeout = getDefaultTimeout;
31
+ this.bidiContextId = opts?.bidiContextId;
32
+ this.conn = opts?.conn;
33
+ this.contextSwitcher = {
34
+ in: async () => {
35
+ await this.driver.switchToFrame({ elementId: this.frameElementId });
36
+ },
37
+ out: async () => {
38
+ await this.driver.switchToFrame(null);
39
+ },
40
+ };
41
+ }
42
+ // ── Element methods ──────────────────────────────────────────────────────
43
+ find(selector) {
44
+ const by = typeof selector === 'string' ? By.css(selector) : selector;
45
+ return new ElementHandle(this.driver, by, this.getDefaultTimeout)
46
+ .withContext(this.contextSwitcher);
47
+ }
48
+ locator(selector) {
49
+ const by = typeof selector === 'string' ? By.css(selector) : selector;
50
+ return new Locator(this.driver, by, this.getDefaultTimeout)
51
+ .withContext(this.contextSwitcher);
52
+ }
53
+ expect(selector) {
54
+ const by = typeof selector === 'string' ? By.css(selector) : selector;
55
+ return expectSelector(this.driver, by, this.getDefaultTimeout, this.contextSwitcher);
56
+ }
57
+ async findAll(selector) {
58
+ const by = typeof selector === 'string' ? By.css(selector) : selector;
59
+ await this.contextSwitcher.in();
60
+ let webElements;
61
+ try {
62
+ webElements = await this.driver.findElements(by);
63
+ }
64
+ finally {
65
+ await this.contextSwitcher.out();
66
+ }
67
+ return webElements.map((we) => ElementHandle.fromWebElement(this.driver, we, this.getDefaultTimeout));
68
+ }
69
+ async click(selector, opts) {
70
+ const by = typeof selector === 'string' ? By.css(selector) : selector;
71
+ await this.contextSwitcher.in();
72
+ try {
73
+ const el = await this.driver.wait(until.elementIsVisible(by), {
74
+ timeout: opts?.timeout ?? this.getDefaultTimeout(),
75
+ });
76
+ await el.click();
77
+ }
78
+ finally {
79
+ await this.contextSwitcher.out();
80
+ }
81
+ }
82
+ async fill(selector, text, opts) {
83
+ const by = typeof selector === 'string' ? By.css(selector) : selector;
84
+ await this.contextSwitcher.in();
85
+ try {
86
+ const el = await this.driver.wait(until.elementIsVisible(by), {
87
+ timeout: opts?.timeout ?? this.getDefaultTimeout(),
88
+ });
89
+ await el.click();
90
+ await el.clear();
91
+ await el.sendKeys(text);
92
+ }
93
+ finally {
94
+ await this.contextSwitcher.out();
95
+ }
96
+ }
97
+ async getValue(selector, opts) {
98
+ const by = typeof selector === 'string' ? By.css(selector) : selector;
99
+ await this.contextSwitcher.in();
100
+ try {
101
+ const el = await this.driver.wait(until.elementLocated(by), {
102
+ timeout: opts?.timeout ?? this.getDefaultTimeout(),
103
+ });
104
+ const val = await el.getProperty('value');
105
+ return String(val ?? '');
106
+ }
107
+ finally {
108
+ await this.contextSwitcher.out();
109
+ }
110
+ }
111
+ async getAttribute(selector, name, opts) {
112
+ const by = typeof selector === 'string' ? By.css(selector) : selector;
113
+ await this.contextSwitcher.in();
114
+ try {
115
+ const el = await this.driver.wait(until.elementLocated(by), {
116
+ timeout: opts?.timeout ?? this.getDefaultTimeout(),
117
+ });
118
+ return await el.getAttribute(name);
119
+ }
120
+ finally {
121
+ await this.contextSwitcher.out();
122
+ }
123
+ }
124
+ // ── Evaluate ─────────────────────────────────────────────────────────────
125
+ async evaluate(fn, ...args) {
126
+ const fnSrc = typeof fn === 'function' ? fn.toString() : fn;
127
+ if (this.conn && this.bidiContextId) {
128
+ const target = { context: this.bidiContextId };
129
+ let result;
130
+ if (typeof fn === 'function') {
131
+ result = await this.conn.send('script.callFunction', {
132
+ functionDeclaration: fnSrc,
133
+ target,
134
+ arguments: args.map(serializeLocalValue),
135
+ awaitPromise: true,
136
+ });
137
+ }
138
+ else {
139
+ result = await this.conn.send('script.callFunction', {
140
+ functionDeclaration: `function() { ${fnSrc} }`,
141
+ target,
142
+ arguments: [],
143
+ awaitPromise: true,
144
+ });
145
+ }
146
+ if (result.type === 'exception') {
147
+ throw new Error(`evaluate() threw an exception in the frame: ${result.exceptionDetails?.text ?? 'unknown error'}`);
148
+ }
149
+ if (!result.result)
150
+ return undefined;
151
+ return unwrapRemoteValue(result.result);
152
+ }
153
+ // Classic fallback: switch to frame, execute, switch back
154
+ await this.contextSwitcher.in();
155
+ try {
156
+ if (typeof fn === 'function') {
157
+ return await this.driver.executeScript(`return (${fnSrc}).apply(null, Array.from(arguments))`, args);
158
+ }
159
+ return await this.driver.executeScript(fn, args);
160
+ }
161
+ finally {
162
+ await this.contextSwitcher.out();
163
+ }
164
+ }
165
+ // ── waitForLoadState ──────────────────────────────────────────────────────
166
+ async waitForLoadState(state = 'load', opts) {
167
+ const timeout = opts?.timeout ?? 30000;
168
+ if (this.conn && this.bidiContextId) {
169
+ const ctxId = this.bidiContextId;
170
+ const readyState = await this.evaluate('return document.readyState');
171
+ const satisfied = state === 'load'
172
+ ? readyState === 'complete'
173
+ : readyState === 'interactive' || readyState === 'complete';
174
+ if (satisfied)
175
+ return;
176
+ const eventName = state === 'load' ? 'browsingContext.load' : 'browsingContext.domContentLoaded';
177
+ return new Promise((resolve, reject) => {
178
+ const timer = setTimeout(() => {
179
+ off();
180
+ reject(new Error(`frame.waitForLoadState('${state}') timed out after ${timeout}ms`));
181
+ }, timeout);
182
+ const off = this.conn.on(eventName, (params) => {
183
+ if (params.context === ctxId) {
184
+ clearTimeout(timer);
185
+ off();
186
+ resolve();
187
+ }
188
+ });
189
+ });
190
+ }
191
+ // Classic fallback: poll readyState inside the frame
192
+ await this.contextSwitcher.in();
193
+ const deadline = Date.now() + timeout;
194
+ try {
195
+ while (Date.now() < deadline) {
196
+ const readyState = await this.driver.executeScript('return document.readyState', []);
197
+ if (readyState === 'complete' || (state === 'domcontentloaded' && readyState === 'interactive')) {
198
+ return;
199
+ }
200
+ await new Promise(r => setTimeout(r, 100));
201
+ }
202
+ throw new Error(`frame.waitForLoadState('${state}') timed out after ${timeout}ms`);
203
+ }
204
+ finally {
205
+ await this.contextSwitcher.out();
206
+ }
207
+ }
208
+ // ── URL / title ───────────────────────────────────────────────────────────
209
+ async url() {
210
+ return this.evaluate('return location.href');
211
+ }
212
+ async title() {
213
+ return this.evaluate('return document.title');
214
+ }
215
+ }
216
+ // ── BiDi serialization helpers (copied from browser.ts to avoid circular imports) ──
217
+ function serializeLocalValue(v) {
218
+ if (v === undefined)
219
+ return { type: 'undefined' };
220
+ if (v === null)
221
+ return { type: 'null' };
222
+ if (typeof v === 'string')
223
+ return { type: 'string', value: v };
224
+ if (typeof v === 'boolean')
225
+ return { type: 'boolean', value: v };
226
+ if (typeof v === 'bigint')
227
+ return { type: 'bigint', value: String(v) };
228
+ if (typeof v === 'number') {
229
+ if (Number.isNaN(v))
230
+ return { type: 'number', value: 'NaN' };
231
+ if (v === Infinity)
232
+ return { type: 'number', value: 'Infinity' };
233
+ if (v === -Infinity)
234
+ return { type: 'number', value: '-Infinity' };
235
+ if (Object.is(v, -0))
236
+ return { type: 'number', value: '-0' };
237
+ return { type: 'number', value: v };
238
+ }
239
+ if (Array.isArray(v))
240
+ return { type: 'array', value: v.map(serializeLocalValue) };
241
+ if (typeof v === 'object') {
242
+ return {
243
+ type: 'object',
244
+ value: Object.entries(v).map(([k, val]) => [k, serializeLocalValue(val)]),
245
+ };
246
+ }
247
+ throw new Error(`evaluate() argument of type "${typeof v}" is not JSON-serializable.`);
248
+ }
249
+ function unwrapRemoteValue(v) {
250
+ switch (v.type) {
251
+ case 'undefined': return undefined;
252
+ case 'null': return null;
253
+ case 'string': return v.value;
254
+ case 'boolean': return v.value;
255
+ case 'bigint': return BigInt(v.value);
256
+ case 'number': {
257
+ if (v.value === 'NaN')
258
+ return NaN;
259
+ if (v.value === 'Infinity')
260
+ return Infinity;
261
+ if (v.value === '-Infinity')
262
+ return -Infinity;
263
+ if (v.value === '-0')
264
+ return -0;
265
+ return v.value;
266
+ }
267
+ case 'array': return (v.value ?? []).map(unwrapRemoteValue);
268
+ case 'object':
269
+ return Object.fromEntries((v.value ?? []).map(([k, val]) => [
270
+ typeof k === 'string' ? k : String(unwrapRemoteValue(k)),
271
+ unwrapRemoteValue(val),
272
+ ]));
273
+ case 'date': return new Date(v.value);
274
+ default: return null;
275
+ }
276
+ }
277
+ //# sourceMappingURL=frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame.js","sourceRoot":"","sources":["../../src/lib/frame.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { Driver } from './driver.js';
2
2
  import { type KeyValue } from './keys.js';
3
- export declare class KeyboardController {
3
+ export declare class Keyboard {
4
4
  private driver;
5
5
  constructor(driver: Driver);
6
6
  type(text: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../../src/lib/keyboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEvD,qBAAa,kBAAkB;IACjB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAE5B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/D,IAAI,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlC,EAAE,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhC,KAAK,CAAC,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAKhD"}
1
+ {"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../../src/lib/keyboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEvD,qBAAa,QAAQ;IACP,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAE5B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/D,IAAI,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlC,EAAE,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhC,KAAK,CAAC,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAKhD"}
@@ -1,5 +1,5 @@
1
1
  import { getKeyValue } from './keys.js';
2
- export class KeyboardController {
2
+ export class Keyboard {
3
3
  driver;
4
4
  constructor(driver) {
5
5
  this.driver = driver;
@@ -1 +1 @@
1
- {"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../../src/lib/keyboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAiB,MAAM,WAAW,CAAC;AAEvD,MAAM,OAAO,kBAAkB;IACT;IAApB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAEtC,KAAK,CAAC,IAAI,CAAC,IAAY;QACrB,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAa,EAAE,IAA0B;QACnD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAa;QACtB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,EAAE,CAAC,GAAa;QACpB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,iFAAiF;IACjF,KAAK,CAAC,KAAK,CAAC,GAAG,IAAgB;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACxD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE;YAAE,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;CACF"}
1
+ {"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../../src/lib/keyboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAiB,MAAM,WAAW,CAAC;AAEvD,MAAM,OAAO,QAAQ;IACC;IAApB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAI,CAAC;IAEvC,KAAK,CAAC,IAAI,CAAC,IAAY;QACrB,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAa,EAAE,IAA0B;QACnD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAa;QACtB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,EAAE,CAAC,GAAa;QACpB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,iFAAiF;IACjF,KAAK,CAAC,KAAK,CAAC,GAAG,IAAgB;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACxD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE;YAAE,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;CACF"}
@@ -1,20 +1,89 @@
1
1
  import { By } from './by.js';
2
2
  import type { Driver } from './driver.js';
3
+ import { ElementHandle, type ContextSwitcher } from './elementHandle.js';
4
+ import type { ExpectApi } from './expect.js';
5
+ import { A11y } from './a11y.js';
3
6
  export interface ActionOptions {
4
7
  timeout?: number;
5
8
  }
6
9
  export declare class Locator {
7
10
  private driver;
8
11
  private by;
9
- constructor(driver: Driver, by: By);
12
+ private getDefaultTimeout;
13
+ private _index;
14
+ private _filterText;
15
+ private _filterHas;
16
+ private _parent;
17
+ private _contextSwitcher?;
18
+ constructor(driver: Driver, by: By, getDefaultTimeout?: () => number);
19
+ /** Bind this locator to a browsing context (iframe/tab) for frame-scoped element resolution. */
20
+ withContext(switcher: ContextSwitcher): this;
21
+ private _withContext;
22
+ /** Return a new child Locator whose search is scoped within this locator's first match. */
10
23
  locator(selector: string | By): Locator;
24
+ /** Return a new Locator targeting the element at position `index` (0-based). */
25
+ nth(index: number): Locator;
26
+ /** Return a new Locator targeting the first match. */
27
+ first(): Locator;
28
+ /** Return a new Locator targeting the last match. */
29
+ last(): Locator;
30
+ /** Return a new Locator that narrows matches by text or child-locator presence. */
31
+ filter(opts: {
32
+ hasText?: string | RegExp;
33
+ has?: Locator;
34
+ }): Locator;
35
+ private _clone;
36
+ /** Resolve all raw WebElements for this.by, scoped to the parent if set. */
37
+ private _findRaw;
38
+ /** Apply text / has filters to the raw result set. */
39
+ private _findFiltered;
40
+ /** Apply index on top of the filtered result set. */
41
+ private _findFinal;
42
+ /** Poll until a visible element is available in the final result set. */
43
+ private _waitForVisible;
44
+ /** Poll until any element is present in the final result set (need not be visible). */
45
+ private _waitForAny;
46
+ private _resolve;
47
+ private _resolveExisting;
48
+ /**
49
+ * Resolve to a visible element WITHOUT applying context switching (used inside _withContext blocks).
50
+ * The caller is responsible for switching context before calling this.
51
+ */
52
+ private _waitForVisibleOrSimple;
53
+ /**
54
+ * Resolve to an existing element WITHOUT applying context switching (used inside _withContext blocks).
55
+ * The caller is responsible for switching context before calling this.
56
+ */
57
+ private _waitForAnyOrSimple;
11
58
  click(options?: ActionOptions): Promise<void>;
12
59
  fill(text: string, options?: ActionOptions): Promise<void>;
60
+ text(options?: ActionOptions): Promise<string>;
61
+ /** Alias for text(). */
13
62
  textContent(options?: ActionOptions): Promise<string>;
14
63
  isVisible(options?: ActionOptions): Promise<boolean>;
64
+ /**
65
+ * Returns the number of currently matching elements in the DOM (no auto-wait).
66
+ * Use `waitFor` if you need to wait for a specific count.
67
+ */
68
+ count(): Promise<number>;
69
+ /**
70
+ * Returns snapshot `ElementHandle`s for all currently matching elements.
71
+ * Each handle is bound to the element resolved at call time.
72
+ */
73
+ all(): Promise<ElementHandle[]>;
15
74
  waitFor(options: {
16
75
  state: 'attached' | 'detached' | 'visible' | 'hidden';
17
76
  timeout?: number;
18
- }): Promise<any>;
77
+ }): Promise<unknown>;
78
+ /** Poll until the element is detached from DOM (`detached`) or no longer visible (`hidden`). */
79
+ private _waitForNegativeState;
80
+ /** Returns an assertion API scoped to this locator's selector. */
81
+ expect(): ExpectApi;
82
+ private _a11y?;
83
+ /**
84
+ * Accessibility audit scoped to the resolved element. Re-resolves the
85
+ * locator on every audit/check call.
86
+ */
87
+ get a11y(): A11y;
19
88
  }
20
89
  //# sourceMappingURL=locator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"locator.d.ts","sourceRoot":"","sources":["../../src/lib/locator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,OAAO;IAEhB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,EAAE;gBADF,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,EAAE;IAGhB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,EAAE,GAAG,OAAO;IAKjC,KAAK,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9D,WAAW,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAOzD,SAAS,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAW9D,OAAO,CAAC,OAAO,EAAE;QACf,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;QACtD,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,GAAG,CAAC;CASjB"}
1
+ {"version":3,"file":"locator.d.ts","sourceRoot":"","sources":["../../src/lib/locator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,OAAO;IAQhB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,iBAAiB;IAT3B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,gBAAgB,CAAC,CAAkB;gBAGjC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,EAAE,EACN,iBAAiB,GAAE,MAAM,MAAmB;IAGtD,gGAAgG;IAChG,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;YAK9B,YAAY;IAY1B,2FAA2F;IAC3F,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,EAAE,GAAG,OAAO;IAOvC,gFAAgF;IAChF,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAM3B,sDAAsD;IACtD,KAAK,IAAI,OAAO;IAIhB,qDAAqD;IACrD,IAAI,IAAI,OAAO;IAMf,mFAAmF;IACnF,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO;IAOnE,OAAO,CAAC,MAAM;IAUd,4EAA4E;YAC9D,QAAQ;IAStB,sDAAsD;YACxC,aAAa;IAyB3B,qDAAqD;YACvC,UAAU;IAQxB,yEAAyE;YAC3D,eAAe;IAuC7B,uFAAuF;YACzE,WAAW;YAwBX,QAAQ;YAKR,gBAAgB;IAK9B;;;OAGG;YACW,uBAAuB;IAIrC;;;OAGG;YACW,mBAAmB;IAI3B,KAAK,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7C,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1D,IAAI,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAOpD,wBAAwB;IAClB,WAAW,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrD,SAAS,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAY1D;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAO9B;;;OAGG;IACG,GAAG,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAOrC,OAAO,CAAC,OAAO,EAAE;QACf,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;QACtD,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBpB,gGAAgG;YAClF,qBAAqB;IA2BnC,kEAAkE;IAClE,MAAM,IAAI,SAAS;IAInB,OAAO,CAAC,KAAK,CAAC,CAAO;IACrB;;;OAGG;IACH,IAAI,IAAI,IAAI,IAAI,CASf;CACF"}