craftdriver 0.0.3 → 0.2.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 (192) hide show
  1. package/CHANGELOG.md +104 -0
  2. package/README.md +186 -10
  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 -1
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +17 -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/connection.d.ts +62 -0
  65. package/dist/lib/bidi/connection.d.ts.map +1 -0
  66. package/dist/lib/bidi/connection.js +227 -0
  67. package/dist/lib/bidi/connection.js.map +1 -0
  68. package/dist/lib/bidi/index.d.ts +101 -0
  69. package/dist/lib/bidi/index.d.ts.map +1 -0
  70. package/dist/lib/bidi/index.js +163 -0
  71. package/dist/lib/bidi/index.js.map +1 -0
  72. package/dist/lib/bidi/logs.d.ts +104 -0
  73. package/dist/lib/bidi/logs.d.ts.map +1 -0
  74. package/dist/lib/bidi/logs.js +273 -0
  75. package/dist/lib/bidi/logs.js.map +1 -0
  76. package/dist/lib/bidi/network.d.ts +165 -0
  77. package/dist/lib/bidi/network.d.ts.map +1 -0
  78. package/dist/lib/bidi/network.js +477 -0
  79. package/dist/lib/bidi/network.js.map +1 -0
  80. package/dist/lib/bidi/storage.d.ts +83 -0
  81. package/dist/lib/bidi/storage.d.ts.map +1 -0
  82. package/dist/lib/bidi/storage.js +299 -0
  83. package/dist/lib/bidi/storage.js.map +1 -0
  84. package/dist/lib/bidi/types.d.ts +323 -0
  85. package/dist/lib/bidi/types.d.ts.map +1 -0
  86. package/dist/lib/bidi/types.js +6 -0
  87. package/dist/lib/bidi/types.js.map +1 -0
  88. package/dist/lib/browser.d.ts +776 -13
  89. package/dist/lib/browser.d.ts.map +1 -1
  90. package/dist/lib/browser.js +1547 -70
  91. package/dist/lib/browser.js.map +1 -1
  92. package/dist/lib/browserContext.d.ts +486 -0
  93. package/dist/lib/browserContext.d.ts.map +1 -0
  94. package/dist/lib/browserContext.js +937 -0
  95. package/dist/lib/browserContext.js.map +1 -0
  96. package/dist/lib/builder.d.ts +3 -0
  97. package/dist/lib/builder.d.ts.map +1 -1
  98. package/dist/lib/builder.js +31 -4
  99. package/dist/lib/builder.js.map +1 -1
  100. package/dist/lib/by.d.ts +18 -2
  101. package/dist/lib/by.d.ts.map +1 -1
  102. package/dist/lib/by.js +20 -2
  103. package/dist/lib/by.js.map +1 -1
  104. package/dist/lib/chrome.d.ts +13 -1
  105. package/dist/lib/chrome.d.ts.map +1 -1
  106. package/dist/lib/chrome.js +13 -17
  107. package/dist/lib/chrome.js.map +1 -1
  108. package/dist/lib/clock.d.ts +115 -0
  109. package/dist/lib/clock.d.ts.map +1 -0
  110. package/dist/lib/clock.js +407 -0
  111. package/dist/lib/clock.js.map +1 -0
  112. package/dist/lib/driver.d.ts +45 -0
  113. package/dist/lib/driver.d.ts.map +1 -1
  114. package/dist/lib/driver.js +129 -1
  115. package/dist/lib/driver.js.map +1 -1
  116. package/dist/lib/driverManager.d.ts +25 -0
  117. package/dist/lib/driverManager.d.ts.map +1 -0
  118. package/dist/lib/driverManager.js +399 -0
  119. package/dist/lib/driverManager.js.map +1 -0
  120. package/dist/lib/elementHandle.d.ts +69 -2
  121. package/dist/lib/elementHandle.d.ts.map +1 -1
  122. package/dist/lib/elementHandle.js +215 -40
  123. package/dist/lib/elementHandle.js.map +1 -1
  124. package/dist/lib/errors.d.ts +71 -0
  125. package/dist/lib/errors.d.ts.map +1 -0
  126. package/dist/lib/errors.js +73 -0
  127. package/dist/lib/errors.js.map +1 -0
  128. package/dist/lib/expect.d.ts +6 -1
  129. package/dist/lib/expect.d.ts.map +1 -1
  130. package/dist/lib/expect.js +55 -37
  131. package/dist/lib/expect.js.map +1 -1
  132. package/dist/lib/firefox.d.ts +18 -0
  133. package/dist/lib/firefox.d.ts.map +1 -0
  134. package/dist/lib/firefox.js +33 -0
  135. package/dist/lib/firefox.js.map +1 -0
  136. package/dist/lib/frame.d.ts +57 -0
  137. package/dist/lib/frame.d.ts.map +1 -0
  138. package/dist/lib/frame.js +277 -0
  139. package/dist/lib/frame.js.map +1 -0
  140. package/dist/lib/keyboard.d.ts +1 -1
  141. package/dist/lib/keyboard.d.ts.map +1 -1
  142. package/dist/lib/keyboard.js +1 -1
  143. package/dist/lib/keyboard.js.map +1 -1
  144. package/dist/lib/locator.d.ts +71 -2
  145. package/dist/lib/locator.d.ts.map +1 -1
  146. package/dist/lib/locator.js +289 -31
  147. package/dist/lib/locator.js.map +1 -1
  148. package/dist/lib/mouse.d.ts +1 -1
  149. package/dist/lib/mouse.d.ts.map +1 -1
  150. package/dist/lib/mouse.js +1 -1
  151. package/dist/lib/mouse.js.map +1 -1
  152. package/dist/lib/page.d.ts +107 -0
  153. package/dist/lib/page.d.ts.map +1 -0
  154. package/dist/lib/page.js +388 -0
  155. package/dist/lib/page.js.map +1 -0
  156. package/dist/lib/tracing.d.ts +128 -0
  157. package/dist/lib/tracing.d.ts.map +1 -0
  158. package/dist/lib/tracing.js +272 -0
  159. package/dist/lib/tracing.js.map +1 -0
  160. package/dist/lib/wait.d.ts.map +1 -1
  161. package/dist/lib/wait.js +14 -1
  162. package/dist/lib/wait.js.map +1 -1
  163. package/dist/lib/webelement.d.ts +2 -0
  164. package/dist/lib/webelement.d.ts.map +1 -1
  165. package/dist/lib/webelement.js +18 -0
  166. package/dist/lib/webelement.js.map +1 -1
  167. package/docs/accessibility.md +177 -0
  168. package/docs/api-reference.md +71 -0
  169. package/docs/assertions.md +182 -0
  170. package/docs/bidi-features.md +462 -0
  171. package/docs/browser-api.md +673 -0
  172. package/docs/browser-context.md +522 -0
  173. package/docs/cli.md +233 -0
  174. package/docs/clock.md +245 -0
  175. package/docs/dialogs.md +143 -0
  176. package/docs/driver-configuration.md +64 -0
  177. package/docs/element-api.md +219 -0
  178. package/docs/emulation.md +155 -0
  179. package/docs/error-codes.md +67 -0
  180. package/docs/getting-started.md +168 -0
  181. package/docs/keyboard-mouse.md +250 -0
  182. package/docs/mcp.md +250 -0
  183. package/docs/mobile-emulation.md +194 -0
  184. package/docs/screenshots.md +146 -0
  185. package/docs/selectors.md +382 -0
  186. package/docs/session-management.md +229 -0
  187. package/docs/tracing.md +282 -0
  188. package/package.json +25 -5
  189. package/skills/craftdriver/SKILL.md +84 -0
  190. package/skills/craftdriver/cheatsheet.md +194 -0
  191. package/skills/craftdriver/cli.md +104 -0
  192. package/skills/craftdriver/patterns.md +139 -0
@@ -0,0 +1,104 @@
1
+ /**
2
+ * BiDi Log Monitor
3
+ * Real-time console and JavaScript error monitoring
4
+ */
5
+ import type { BiDiConnection } from './connection.js';
6
+ import type { BrowsingContext, LogLevel } from './types.js';
7
+ export interface ConsoleMessage {
8
+ type: 'console';
9
+ level: LogLevel;
10
+ text: string;
11
+ timestamp: Date;
12
+ method: string;
13
+ args: unknown[];
14
+ stackTrace?: StackFrame[];
15
+ context?: BrowsingContext;
16
+ }
17
+ export interface JavaScriptError {
18
+ type: 'javascript';
19
+ level: 'error';
20
+ text: string;
21
+ timestamp: Date;
22
+ stackTrace?: StackFrame[];
23
+ context?: BrowsingContext;
24
+ }
25
+ export interface StackFrame {
26
+ functionName: string;
27
+ url: string;
28
+ lineNumber: number;
29
+ columnNumber: number;
30
+ }
31
+ export type LogMessage = ConsoleMessage | JavaScriptError;
32
+ export type LogHandler = (message: LogMessage) => void;
33
+ export type ConsoleHandler = (message: ConsoleMessage) => void;
34
+ export type ErrorHandler = (error: JavaScriptError) => void;
35
+ export declare class LogMonitor {
36
+ private connection;
37
+ private subscribed;
38
+ private context?;
39
+ private allHandlers;
40
+ private levelHandlers;
41
+ private consoleHandlers;
42
+ private errorHandlers;
43
+ private logs;
44
+ private maxLogs;
45
+ constructor(connection: BiDiConnection, context?: BrowsingContext);
46
+ /**
47
+ * Initialize log event subscriptions
48
+ */
49
+ initialize(): Promise<void>;
50
+ /**
51
+ * Listen to all log messages
52
+ */
53
+ onLog(handler: LogHandler): () => void;
54
+ /**
55
+ * Listen to console messages only
56
+ */
57
+ onConsole(handler: ConsoleHandler): () => void;
58
+ /**
59
+ * Listen to JavaScript errors only
60
+ */
61
+ onError(handler: ErrorHandler): () => void;
62
+ /**
63
+ * Listen to specific log levels
64
+ */
65
+ on(level: LogLevel, handler: LogHandler): () => void;
66
+ /**
67
+ * Get all captured logs
68
+ */
69
+ getLogs(): LogMessage[];
70
+ /**
71
+ * Get logs filtered by level
72
+ */
73
+ getLogsByLevel(level: LogLevel): LogMessage[];
74
+ /**
75
+ * Get all captured console messages.
76
+ */
77
+ getMessages(): ConsoleMessage[];
78
+ /**
79
+ * Get all JavaScript errors
80
+ */
81
+ getErrors(): JavaScriptError[];
82
+ /**
83
+ * Clear captured logs
84
+ */
85
+ clearLogs(): void;
86
+ /**
87
+ * Wait for a console message matching predicate
88
+ */
89
+ waitForConsole(predicate: (msg: ConsoleMessage) => boolean, timeout?: number): Promise<ConsoleMessage>;
90
+ /**
91
+ * Wait for a JavaScript error
92
+ */
93
+ waitForError(predicate?: (err: JavaScriptError) => boolean, timeout?: number): Promise<JavaScriptError>;
94
+ /**
95
+ * Assert no JavaScript errors occurred
96
+ */
97
+ assertNoErrors(): void;
98
+ private handleLogEntry;
99
+ private convertLogEntry;
100
+ private convertStackTrace;
101
+ private deserializeValue;
102
+ private notifyHandlers;
103
+ }
104
+ //# sourceMappingURL=logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/lib/bidi/logs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,273 @@
1
+ /**
2
+ * BiDi Log Monitor
3
+ * Real-time console and JavaScript error monitoring
4
+ */
5
+ export class LogMonitor {
6
+ connection;
7
+ subscribed = false;
8
+ context;
9
+ allHandlers = new Set();
10
+ levelHandlers = new Map();
11
+ consoleHandlers = new Set();
12
+ errorHandlers = new Set();
13
+ logs = [];
14
+ maxLogs = 1000;
15
+ constructor(connection, context) {
16
+ this.connection = connection;
17
+ this.context = context;
18
+ }
19
+ /**
20
+ * Initialize log event subscriptions
21
+ */
22
+ async initialize() {
23
+ if (this.subscribed)
24
+ return;
25
+ await this.connection.subscribe(['log.entryAdded'], this.context ? [this.context] : undefined);
26
+ this.connection.on('log.entryAdded', (params) => {
27
+ this.handleLogEntry(params);
28
+ });
29
+ this.subscribed = true;
30
+ }
31
+ /**
32
+ * Listen to all log messages
33
+ */
34
+ onLog(handler) {
35
+ this.allHandlers.add(handler);
36
+ return () => this.allHandlers.delete(handler);
37
+ }
38
+ /**
39
+ * Listen to console messages only
40
+ */
41
+ onConsole(handler) {
42
+ this.consoleHandlers.add(handler);
43
+ return () => this.consoleHandlers.delete(handler);
44
+ }
45
+ /**
46
+ * Listen to JavaScript errors only
47
+ */
48
+ onError(handler) {
49
+ this.errorHandlers.add(handler);
50
+ return () => this.errorHandlers.delete(handler);
51
+ }
52
+ /**
53
+ * Listen to specific log levels
54
+ */
55
+ on(level, handler) {
56
+ if (!this.levelHandlers.has(level)) {
57
+ this.levelHandlers.set(level, new Set());
58
+ }
59
+ this.levelHandlers.get(level).add(handler);
60
+ return () => this.levelHandlers.get(level)?.delete(handler);
61
+ }
62
+ /**
63
+ * Get all captured logs
64
+ */
65
+ getLogs() {
66
+ return [...this.logs];
67
+ }
68
+ /**
69
+ * Get logs filtered by level
70
+ */
71
+ getLogsByLevel(level) {
72
+ return this.logs.filter((log) => log.level === level);
73
+ }
74
+ /**
75
+ * Get all captured console messages.
76
+ */
77
+ getMessages() {
78
+ return this.logs.filter((log) => log.type === 'console');
79
+ }
80
+ /**
81
+ * Get all JavaScript errors
82
+ */
83
+ getErrors() {
84
+ return this.logs.filter((log) => log.type === 'javascript');
85
+ }
86
+ /**
87
+ * Clear captured logs
88
+ */
89
+ clearLogs() {
90
+ this.logs = [];
91
+ }
92
+ /**
93
+ * Wait for a console message matching predicate
94
+ */
95
+ waitForConsole(predicate, timeout = 30000) {
96
+ return new Promise((resolve, reject) => {
97
+ const timeoutId = setTimeout(() => {
98
+ unsubscribe();
99
+ reject(new Error('Timeout waiting for console message'));
100
+ }, timeout);
101
+ const unsubscribe = this.onConsole((msg) => {
102
+ if (predicate(msg)) {
103
+ clearTimeout(timeoutId);
104
+ unsubscribe();
105
+ resolve(msg);
106
+ }
107
+ });
108
+ });
109
+ }
110
+ /**
111
+ * Wait for a JavaScript error
112
+ */
113
+ waitForError(predicate, timeout = 30000) {
114
+ return new Promise((resolve, reject) => {
115
+ const timeoutId = setTimeout(() => {
116
+ unsubscribe();
117
+ reject(new Error('Timeout waiting for JavaScript error'));
118
+ }, timeout);
119
+ const unsubscribe = this.onError((err) => {
120
+ if (!predicate || predicate(err)) {
121
+ clearTimeout(timeoutId);
122
+ unsubscribe();
123
+ resolve(err);
124
+ }
125
+ });
126
+ });
127
+ }
128
+ /**
129
+ * Assert no JavaScript errors occurred
130
+ */
131
+ assertNoErrors() {
132
+ const errors = this.getErrors();
133
+ if (errors.length > 0) {
134
+ const errorMessages = errors.map((e) => e.text).join('\n');
135
+ throw new Error(`JavaScript errors detected:\n${errorMessages}`);
136
+ }
137
+ }
138
+ handleLogEntry(entry) {
139
+ const message = this.convertLogEntry(entry);
140
+ // Store log
141
+ this.logs.push(message);
142
+ if (this.logs.length > this.maxLogs) {
143
+ this.logs.shift();
144
+ }
145
+ // Notify handlers
146
+ this.notifyHandlers(message);
147
+ }
148
+ convertLogEntry(entry) {
149
+ const stackTrace = entry.stackTrace
150
+ ? this.convertStackTrace(entry.stackTrace)
151
+ : undefined;
152
+ if (entry.type === 'javascript') {
153
+ const error = {
154
+ type: 'javascript',
155
+ level: 'error',
156
+ text: entry.text,
157
+ timestamp: new Date(entry.timestamp),
158
+ stackTrace,
159
+ context: entry.source.context,
160
+ };
161
+ return error;
162
+ }
163
+ const consoleMsg = {
164
+ type: 'console',
165
+ level: entry.level,
166
+ text: entry.text,
167
+ timestamp: new Date(entry.timestamp),
168
+ method: entry.method || entry.level,
169
+ args: entry.args ? entry.args.map((arg) => this.deserializeValue(arg)) : [],
170
+ stackTrace,
171
+ context: entry.source.context,
172
+ };
173
+ return consoleMsg;
174
+ }
175
+ convertStackTrace(trace) {
176
+ return trace.callFrames.map((frame) => ({
177
+ functionName: frame.functionName,
178
+ url: frame.url,
179
+ lineNumber: frame.lineNumber,
180
+ columnNumber: frame.columnNumber,
181
+ }));
182
+ }
183
+ deserializeValue(value) {
184
+ switch (value.type) {
185
+ case 'undefined':
186
+ return undefined;
187
+ case 'null':
188
+ return null;
189
+ case 'string':
190
+ return value.value;
191
+ case 'number':
192
+ if (value.value === 'NaN')
193
+ return NaN;
194
+ if (value.value === 'Infinity')
195
+ return Infinity;
196
+ if (value.value === '-Infinity')
197
+ return -Infinity;
198
+ if (value.value === '-0')
199
+ return -0;
200
+ return value.value;
201
+ case 'boolean':
202
+ return value.value;
203
+ case 'bigint':
204
+ return BigInt(value.value);
205
+ case 'array':
206
+ return value.value?.map((v) => this.deserializeValue(v)) ?? [];
207
+ case 'object':
208
+ if (!value.value)
209
+ return {};
210
+ return Object.fromEntries(value.value.map(([k, v]) => [
211
+ typeof k === 'string' ? k : this.deserializeValue(k),
212
+ this.deserializeValue(v),
213
+ ]));
214
+ case 'regexp':
215
+ return new RegExp(value.value.pattern, value.value.flags);
216
+ case 'date':
217
+ return new Date(value.value);
218
+ case 'function':
219
+ return '[Function]';
220
+ case 'node':
221
+ return `[${value.value.nodeName || 'Node'}]`;
222
+ case 'window':
223
+ return `[Window: ${value.value.context}]`;
224
+ default:
225
+ return '[Unknown]';
226
+ }
227
+ }
228
+ notifyHandlers(message) {
229
+ // All handlers
230
+ for (const handler of this.allHandlers) {
231
+ try {
232
+ handler(message);
233
+ }
234
+ catch (err) {
235
+ console.error('Error in log handler:', err);
236
+ }
237
+ }
238
+ // Level-specific handlers
239
+ const levelHandlers = this.levelHandlers.get(message.level);
240
+ if (levelHandlers) {
241
+ for (const handler of levelHandlers) {
242
+ try {
243
+ handler(message);
244
+ }
245
+ catch (err) {
246
+ console.error('Error in level log handler:', err);
247
+ }
248
+ }
249
+ }
250
+ // Type-specific handlers
251
+ if (message.type === 'console') {
252
+ for (const handler of this.consoleHandlers) {
253
+ try {
254
+ handler(message);
255
+ }
256
+ catch (err) {
257
+ console.error('Error in console handler:', err);
258
+ }
259
+ }
260
+ }
261
+ else if (message.type === 'javascript') {
262
+ for (const handler of this.errorHandlers) {
263
+ try {
264
+ handler(message);
265
+ }
266
+ catch (err) {
267
+ console.error('Error in error handler:', err);
268
+ }
269
+ }
270
+ }
271
+ }
272
+ }
273
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/lib/bidi/logs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * BiDi Network Interceptor
3
+ * Provides request interception, mocking, and modification capabilities
4
+ */
5
+ import type { BiDiConnection } from './connection.js';
6
+ import type { BrowsingContext, InterceptPhase, NetworkIntercept, UrlPattern } from './types.js';
7
+ export interface MockResponse {
8
+ status?: number;
9
+ statusText?: string;
10
+ headers?: Record<string, string>;
11
+ body?: string | Buffer | object;
12
+ }
13
+ export interface RequestHandler {
14
+ (request: InterceptedRequest): MockResponse | void | Promise<MockResponse | void>;
15
+ }
16
+ export interface InterceptedRequest {
17
+ id: string;
18
+ url: string;
19
+ method: string;
20
+ headers: Record<string, string>;
21
+ postData?: string;
22
+ resourceType?: string;
23
+ isBlocked: boolean;
24
+ context: BrowsingContext | null;
25
+ }
26
+ export interface InterceptedResponse {
27
+ url: string;
28
+ status: number;
29
+ statusText: string;
30
+ headers: Record<string, string>;
31
+ mimeType: string;
32
+ fromCache: boolean;
33
+ request: Pick<InterceptedRequest, 'id' | 'url' | 'method' | 'headers'>;
34
+ }
35
+ export interface InterceptRule {
36
+ id: NetworkIntercept;
37
+ patterns: UrlPattern[];
38
+ phases: InterceptPhase[];
39
+ handler?: RequestHandler;
40
+ }
41
+ export declare class NetworkInterceptor {
42
+ private connection;
43
+ private intercepts;
44
+ private handlers;
45
+ private subscribed;
46
+ private context?;
47
+ private requestListeners;
48
+ private responseListeners;
49
+ /** Set of request IDs currently in-flight (sent but not yet completed/errored). */
50
+ private inFlightRequests;
51
+ /** Callbacks to notify when inFlightRequests changes — used by waitForNetworkIdle. */
52
+ private idleListeners;
53
+ constructor(connection: BiDiConnection, context?: BrowsingContext);
54
+ /**
55
+ * Initialize network event subscriptions
56
+ */
57
+ initialize(): Promise<void>;
58
+ /**
59
+ * Add a network intercept for specific URL patterns
60
+ */
61
+ intercept(patterns: string | string[] | UrlPattern | UrlPattern[], handler: RequestHandler, phases?: InterceptPhase[], contexts?: BrowsingContext[]): Promise<string>;
62
+ /**
63
+ * Mock all requests matching pattern with a fixed response
64
+ */
65
+ mock(pattern: string | string[] | UrlPattern | UrlPattern[], response: MockResponse | ((req: InterceptedRequest) => MockResponse)): Promise<string>;
66
+ /**
67
+ * Block all requests matching pattern
68
+ */
69
+ block(pattern: string | string[]): Promise<string>;
70
+ /**
71
+ * Modify request headers for matching patterns
72
+ */
73
+ setExtraHeaders(headers: Record<string, string>, contexts?: BrowsingContext[]): Promise<void>;
74
+ /**
75
+ * Continue a blocked request (optionally with modifications)
76
+ */
77
+ continueRequest(requestId: string, options?: {
78
+ url?: string;
79
+ method?: string;
80
+ headers?: Record<string, string>;
81
+ body?: string;
82
+ }): Promise<void>;
83
+ /**
84
+ * Provide a custom response for a blocked request
85
+ */
86
+ provideResponse(requestId: string, response: MockResponse): Promise<void>;
87
+ /**
88
+ * Fail a blocked request
89
+ */
90
+ failRequest(requestId: string): Promise<void>;
91
+ /**
92
+ * Number of network requests currently in-flight (sent but no response yet).
93
+ * Used to implement `waitForNetworkIdle`.
94
+ */
95
+ get inFlightCount(): number;
96
+ /**
97
+ * Resolves when no network requests have been in-flight for `idleDuration` ms.
98
+ * Event-driven: subscribes to network events internally; no polling.
99
+ *
100
+ * @param idleDuration Milliseconds of network silence required (default: 500)
101
+ */
102
+ waitForNetworkIdle(opts?: {
103
+ idleDuration?: number;
104
+ timeout?: number;
105
+ }): Promise<void>;
106
+ private _notifyIdleListeners;
107
+ /**
108
+ * Subscribe to **every** matching request or response. Returns an
109
+ * `off()` function that unsubscribes the listener.
110
+ *
111
+ * Unlike {@link waitForRequest} / {@link waitForResponse}, this is
112
+ * persistent — the callback fires for the lifetime of the browser
113
+ * session (or until you call `off()`).
114
+ *
115
+ * @example
116
+ * const off = network.on('response', (res) => {
117
+ * console.log(res.status, res.url);
118
+ * });
119
+ * // …
120
+ * off();
121
+ */
122
+ on(event: 'request', listener: (req: InterceptedRequest) => void): () => void;
123
+ on(event: 'response', listener: (res: InterceptedResponse) => void): () => void;
124
+ /**
125
+ * Wait for the first request matching a URL glob or predicate.
126
+ * Must be registered **before** the action that triggers the request.
127
+ */
128
+ waitForRequest(pattern: string | ((req: InterceptedRequest) => boolean), opts?: {
129
+ timeout?: number;
130
+ }): Promise<InterceptedRequest>;
131
+ /**
132
+ * Wait for the first completed response matching a URL glob or predicate.
133
+ * Must be registered **before** the action that triggers the request.
134
+ *
135
+ * @example
136
+ * ```ts
137
+ * const [res] = await Promise.all([
138
+ * browser.waitForResponse('/api/users'),
139
+ * browser.click('#load-btn'),
140
+ * ]);
141
+ * expect(res.status).toBe(200);
142
+ * ```
143
+ */
144
+ waitForResponse(pattern: string | ((res: InterceptedResponse) => boolean), opts?: {
145
+ timeout?: number;
146
+ }): Promise<InterceptedResponse>;
147
+ private _waitFor;
148
+ private _matchesGlob;
149
+ /**
150
+ * Remove an intercept
151
+ */
152
+ removeIntercept(interceptId: string): Promise<void>;
153
+ /**
154
+ * Remove all intercepts
155
+ */
156
+ removeAllIntercepts(): Promise<void>;
157
+ /**
158
+ * Set cache behavior
159
+ */
160
+ setCacheBehavior(behavior: 'default' | 'bypass', contexts?: BrowsingContext[]): Promise<void>;
161
+ private handleBeforeRequestSent;
162
+ private normalizePatterns;
163
+ private headersToObject;
164
+ }
165
+ //# sourceMappingURL=network.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../src/lib/bidi/network.ts"],"names":[],"mappings":"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"}