chrome-e2e-sdk 0.0.0-stage → 1.0.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 (67) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +739 -2
  3. package/dist/assertion/Assertion.d.ts +87 -0
  4. package/dist/assertion/Assertion.d.ts.map +1 -0
  5. package/dist/assertion/Assertion.js +459 -0
  6. package/dist/assertion/Assertion.js.map +1 -0
  7. package/dist/assertion/recorder.d.ts +41 -0
  8. package/dist/assertion/recorder.d.ts.map +1 -0
  9. package/dist/assertion/recorder.js +37 -0
  10. package/dist/assertion/recorder.js.map +1 -0
  11. package/dist/browser/Browser.d.ts +44 -0
  12. package/dist/browser/Browser.d.ts.map +1 -0
  13. package/dist/browser/Browser.js +167 -0
  14. package/dist/browser/Browser.js.map +1 -0
  15. package/dist/browser/Locator.d.ts +94 -0
  16. package/dist/browser/Locator.d.ts.map +1 -0
  17. package/dist/browser/Locator.js +533 -0
  18. package/dist/browser/Locator.js.map +1 -0
  19. package/dist/browser/Page.d.ts +272 -0
  20. package/dist/browser/Page.d.ts.map +1 -0
  21. package/dist/browser/Page.js +979 -0
  22. package/dist/browser/Page.js.map +1 -0
  23. package/dist/client/MCPClient.d.ts +72 -0
  24. package/dist/client/MCPClient.d.ts.map +1 -0
  25. package/dist/client/MCPClient.js +302 -0
  26. package/dist/client/MCPClient.js.map +1 -0
  27. package/dist/client/MCPCommand.d.ts +51 -0
  28. package/dist/client/MCPCommand.d.ts.map +1 -0
  29. package/dist/client/MCPCommand.js +74 -0
  30. package/dist/client/MCPCommand.js.map +1 -0
  31. package/dist/env/loadEnv.d.ts +8 -0
  32. package/dist/env/loadEnv.d.ts.map +1 -0
  33. package/dist/env/loadEnv.js +19 -0
  34. package/dist/env/loadEnv.js.map +1 -0
  35. package/dist/errors/E2EError.d.ts +50 -0
  36. package/dist/errors/E2EError.d.ts.map +1 -0
  37. package/dist/errors/E2EError.js +90 -0
  38. package/dist/errors/E2EError.js.map +1 -0
  39. package/dist/index.d.ts +32 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +37 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/logger.d.ts +12 -0
  44. package/dist/logger.d.ts.map +1 -0
  45. package/dist/logger.js +57 -0
  46. package/dist/logger.js.map +1 -0
  47. package/dist/network/Network.d.ts +72 -0
  48. package/dist/network/Network.d.ts.map +1 -0
  49. package/dist/network/Network.js +236 -0
  50. package/dist/network/Network.js.map +1 -0
  51. package/dist/test/HtmlReport.d.ts +26 -0
  52. package/dist/test/HtmlReport.d.ts.map +1 -0
  53. package/dist/test/HtmlReport.js +653 -0
  54. package/dist/test/HtmlReport.js.map +1 -0
  55. package/dist/test/Runner.d.ts +146 -0
  56. package/dist/test/Runner.d.ts.map +1 -0
  57. package/dist/test/Runner.js +390 -0
  58. package/dist/test/Runner.js.map +1 -0
  59. package/dist/test/index.d.ts +4 -0
  60. package/dist/test/index.d.ts.map +1 -0
  61. package/dist/test/index.js +3 -0
  62. package/dist/test/index.js.map +1 -0
  63. package/dist/version.d.ts +2 -0
  64. package/dist/version.d.ts.map +1 -0
  65. package/dist/version.js +4 -0
  66. package/dist/version.js.map +1 -0
  67. package/package.json +63 -4
@@ -0,0 +1,272 @@
1
+ import { MCPClient } from '../client/MCPClient.js';
2
+ import { Locator, type LocatorOptions } from './Locator.js';
3
+ import { Network } from '../network/Network.js';
4
+ import { type NetworkRequest, type NetworkResponse, type WaitForResponseOptions } from '../network/Network.js';
5
+ import { type Selector } from '../errors/E2EError.js';
6
+ export interface SnapshotResult {
7
+ nodes: Array<{
8
+ uid: string;
9
+ tagName: string;
10
+ attributes: Record<string, string>;
11
+ /** uids of direct child nodes */
12
+ children: string[];
13
+ text?: string;
14
+ role?: string;
15
+ name?: string;
16
+ }>;
17
+ }
18
+ export interface ScreenshotOptions {
19
+ fullPage?: boolean;
20
+ quality?: number;
21
+ type?: 'png' | 'jpeg';
22
+ }
23
+ export interface ResizeOptions {
24
+ width: number;
25
+ height: number;
26
+ timeout?: number;
27
+ }
28
+ export interface StorageOperationOptions {
29
+ timeout?: number;
30
+ }
31
+ export interface WaitOptions {
32
+ timeout?: number;
33
+ }
34
+ /** A console message as reported by `list_console_messages`. */
35
+ export interface ConsoleMessage {
36
+ id?: number;
37
+ type: string;
38
+ text: string;
39
+ argsCount?: number;
40
+ count?: number;
41
+ stackTrace?: string;
42
+ }
43
+ /** The detailed shape reported by `get_console_message`. */
44
+ export interface ConsoleMessageDetail extends ConsoleMessage {
45
+ args?: unknown[];
46
+ }
47
+ export interface EmulateOptions {
48
+ /** e.g. `Slow3G`, `Fast4G`, `Offline`. Omit to leave throttling unchanged. */
49
+ networkConditions?: string;
50
+ /** 1-20. 1 disables throttling. */
51
+ cpuThrottlingRate?: number;
52
+ userAgent?: string;
53
+ colorScheme?: 'dark' | 'light' | 'auto';
54
+ /** `<width>x<height>[x<dpr>][,mobile][,touch]`, or `WIDTHxHEIGHT` to clear. */
55
+ viewport?: string;
56
+ /** `<latitude>,<longitude>`. Omit to clear. */
57
+ geolocation?: string;
58
+ timeout?: number;
59
+ }
60
+ export type LoadState = 'load' | 'domcontentloaded' | 'networkidle';
61
+ export declare class PageLocalStorage {
62
+ private page;
63
+ constructor(page: Page);
64
+ setItem(key: string, value: string, options?: StorageOperationOptions): Promise<void>;
65
+ getItem(key: string, options?: StorageOperationOptions): Promise<string | null>;
66
+ removeItem(key: string, options?: StorageOperationOptions): Promise<void>;
67
+ /** Keys currently present, in insertion order. */
68
+ keys(options?: StorageOperationOptions): Promise<string[]>;
69
+ clear(options?: StorageOperationOptions): Promise<void>;
70
+ }
71
+ export declare class Page {
72
+ private mcpClient;
73
+ private pageId;
74
+ private defaultTimeout;
75
+ private closed;
76
+ private networkInstance;
77
+ private localStorageInstance;
78
+ private _url;
79
+ private _title;
80
+ private _active;
81
+ private readonly logger;
82
+ constructor(mcpClient: MCPClient, pageId: number, defaultTimeout: number);
83
+ private createLogger;
84
+ goto(url: string, options?: {
85
+ timeout?: number;
86
+ waitUntil?: 'load' | 'domcontentloaded' | 'networkidle';
87
+ }): Promise<void>;
88
+ reload(options?: {
89
+ timeout?: number;
90
+ }): Promise<void>;
91
+ back(options?: {
92
+ timeout?: number;
93
+ }): Promise<void>;
94
+ forward(options?: {
95
+ timeout?: number;
96
+ }): Promise<void>;
97
+ waitForTimeout(timeout: number): Promise<void>;
98
+ waitForURL(url: string | RegExp | ((url: string) => boolean), options?: WaitOptions): Promise<void>;
99
+ waitForLoadState(state?: LoadState, options?: WaitOptions): Promise<void>;
100
+ waitForRequest(options: WaitForResponseOptions): Promise<NetworkRequest>;
101
+ waitForResponse(options: WaitForResponseOptions): Promise<NetworkResponse>;
102
+ close(): Promise<void>;
103
+ url(): Promise<string>;
104
+ title(): Promise<string>;
105
+ isActive(): boolean;
106
+ /**
107
+ * Update cached page info without replacing the instance, so Locator and
108
+ * Network objects created from this page stay attached to it.
109
+ *
110
+ * @internal
111
+ */
112
+ updatePageInfo(url?: string, title?: string, active?: boolean): void;
113
+ snapshot(): Promise<SnapshotResult>;
114
+ screenshot(options?: ScreenshotOptions): Promise<Buffer>;
115
+ /**
116
+ * Screenshot a single element identified by its snapshot uid.
117
+ * Shared with `Locator.screenshot()` so both handle the base64 and the
118
+ * "saved to file" response shapes identically.
119
+ *
120
+ * @internal
121
+ */
122
+ screenshotElement(uid: string, options?: LocatorOptions): Promise<Buffer>;
123
+ resize(options: ResizeOptions): Promise<void>;
124
+ getByText(text: string, options?: {
125
+ exact?: boolean;
126
+ }): Locator;
127
+ getByRole(role: string, options?: {
128
+ name?: string;
129
+ exact?: boolean;
130
+ }): Locator;
131
+ getByLabel(label: string, options?: {
132
+ exact?: boolean;
133
+ }): Locator;
134
+ locator(selector: string): Locator;
135
+ click(selector: string | Selector, options?: {
136
+ timeout?: number;
137
+ exact?: boolean;
138
+ }): Promise<void>;
139
+ fill(selector: string | Selector, value: string, options?: {
140
+ timeout?: number;
141
+ exact?: boolean;
142
+ }): Promise<void>;
143
+ private toSelector;
144
+ /**
145
+ * Resolve a selector to a Chrome DevTools node uid.
146
+ * CSS and label selectors go through injected scripts; role, name and text
147
+ * selectors are matched against the a11y snapshot.
148
+ *
149
+ * @internal
150
+ */
151
+ resolve(selector: Selector): Promise<{
152
+ uid: string;
153
+ }>;
154
+ /** @internal */
155
+ callTool<T = unknown>(name: string, arguments_?: Record<string, unknown>): Promise<T>;
156
+ /** @internal */
157
+ evaluateLocator<T = unknown>(selector: Selector, body: string, operation: string, options?: {
158
+ timeout?: number;
159
+ }): Promise<T>;
160
+ /**
161
+ * Injected helper that locates the form control a visible label refers to.
162
+ *
163
+ * Covers the shapes `getByLabel` has to survive in real pages: `aria-label`,
164
+ * `<label for>` / wrapping labels, and components that render a label
165
+ * element next to the input inside a `.el-form-item`-style row.
166
+ */
167
+ private labelFinderSource;
168
+ private findElement;
169
+ private resolveCssSelector;
170
+ private resolveLabelSelector;
171
+ /**
172
+ * Tag the target element with a throwaway attribute, read its snapshot uid
173
+ * back, then remove the attribute. `evaluate_script` only accepts element
174
+ * uids as arguments, so this is how a CSS or label selector is turned into
175
+ * something the uid-based tools understand.
176
+ */
177
+ private resolveViaMarker;
178
+ private parseNavigationFailure;
179
+ private matchName;
180
+ private matchesURL;
181
+ private describeURLMatcher;
182
+ private matchesLoadState;
183
+ waitForText(texts: string | string[], options?: {
184
+ timeout?: number;
185
+ }): Promise<void>;
186
+ /**
187
+ * Fill several form controls in one call. `chrome-devtools-mcp` documents
188
+ * `fill_form` as strongly preferred over repeated `fill` calls: it is faster
189
+ * and more reliable because every control is resolved from one snapshot.
190
+ */
191
+ fillForm(fields: Array<{
192
+ label: string;
193
+ value: string;
194
+ } | {
195
+ uid: string;
196
+ value: string;
197
+ }>, options?: {
198
+ timeout?: number;
199
+ }): Promise<void>;
200
+ /**
201
+ * Resolve several label selectors at once: mark every match, take a single
202
+ * snapshot, then read each uid back and clean up.
203
+ */
204
+ private resolveLabels;
205
+ /**
206
+ * Emulate network, CPU, user agent, colour scheme, viewport or geolocation.
207
+ * Omitting a key leaves that dimension untouched upstream; `clearEmulation()`
208
+ * resets all of them at once.
209
+ */
210
+ emulate(options?: EmulateOptions): Promise<void>;
211
+ /** Reset every emulated dimension. */
212
+ clearEmulation(options?: {
213
+ timeout?: number;
214
+ }): Promise<void>;
215
+ /** Fetch one console message with its arguments and stack trace. */
216
+ getConsoleMessage(messageId: number): Promise<ConsoleMessage>;
217
+ get network(): Network;
218
+ get localStorage(): PageLocalStorage;
219
+ consoleMessages(options?: {
220
+ includeStackTraces?: boolean;
221
+ }): Promise<ConsoleMessage[]>;
222
+ evaluate<T = unknown>(script: string, args?: unknown[], options?: {
223
+ timeout?: number;
224
+ }): Promise<T>;
225
+ getPageId(): number;
226
+ isClosed(): boolean;
227
+ getDefaultTimeout(): number;
228
+ setDefaultTimeout(timeout: number): void;
229
+ private ensureNotClosed;
230
+ private parseSnapshot;
231
+ private parseStructuredSnapshot;
232
+ private flattenSnapshotNodes;
233
+ /**
234
+ * `chrome-devtools-mcp` serializes each snapshot node as a flat object where
235
+ * `id`, `role` and `name` sit next to every extracted DOM attribute
236
+ * (`aria-label`, `placeholder`, `disabled`, ...). Both that flat shape and a
237
+ * nested `attributes` object are accepted.
238
+ */
239
+ private normalizeSnapshotNode;
240
+ private parseConsoleMessages;
241
+ /**
242
+ * `get_console_message` answers with text when structured content is off:
243
+ *
244
+ * ```text
245
+ * ID: 7
246
+ * Message: error> Uncaught TypeError
247
+ * ### Arguments
248
+ * Arg #0: undefined
249
+ * ### Stack trace
250
+ * at ...
251
+ * ```
252
+ */
253
+ private parseDetailedConsoleMessage;
254
+ private readSavedScreenshot;
255
+ private withTimeout;
256
+ }
257
+ /**
258
+ * Unwraps the envelope `evaluate_script` returns.
259
+ *
260
+ * The tool has no dedicated structured field, so upstream falls back to
261
+ * `structuredContent.message` and leaves the whole human-readable reply in it,
262
+ * fenced value included:
263
+ *
264
+ * { message: 'Script ran on page and returned:\n```json\n"complete"\n```' }
265
+ *
266
+ * Returning that verbatim makes every caller believe the script returned an
267
+ * object. `waitForLoadState` compared it against 'complete', never matched, and
268
+ * polled until the timeout fired on a page that had in fact loaded instantly.
269
+ * Every other evaluate-backed helper was silently broken the same way.
270
+ */
271
+ export declare function unwrapScriptResult<T>(raw: unknown): T;
272
+ //# sourceMappingURL=Page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Page.d.ts","sourceRoot":"","sources":["../../src/browser/Page.ts"],"names":[],"mappings":"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"}