craftdriver 0.1.0 → 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 (186) hide show
  1. package/CHANGELOG.md +104 -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 +23 -6
  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 @@
1
+ {"version":3,"file":"a11y.js","sourceRoot":"","sources":["../../src/lib/a11y.ts"],"names":[],"mappings":"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"}
@@ -55,6 +55,31 @@ export declare class BiDiSession {
55
55
  * Load session state from file
56
56
  */
57
57
  loadState(path: string): Promise<void>;
58
+ /**
59
+ * Get the active browsing context id
60
+ */
61
+ getContext(): string | undefined;
62
+ /**
63
+ * Register a one-shot handler for the next `browsingContext.load` event
64
+ * on the active top-level context. Returns an unsubscribe function.
65
+ */
66
+ onLoad(handler: (params: Record<string, unknown>) => void): () => void;
67
+ /**
68
+ * Register a handler for the next `browsingContext.domContentLoaded`
69
+ * event on the active top-level context. Returns an unsubscribe function.
70
+ */
71
+ onDomContentLoaded(handler: (params: Record<string, unknown>) => void): () => void;
72
+ /**
73
+ * Register a persistent handler for `browsingContext.userPromptOpened` events.
74
+ * Called every time a dialog (alert/confirm/prompt) opens. Returns an unsubscribe function.
75
+ */
76
+ onDialog(handler: (params: Record<string, unknown>) => void): () => void;
77
+ /**
78
+ * Handle an open user prompt (alert / confirm / prompt) via BiDi.
79
+ * @param accept true to accept (OK), false to dismiss (Cancel / close)
80
+ * @param userText Text to type into a prompt dialog before accepting
81
+ */
82
+ handleUserPrompt(accept: boolean, userText?: string): Promise<void>;
58
83
  /**
59
84
  * Subscribe to BiDi events
60
85
  */
@@ -69,7 +94,7 @@ export declare class BiDiSession {
69
94
  close(): Promise<void>;
70
95
  }
71
96
  export { BiDiConnection } from './connection.js';
72
- export { NetworkInterceptor, type MockResponse, type InterceptedRequest } from './network.js';
97
+ export { NetworkInterceptor, type MockResponse, type InterceptedRequest, type InterceptedResponse } from './network.js';
73
98
  export { LogMonitor, type ConsoleMessage, type JavaScriptError, type LogMessage } from './logs.js';
74
99
  export { SessionStateManager, type StorageStateOptions } from './storage.js';
75
100
  export * from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/bidi/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,WAAW,kBAAkB;IACjC,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAC,CAAkB;IAClC,OAAO,CAAC,QAAQ,CAAC,CAAqB;IACtC,OAAO,CAAC,KAAK,CAAC,CAAa;IAC3B,OAAO,CAAC,QAAQ,CAAC,CAAsB;IACvC,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB;IAK5D;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB3C;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,aAAa,IAAI,cAAc;IAI/B;;OAEG;IACH,IAAI,OAAO,IAAI,kBAAkB,CAKhC;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,UAAU,CAKrB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,mBAAmB,CASjC;IAID;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;IAInF;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAIjF;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI7B;AAGD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC7E,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/bidi/index.ts"],"names":[],"mappings":"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"}
@@ -28,9 +28,18 @@ export class BiDiSession {
28
28
  if (result.contexts?.[0]) {
29
29
  this.context = result.contexts[0].context;
30
30
  }
31
+ // Subscribe to browsing-context lifecycle events needed for waitForLoadState
32
+ await this.connection.subscribe([
33
+ 'browsingContext.load',
34
+ 'browsingContext.domContentLoaded',
35
+ 'browsingContext.userPromptOpened',
36
+ ]);
31
37
  // Eagerly initialize log monitoring so console/error capture starts immediately
32
38
  this._logs = new LogMonitor(this.connection, this.context);
33
39
  await this._logs.initialize();
40
+ // Eagerly initialize network so in-flight tracking starts from the first request
41
+ this._network = new NetworkInterceptor(this.connection, this.context);
42
+ await this._network.initialize();
34
43
  this.initialized = true;
35
44
  }
36
45
  /**
@@ -85,6 +94,46 @@ export class BiDiSession {
85
94
  async loadState(path) {
86
95
  return this.storage.loadState(path);
87
96
  }
97
+ /**
98
+ * Get the active browsing context id
99
+ */
100
+ getContext() {
101
+ return this.context;
102
+ }
103
+ /**
104
+ * Register a one-shot handler for the next `browsingContext.load` event
105
+ * on the active top-level context. Returns an unsubscribe function.
106
+ */
107
+ onLoad(handler) {
108
+ return this.connection.on('browsingContext.load', handler);
109
+ }
110
+ /**
111
+ * Register a handler for the next `browsingContext.domContentLoaded`
112
+ * event on the active top-level context. Returns an unsubscribe function.
113
+ */
114
+ onDomContentLoaded(handler) {
115
+ return this.connection.on('browsingContext.domContentLoaded', handler);
116
+ }
117
+ /**
118
+ * Register a persistent handler for `browsingContext.userPromptOpened` events.
119
+ * Called every time a dialog (alert/confirm/prompt) opens. Returns an unsubscribe function.
120
+ */
121
+ onDialog(handler) {
122
+ return this.connection.on('browsingContext.userPromptOpened', handler);
123
+ }
124
+ /**
125
+ * Handle an open user prompt (alert / confirm / prompt) via BiDi.
126
+ * @param accept true to accept (OK), false to dismiss (Cancel / close)
127
+ * @param userText Text to type into a prompt dialog before accepting
128
+ */
129
+ async handleUserPrompt(accept, userText) {
130
+ if (!this.context)
131
+ throw new Error('No active browsing context');
132
+ const params = { context: this.context, accept };
133
+ if (userText !== undefined)
134
+ params.userText = userText;
135
+ await this.connection.send('browsingContext.handleUserPrompt', params);
136
+ }
88
137
  /**
89
138
  * Subscribe to BiDi events
90
139
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/bidi/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/bidi/index.ts"],"names":[],"mappings":"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"}
@@ -72,9 +72,9 @@ export declare class LogMonitor {
72
72
  */
73
73
  getLogsByLevel(level: LogLevel): LogMessage[];
74
74
  /**
75
- * Get all console messages
75
+ * Get all captured console messages.
76
76
  */
77
- getConsoleLogs(): ConsoleMessage[];
77
+ getMessages(): ConsoleMessage[];
78
78
  /**
79
79
  * Get all JavaScript errors
80
80
  */
@@ -1 +1 @@
1
- {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/lib/bidi/logs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/lib/bidi/logs.ts"],"names":[],"mappings":"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"}
@@ -72,9 +72,9 @@ export class LogMonitor {
72
72
  return this.logs.filter((log) => log.level === level);
73
73
  }
74
74
  /**
75
- * Get all console messages
75
+ * Get all captured console messages.
76
76
  */
77
- getConsoleLogs() {
77
+ getMessages() {
78
78
  return this.logs.filter((log) => log.type === 'console');
79
79
  }
80
80
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/lib/bidi/logs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/lib/bidi/logs.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,15 @@ export interface InterceptedRequest {
23
23
  isBlocked: boolean;
24
24
  context: BrowsingContext | null;
25
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
+ }
26
35
  export interface InterceptRule {
27
36
  id: NetworkIntercept;
28
37
  patterns: UrlPattern[];
@@ -35,6 +44,12 @@ export declare class NetworkInterceptor {
35
44
  private handlers;
36
45
  private subscribed;
37
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;
38
53
  constructor(connection: BiDiConnection, context?: BrowsingContext);
39
54
  /**
40
55
  * Initialize network event subscriptions
@@ -43,7 +58,7 @@ export declare class NetworkInterceptor {
43
58
  /**
44
59
  * Add a network intercept for specific URL patterns
45
60
  */
46
- intercept(patterns: string | string[] | UrlPattern | UrlPattern[], handler: RequestHandler, phases?: InterceptPhase[]): Promise<string>;
61
+ intercept(patterns: string | string[] | UrlPattern | UrlPattern[], handler: RequestHandler, phases?: InterceptPhase[], contexts?: BrowsingContext[]): Promise<string>;
47
62
  /**
48
63
  * Mock all requests matching pattern with a fixed response
49
64
  */
@@ -73,6 +88,64 @@ export declare class NetworkInterceptor {
73
88
  * Fail a blocked request
74
89
  */
75
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;
76
149
  /**
77
150
  * Remove an intercept
78
151
  */
@@ -1 +1 @@
1
- {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../src/lib/bidi/network.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../src/lib/bidi/network.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,12 @@ export class NetworkInterceptor {
8
8
  handlers = new Map();
9
9
  subscribed = false;
10
10
  context;
11
+ requestListeners = [];
12
+ responseListeners = [];
13
+ /** Set of request IDs currently in-flight (sent but not yet completed/errored). */
14
+ inFlightRequests = new Set();
15
+ /** Callbacks to notify when inFlightRequests changes — used by waitForNetworkIdle. */
16
+ idleListeners = [];
11
17
  constructor(connection, context) {
12
18
  this.connection = connection;
13
19
  this.context = context;
@@ -26,22 +32,71 @@ export class NetworkInterceptor {
26
32
  'network.fetchError',
27
33
  'network.authRequired',
28
34
  ]);
29
- // Handle intercepted requests
35
+ // Handle intercepted requests + track in-flight
30
36
  this.connection.on('network.beforeRequestSent', async (params) => {
31
- await this.handleBeforeRequestSent(params);
37
+ const event = params;
38
+ // Track in-flight (before intercept handling, so count is always accurate)
39
+ this.inFlightRequests.add(event.request.request);
40
+ await this.handleBeforeRequestSent(event);
41
+ // Notify passive request listeners (waitForRequest)
42
+ if (this.requestListeners.length > 0) {
43
+ const req = {
44
+ id: event.request.request,
45
+ url: event.request.url,
46
+ method: event.request.method,
47
+ headers: this.headersToObject(event.request.headers),
48
+ isBlocked: event.isBlocked,
49
+ context: event.context,
50
+ };
51
+ for (const l of [...this.requestListeners])
52
+ l(req);
53
+ }
54
+ });
55
+ // Track completed responses + notify waitForResponse listeners
56
+ this.connection.on('network.responseCompleted', (params) => {
57
+ const event = params;
58
+ this.inFlightRequests.delete(event.request.request);
59
+ this._notifyIdleListeners();
60
+ if (this.responseListeners.length > 0) {
61
+ const res = {
62
+ url: event.response.url,
63
+ status: event.response.status,
64
+ statusText: event.response.statusText,
65
+ headers: this.headersToObject(event.response.headers),
66
+ mimeType: event.response.mimeType,
67
+ fromCache: event.response.fromCache,
68
+ request: {
69
+ id: event.request.request,
70
+ url: event.request.url,
71
+ method: event.request.method,
72
+ headers: this.headersToObject(event.request.headers),
73
+ },
74
+ };
75
+ for (const l of [...this.responseListeners])
76
+ l(res);
77
+ }
78
+ });
79
+ // Track fetch errors (request failed before a response)
80
+ this.connection.on('network.fetchError', (params) => {
81
+ const reqId = params?.request?.request;
82
+ if (reqId) {
83
+ this.inFlightRequests.delete(reqId);
84
+ this._notifyIdleListeners();
85
+ }
32
86
  });
33
87
  this.subscribed = true;
34
88
  }
35
89
  /**
36
90
  * Add a network intercept for specific URL patterns
37
91
  */
38
- async intercept(patterns, handler, phases = ['beforeRequestSent']) {
92
+ async intercept(patterns, handler, phases = ['beforeRequestSent'], contexts) {
39
93
  await this.initialize();
40
94
  const urlPatterns = this.normalizePatterns(patterns);
95
+ const ctxs = contexts ?? (this.context ? [this.context] : undefined);
41
96
  const result = await this.connection.send('network.addIntercept', {
42
97
  phases,
43
98
  urlPatterns,
44
- ...(this.context ? { contexts: [this.context] } : {}),
99
+ ...(ctxs ? { contexts: ctxs } : {}),
45
100
  });
46
101
  const interceptId = result.intercept;
47
102
  this.intercepts.set(interceptId, {
@@ -146,6 +201,169 @@ export class NetworkInterceptor {
146
201
  async failRequest(requestId) {
147
202
  await this.connection.send('network.failRequest', { request: requestId });
148
203
  }
204
+ /**
205
+ * Number of network requests currently in-flight (sent but no response yet).
206
+ * Used to implement `waitForNetworkIdle`.
207
+ */
208
+ get inFlightCount() {
209
+ return this.inFlightRequests.size;
210
+ }
211
+ /**
212
+ * Resolves when no network requests have been in-flight for `idleDuration` ms.
213
+ * Event-driven: subscribes to network events internally; no polling.
214
+ *
215
+ * @param idleDuration Milliseconds of network silence required (default: 500)
216
+ */
217
+ async waitForNetworkIdle(opts) {
218
+ await this.initialize();
219
+ // Validate-or-fallback to bound timer durations (defends against resource
220
+ // exhaustion from a hostile / buggy caller). CodeQL does not treat
221
+ // Math.min as a sanitizer, so we use explicit range checks.
222
+ const MAX_IDLE_MS = 60_000;
223
+ const MAX_TIMEOUT_MS = 300_000;
224
+ const reqIdle = opts?.idleDuration;
225
+ const reqTimeout = opts?.timeout;
226
+ const idleDuration = typeof reqIdle === 'number' && reqIdle >= 0 && reqIdle <= MAX_IDLE_MS ? reqIdle : 500;
227
+ const timeout = typeof reqTimeout === 'number' && reqTimeout >= 0 && reqTimeout <= MAX_TIMEOUT_MS
228
+ ? reqTimeout
229
+ : 30_000;
230
+ return new Promise((resolve, reject) => {
231
+ let idleTimer;
232
+ const timeoutTimer = setTimeout(() => {
233
+ cleanup();
234
+ reject(new Error(`waitForNetworkIdle() timed out after ${timeout}ms`));
235
+ }, timeout);
236
+ const scheduleIdle = () => {
237
+ if (idleTimer)
238
+ clearTimeout(idleTimer);
239
+ if (this.inFlightRequests.size === 0) {
240
+ idleTimer = setTimeout(() => { cleanup(); resolve(); }, idleDuration);
241
+ }
242
+ };
243
+ const onNetworkChange = () => scheduleIdle();
244
+ const cleanup = () => {
245
+ clearTimeout(timeoutTimer);
246
+ if (idleTimer)
247
+ clearTimeout(idleTimer);
248
+ this.idleListeners = this.idleListeners.filter(l => l !== onNetworkChange);
249
+ };
250
+ this.idleListeners.push(onNetworkChange);
251
+ // Kick off immediately in case already idle
252
+ scheduleIdle();
253
+ });
254
+ }
255
+ _notifyIdleListeners() {
256
+ for (const l of [...this.idleListeners])
257
+ l();
258
+ }
259
+ on(event, listener) {
260
+ if (event === 'request') {
261
+ const fn = listener;
262
+ this.requestListeners.push(fn);
263
+ // Ensure subscriptions are active so events arrive
264
+ this.initialize().catch(() => { });
265
+ return () => {
266
+ this.requestListeners = this.requestListeners.filter((l) => l !== fn);
267
+ };
268
+ }
269
+ const fn = listener;
270
+ this.responseListeners.push(fn);
271
+ this.initialize().catch(() => { });
272
+ return () => {
273
+ this.responseListeners = this.responseListeners.filter((l) => l !== fn);
274
+ };
275
+ }
276
+ /**
277
+ * Wait for the first request matching a URL glob or predicate.
278
+ * Must be registered **before** the action that triggers the request.
279
+ */
280
+ waitForRequest(pattern, opts) {
281
+ return this._waitFor('request', pattern, opts);
282
+ }
283
+ /**
284
+ * Wait for the first completed response matching a URL glob or predicate.
285
+ * Must be registered **before** the action that triggers the request.
286
+ *
287
+ * @example
288
+ * ```ts
289
+ * const [res] = await Promise.all([
290
+ * browser.waitForResponse('/api/users'),
291
+ * browser.click('#load-btn'),
292
+ * ]);
293
+ * expect(res.status).toBe(200);
294
+ * ```
295
+ */
296
+ waitForResponse(pattern, opts) {
297
+ return this._waitFor('response', pattern, opts);
298
+ }
299
+ _waitFor(kind, pattern, opts) {
300
+ const timeout = opts?.timeout ?? 30000;
301
+ const matcher = typeof pattern === 'function'
302
+ ? pattern
303
+ : (v) => this._matchesGlob(v.url, pattern);
304
+ return new Promise((resolve, reject) => {
305
+ let done = false;
306
+ const timer = setTimeout(() => {
307
+ if (done)
308
+ return;
309
+ done = true;
310
+ cleanup();
311
+ const desc = typeof pattern === 'string' ? `"${pattern}"` : '[predicate]';
312
+ reject(new Error(`waitFor${kind === 'request' ? 'Request' : 'Response'}(${desc}) timed out after ${timeout}ms`));
313
+ }, timeout);
314
+ const listener = (v) => {
315
+ if (done)
316
+ return;
317
+ if (matcher(v)) {
318
+ done = true;
319
+ cleanup();
320
+ resolve(v);
321
+ }
322
+ };
323
+ const cleanup = () => {
324
+ clearTimeout(timer);
325
+ if (kind === 'request') {
326
+ this.requestListeners = this.requestListeners.filter(l => l !== listener);
327
+ }
328
+ else {
329
+ this.responseListeners = this.responseListeners.filter(l => l !== listener);
330
+ }
331
+ };
332
+ if (kind === 'request') {
333
+ this.requestListeners.push(listener);
334
+ }
335
+ else {
336
+ this.responseListeners.push(listener);
337
+ }
338
+ // Ensure we are subscribed so events arrive
339
+ this.initialize().catch(reject);
340
+ });
341
+ }
342
+ _matchesGlob(url, pattern) {
343
+ // Re-use the same logic as normalizePatterns but do a JS-side string match
344
+ // so callers can use Playwright-style ** globs without relying on BiDi
345
+ // pattern registration.
346
+ let pathname;
347
+ try {
348
+ pathname = new URL(url).pathname;
349
+ }
350
+ catch {
351
+ pathname = url;
352
+ }
353
+ if (pattern.includes('**') || pattern.includes('*')) {
354
+ let pat = pattern;
355
+ pat = pat.replace(/^\*\*/, '');
356
+ pat = pat.replace(/\/?\*\*$/, '');
357
+ pat = pat.replace(/\/?\*$/, '');
358
+ pat = pat.replace(/\*/g, '');
359
+ if (!pat.startsWith('/'))
360
+ pat = '/' + pat;
361
+ pat = pat.replace(/\/+/g, '/');
362
+ return pathname.includes(pat);
363
+ }
364
+ // Exact string match against full URL
365
+ return url === pattern || url.startsWith(pattern);
366
+ }
149
367
  /**
150
368
  * Remove an intercept
151
369
  */