@monoes/monobrowse 1.0.13 → 1.0.14
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.
- package/dist/src/__tests__/bridge-instruments.test.d.ts +2 -0
- package/dist/src/__tests__/bridge-instruments.test.d.ts.map +1 -0
- package/dist/src/__tests__/bridge-instruments.test.js +132 -0
- package/dist/src/__tests__/bridge-instruments.test.js.map +1 -0
- package/dist/src/__tests__/bridge-transport.test.d.ts +2 -0
- package/dist/src/__tests__/bridge-transport.test.d.ts.map +1 -0
- package/dist/src/__tests__/bridge-transport.test.js +287 -0
- package/dist/src/__tests__/bridge-transport.test.js.map +1 -0
- package/dist/src/__tests__/cdp-transport.test.d.ts +2 -0
- package/dist/src/__tests__/cdp-transport.test.d.ts.map +1 -0
- package/dist/src/__tests__/cdp-transport.test.js +167 -0
- package/dist/src/__tests__/cdp-transport.test.js.map +1 -0
- package/dist/src/browser/bridge.d.ts +119 -0
- package/dist/src/browser/bridge.d.ts.map +1 -0
- package/dist/src/browser/bridge.js +264 -0
- package/dist/src/browser/bridge.js.map +1 -0
- package/dist/src/browser/cdp.d.ts +11 -1
- package/dist/src/browser/cdp.d.ts.map +1 -1
- package/dist/src/browser/cdp.js +60 -56
- package/dist/src/browser/cdp.js.map +1 -1
- package/dist/src/browser/index.d.ts +2 -0
- package/dist/src/browser/index.d.ts.map +1 -1
- package/dist/src/browser/index.js +2 -0
- package/dist/src/browser/index.js.map +1 -1
- package/dist/src/browser/transport.d.ts +62 -0
- package/dist/src/browser/transport.d.ts.map +1 -0
- package/dist/src/browser/transport.js +65 -0
- package/dist/src/browser/transport.js.map +1 -0
- package/dist/src/cli/commander-adapter.d.ts +16 -0
- package/dist/src/cli/commander-adapter.d.ts.map +1 -0
- package/dist/src/cli/commander-adapter.js +68 -0
- package/dist/src/cli/commander-adapter.js.map +1 -0
- package/dist/src/cli/commands-context.d.ts +14 -0
- package/dist/src/cli/commands-context.d.ts.map +1 -0
- package/dist/src/cli/commands-context.js +351 -0
- package/dist/src/cli/commands-context.js.map +1 -0
- package/dist/src/cli/commands-data.d.ts +12 -0
- package/dist/src/cli/commands-data.d.ts.map +1 -0
- package/dist/src/cli/commands-data.js +246 -0
- package/dist/src/cli/commands-data.js.map +1 -0
- package/dist/src/cli/commands-element.d.ts +15 -0
- package/dist/src/cli/commands-element.d.ts.map +1 -0
- package/dist/src/cli/commands-element.js +262 -0
- package/dist/src/cli/commands-element.js.map +1 -0
- package/dist/src/cli/commands-files.d.ts +9 -0
- package/dist/src/cli/commands-files.d.ts.map +1 -0
- package/dist/src/cli/commands-files.js +207 -0
- package/dist/src/cli/commands-files.js.map +1 -0
- package/dist/src/cli/commands-input.d.ts +26 -0
- package/dist/src/cli/commands-input.d.ts.map +1 -0
- package/dist/src/cli/commands-input.js +399 -0
- package/dist/src/cli/commands-input.js.map +1 -0
- package/dist/src/cli/commands-navigate.d.ts +12 -0
- package/dist/src/cli/commands-navigate.d.ts.map +1 -0
- package/dist/src/cli/commands-navigate.js +389 -0
- package/dist/src/cli/commands-navigate.js.map +1 -0
- package/dist/src/cli/commands-page.d.ts +25 -0
- package/dist/src/cli/commands-page.d.ts.map +1 -0
- package/dist/src/cli/commands-page.js +377 -0
- package/dist/src/cli/commands-page.js.map +1 -0
- package/dist/src/cli/commands-report.d.ts +8 -0
- package/dist/src/cli/commands-report.d.ts.map +1 -0
- package/dist/src/cli/commands-report.js +256 -0
- package/dist/src/cli/commands-report.js.map +1 -0
- package/dist/src/cli/commands-script.d.ts +43 -0
- package/dist/src/cli/commands-script.d.ts.map +1 -0
- package/dist/src/cli/commands-script.js +168 -0
- package/dist/src/cli/commands-script.js.map +1 -0
- package/dist/src/cli/commands-session.d.ts +15 -0
- package/dist/src/cli/commands-session.d.ts.map +1 -0
- package/dist/src/cli/commands-session.js +357 -0
- package/dist/src/cli/commands-session.js.map +1 -0
- package/dist/src/cli/commands-trace.d.ts +12 -0
- package/dist/src/cli/commands-trace.d.ts.map +1 -0
- package/dist/src/cli/commands-trace.js +347 -0
- package/dist/src/cli/commands-trace.js.map +1 -0
- package/dist/src/cli/commands.d.ts +22 -42
- package/dist/src/cli/commands.d.ts.map +1 -1
- package/dist/src/cli/commands.js +42 -3648
- package/dist/src/cli/commands.js.map +1 -1
- package/dist/src/cli/session.d.ts +47 -0
- package/dist/src/cli/session.d.ts.map +1 -0
- package/dist/src/cli/session.js +343 -0
- package/dist/src/cli/session.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/__tests__/bridge-instruments.test.ts +180 -0
- package/src/__tests__/bridge-transport.test.ts +365 -0
- package/src/__tests__/cdp-transport.test.ts +198 -0
- package/src/browser/bridge.ts +354 -0
- package/src/browser/cdp.ts +57 -52
- package/src/browser/index.ts +2 -0
- package/src/browser/transport.ts +111 -0
- package/src/cli/commander-adapter.ts +65 -0
- package/src/cli/commands-context.ts +367 -0
- package/src/cli/commands-data.ts +248 -0
- package/src/cli/commands-element.ts +305 -0
- package/src/cli/commands-files.ts +248 -0
- package/src/cli/commands-input.ts +434 -0
- package/src/cli/commands-navigate.ts +442 -0
- package/src/cli/commands-page.ts +420 -0
- package/src/cli/commands-report.ts +275 -0
- package/src/cli/commands-script.ts +183 -0
- package/src/cli/commands-session.ts +376 -0
- package/src/cli/commands-trace.ts +349 -0
- package/src/cli/commands.ts +95 -3943
- package/src/cli/session.ts +412 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recording what the page does — network interception and capture, HAR export,
|
|
3
|
+
* video recording, DevTools traces, CPU profiles and Web Vitals.
|
|
4
|
+
*/
|
|
5
|
+
import type { Command } from './types.js';
|
|
6
|
+
export declare const networkCommand: Command;
|
|
7
|
+
export declare const recordCommand: Command;
|
|
8
|
+
export declare const traceCommand: Command;
|
|
9
|
+
export declare const profilerCommand: Command;
|
|
10
|
+
export declare const vitalsCommand: Command;
|
|
11
|
+
export declare const harCommand: Command;
|
|
12
|
+
//# sourceMappingURL=commands-trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands-trace.d.ts","sourceRoot":"","sources":["../../../src/cli/commands-trace.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,YAAY,CAAC;AAEzE,eAAO,MAAM,cAAc,EAAE,OA6I5B,CAAC;AAQF,eAAO,MAAM,aAAa,EAAE,OAuD3B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,OAiC1B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,OAoC7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,OAkB3B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,OAuCxB,CAAC"}
|
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recording what the page does — network interception and capture, HAR export,
|
|
3
|
+
* video recording, DevTools traces, CPU profiles and Web Vitals.
|
|
4
|
+
*/
|
|
5
|
+
import { output } from './output.js';
|
|
6
|
+
import { ensureConnected, getBrowser, imageFormat, print, session } from './session.js';
|
|
7
|
+
export const networkCommand = {
|
|
8
|
+
name: 'network',
|
|
9
|
+
description: 'Network interception and cookie management',
|
|
10
|
+
options: [
|
|
11
|
+
{ name: 'pattern', type: 'string', description: 'URL pattern for route (glob)' },
|
|
12
|
+
{ name: 'abort', type: 'boolean', description: 'Abort matching requests' },
|
|
13
|
+
{ name: 'fulfill', type: 'string', description: 'JSON response body' },
|
|
14
|
+
{ name: 'status', type: 'number', description: 'HTTP status for fulfill', default: 200 },
|
|
15
|
+
{ name: 'headers', type: 'string', description: 'JSON headers object' },
|
|
16
|
+
{ name: 'json', type: 'boolean', description: 'Output as JSON', default: false },
|
|
17
|
+
{
|
|
18
|
+
name: 'filter',
|
|
19
|
+
type: 'string',
|
|
20
|
+
description: 'Filter requests by URL substring (for network requests)',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: 'method',
|
|
24
|
+
type: 'string',
|
|
25
|
+
description: 'Filter by HTTP method, e.g. GET, POST (for network requests)',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: 'status-code',
|
|
29
|
+
type: 'number',
|
|
30
|
+
description: 'Filter by HTTP status code (for network requests)',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: 'type',
|
|
34
|
+
type: 'string',
|
|
35
|
+
description: 'Filter by resource type: xhr|fetch|document|script|stylesheet|image (for network requests)',
|
|
36
|
+
},
|
|
37
|
+
],
|
|
38
|
+
action: async (ctx) => {
|
|
39
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
40
|
+
const browser = await getBrowser();
|
|
41
|
+
const action = ctx.args[0];
|
|
42
|
+
if (!action)
|
|
43
|
+
throw new Error('Usage: monomind browse network route|unroute|cookies|headers|requests');
|
|
44
|
+
switch (action) {
|
|
45
|
+
case 'route': {
|
|
46
|
+
const pattern = ctx.flags.pattern;
|
|
47
|
+
if (!pattern)
|
|
48
|
+
throw new Error('--pattern required for network route');
|
|
49
|
+
const routes = [
|
|
50
|
+
{
|
|
51
|
+
pattern,
|
|
52
|
+
action: ctx.flags.abort ? 'abort' : ctx.flags.fulfill ? 'fulfill' : 'continue',
|
|
53
|
+
response: ctx.flags.fulfill
|
|
54
|
+
? {
|
|
55
|
+
status: ctx.flags.status,
|
|
56
|
+
body: ctx.flags.fulfill,
|
|
57
|
+
headers: ctx.flags.headers ? JSON.parse(ctx.flags.headers) : {},
|
|
58
|
+
}
|
|
59
|
+
: undefined,
|
|
60
|
+
},
|
|
61
|
+
];
|
|
62
|
+
await browser.setupRoutes(client, sessionId, routes);
|
|
63
|
+
output.printSuccess(`Network route set: ${pattern}`);
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
case 'unroute':
|
|
67
|
+
await browser.disableInterception(client, sessionId);
|
|
68
|
+
output.printSuccess('Network interception disabled');
|
|
69
|
+
break;
|
|
70
|
+
case 'cookies': {
|
|
71
|
+
const cookies = await browser.getCookies(client, sessionId);
|
|
72
|
+
print(JSON.stringify(cookies, null, 2));
|
|
73
|
+
return { success: true, data: { cookies } };
|
|
74
|
+
}
|
|
75
|
+
case 'headers': {
|
|
76
|
+
const headers = ctx.flags.headers;
|
|
77
|
+
if (!headers)
|
|
78
|
+
throw new Error('--headers required (JSON string)');
|
|
79
|
+
await browser.setExtraHeaders(client, sessionId, JSON.parse(headers));
|
|
80
|
+
output.printSuccess('Extra headers set');
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
case 'capture': {
|
|
84
|
+
const subAction = ctx.args[1] ?? 'start';
|
|
85
|
+
if (subAction === 'start') {
|
|
86
|
+
browser.startRequestCapture(client, sessionId);
|
|
87
|
+
output.printSuccess('Request capture started');
|
|
88
|
+
}
|
|
89
|
+
else if (subAction === 'stop') {
|
|
90
|
+
browser.stopRequestCapture(sessionId);
|
|
91
|
+
output.printSuccess('Request capture stopped');
|
|
92
|
+
}
|
|
93
|
+
else if (subAction === 'clear') {
|
|
94
|
+
browser.clearCapturedRequests(sessionId);
|
|
95
|
+
output.printSuccess('Captured requests cleared');
|
|
96
|
+
}
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
case 'requests': {
|
|
100
|
+
let reqs = browser.getCapturedRequests(sessionId);
|
|
101
|
+
const filterUrl = ctx.flags.filter;
|
|
102
|
+
const filterMethod = ctx.flags.method;
|
|
103
|
+
const filterStatus = ctx.flags['status-code'];
|
|
104
|
+
const filterType = ctx.flags.type;
|
|
105
|
+
if (filterUrl)
|
|
106
|
+
reqs = reqs.filter((r) => r.url.includes(filterUrl));
|
|
107
|
+
if (filterMethod)
|
|
108
|
+
reqs = reqs.filter((r) => (r.method ?? 'GET').toUpperCase() === filterMethod.toUpperCase());
|
|
109
|
+
if (filterStatus)
|
|
110
|
+
reqs = reqs.filter((r) => r.status === filterStatus);
|
|
111
|
+
if (filterType)
|
|
112
|
+
reqs = reqs.filter((r) => r.resourceType === filterType ||
|
|
113
|
+
r.type === filterType);
|
|
114
|
+
if (ctx.flags.json)
|
|
115
|
+
print(JSON.stringify({ data: reqs }));
|
|
116
|
+
else {
|
|
117
|
+
if (reqs.length === 0) {
|
|
118
|
+
output.printInfo('No captured requests. Run: network capture start');
|
|
119
|
+
}
|
|
120
|
+
else
|
|
121
|
+
for (const r of reqs)
|
|
122
|
+
print(` ${r.method ?? 'GET'} ${r.status ?? '-'} ${r.url}`);
|
|
123
|
+
}
|
|
124
|
+
return { success: true, data: { requests: reqs } };
|
|
125
|
+
}
|
|
126
|
+
case 'request': {
|
|
127
|
+
const reqId = ctx.args[1];
|
|
128
|
+
if (!reqId)
|
|
129
|
+
throw new Error('Usage: monomind browse network request <requestId>');
|
|
130
|
+
const reqs = browser.getCapturedRequests(sessionId);
|
|
131
|
+
const req = reqs.find((r) => r.requestId === reqId ||
|
|
132
|
+
r.id === reqId);
|
|
133
|
+
if (!req) {
|
|
134
|
+
output.printWarning(`Request not found: ${reqId}`);
|
|
135
|
+
return { success: false };
|
|
136
|
+
}
|
|
137
|
+
if (ctx.flags.json)
|
|
138
|
+
print(JSON.stringify({ data: req }));
|
|
139
|
+
else
|
|
140
|
+
print(JSON.stringify(req, null, 2));
|
|
141
|
+
return { success: true, data: { request: req } };
|
|
142
|
+
}
|
|
143
|
+
default:
|
|
144
|
+
throw new Error(`Unknown: ${action}. Use: route|unroute|cookies|headers|capture|requests|request`);
|
|
145
|
+
}
|
|
146
|
+
return { success: true };
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
// Default output cap for eval when --max-output isn't passed explicitly —
|
|
150
|
+
// print(String(result)) had NO limit at all (unlike snapshot's --max-output),
|
|
151
|
+
// so e.g. `eval "document.documentElement.outerHTML"` could dump megabytes
|
|
152
|
+
// straight into an agent's context. An explicit --max-output still overrides
|
|
153
|
+
// this default.
|
|
154
|
+
export const recordCommand = {
|
|
155
|
+
name: 'record',
|
|
156
|
+
description: 'Screen recording. Usage: monomind browse record start|stop|restart|status [path]',
|
|
157
|
+
options: [
|
|
158
|
+
{ name: 'format', type: 'string', description: 'jpeg|png', default: 'jpeg' },
|
|
159
|
+
{ name: 'quality', type: 'number', description: 'Quality 0-100', default: 80 },
|
|
160
|
+
{ name: 'json', type: 'boolean', description: 'Output as JSON', default: false },
|
|
161
|
+
],
|
|
162
|
+
action: async (ctx) => {
|
|
163
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
164
|
+
const browser = await getBrowser();
|
|
165
|
+
const action = ctx.args[0];
|
|
166
|
+
if (!action)
|
|
167
|
+
throw new Error('Usage: monomind browse record start|stop|restart|status');
|
|
168
|
+
switch (action) {
|
|
169
|
+
case 'start':
|
|
170
|
+
await browser.startRecording(client, sessionId, {
|
|
171
|
+
format: imageFormat(ctx.flags.format, ['jpeg', 'png'], 'jpeg'),
|
|
172
|
+
quality: ctx.flags.quality,
|
|
173
|
+
});
|
|
174
|
+
output.printSuccess('Recording started');
|
|
175
|
+
return { success: true };
|
|
176
|
+
case 'stop': {
|
|
177
|
+
const path = await browser.stopRecording(client, sessionId, ctx.args[1]);
|
|
178
|
+
if (ctx.flags.json)
|
|
179
|
+
print(JSON.stringify({ data: { path } }));
|
|
180
|
+
else
|
|
181
|
+
output.printSuccess(`Recording saved: ${path}`);
|
|
182
|
+
return { success: true, data: { path } };
|
|
183
|
+
}
|
|
184
|
+
case 'restart': {
|
|
185
|
+
const prevStatus = browser.getRecordingStatus(sessionId);
|
|
186
|
+
let prevPath;
|
|
187
|
+
if (prevStatus.recording || prevStatus.autoStopped) {
|
|
188
|
+
prevPath = await browser.stopRecording(client, sessionId, ctx.args[1]);
|
|
189
|
+
output.printInfo(`Previous recording saved: ${prevPath}`);
|
|
190
|
+
}
|
|
191
|
+
await browser.startRecording(client, sessionId, {
|
|
192
|
+
format: imageFormat(ctx.flags.format, ['jpeg', 'png'], 'jpeg'),
|
|
193
|
+
quality: ctx.flags.quality,
|
|
194
|
+
});
|
|
195
|
+
output.printSuccess('Recording restarted');
|
|
196
|
+
return { success: true, data: { previous: prevPath } };
|
|
197
|
+
}
|
|
198
|
+
case 'status': {
|
|
199
|
+
const status = browser.getRecordingStatus(sessionId);
|
|
200
|
+
if (ctx.flags.json)
|
|
201
|
+
print(JSON.stringify({ data: status }));
|
|
202
|
+
else
|
|
203
|
+
print(`Recording: ${status.recording} | Frames: ${status.frames}${status.autoStopped ? ' (auto-stopped: buffer limit reached — run "record stop" to save)' : ''}`);
|
|
204
|
+
return { success: true, data: status };
|
|
205
|
+
}
|
|
206
|
+
default:
|
|
207
|
+
throw new Error('Usage: monomind browse record start|stop|restart|status [path]');
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
};
|
|
211
|
+
export const traceCommand = {
|
|
212
|
+
name: 'trace',
|
|
213
|
+
description: 'CDP performance trace. Usage: monomind browse trace start|stop [path]',
|
|
214
|
+
options: [
|
|
215
|
+
{ name: 'screenshots', type: 'boolean', description: 'Include screenshots', default: false },
|
|
216
|
+
{ name: 'json', type: 'boolean', description: 'Output as JSON', default: false },
|
|
217
|
+
],
|
|
218
|
+
action: async (ctx) => {
|
|
219
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
220
|
+
const browser = await getBrowser();
|
|
221
|
+
const action = ctx.args[0];
|
|
222
|
+
if (!action)
|
|
223
|
+
throw new Error('Usage: monomind browse trace start|stop [path]');
|
|
224
|
+
switch (action) {
|
|
225
|
+
case 'start':
|
|
226
|
+
await browser.startTrace(client, sessionId, {
|
|
227
|
+
screenshots: ctx.flags.screenshots,
|
|
228
|
+
});
|
|
229
|
+
output.printSuccess('Trace started');
|
|
230
|
+
return { success: true };
|
|
231
|
+
case 'stop': {
|
|
232
|
+
const path = await browser.stopTrace(client, sessionId, ctx.args[1]);
|
|
233
|
+
if (ctx.flags.json)
|
|
234
|
+
print(JSON.stringify({ data: { path } }));
|
|
235
|
+
else
|
|
236
|
+
output.printSuccess(`Trace saved: ${path}`);
|
|
237
|
+
return { success: true, data: { path } };
|
|
238
|
+
}
|
|
239
|
+
case 'status':
|
|
240
|
+
print(browser.getTraceStatus(sessionId) ? 'Tracing active' : 'Not tracing');
|
|
241
|
+
return { success: true };
|
|
242
|
+
default:
|
|
243
|
+
throw new Error('Usage: monomind browse trace start|stop|status [path]');
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
};
|
|
247
|
+
export const profilerCommand = {
|
|
248
|
+
name: 'profiler',
|
|
249
|
+
description: 'CPU profiler. Usage: monomind browse profiler start|stop|heap [path]',
|
|
250
|
+
options: [
|
|
251
|
+
{ name: 'interval', type: 'number', description: 'Sampling interval µs', default: 1000 },
|
|
252
|
+
{ name: 'json', type: 'boolean', description: 'Output as JSON', default: false },
|
|
253
|
+
],
|
|
254
|
+
action: async (ctx) => {
|
|
255
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
256
|
+
const browser = await getBrowser();
|
|
257
|
+
const action = ctx.args[0];
|
|
258
|
+
if (!action)
|
|
259
|
+
throw new Error('Usage: monomind browse profiler start|stop|heap [path]');
|
|
260
|
+
switch (action) {
|
|
261
|
+
case 'start':
|
|
262
|
+
await browser.startCpuProfile(client, sessionId, {
|
|
263
|
+
samplingInterval: ctx.flags.interval,
|
|
264
|
+
});
|
|
265
|
+
output.printSuccess('CPU profiler started');
|
|
266
|
+
return { success: true };
|
|
267
|
+
case 'stop': {
|
|
268
|
+
const path = await browser.stopCpuProfile(client, sessionId, ctx.args[1]);
|
|
269
|
+
if (ctx.flags.json)
|
|
270
|
+
print(JSON.stringify({ data: { path } }));
|
|
271
|
+
else
|
|
272
|
+
output.printSuccess(`Profile saved: ${path}`);
|
|
273
|
+
return { success: true, data: { path } };
|
|
274
|
+
}
|
|
275
|
+
case 'heap': {
|
|
276
|
+
const path = await browser.startHeapSnapshot(client, sessionId, ctx.args[1]);
|
|
277
|
+
if (ctx.flags.json)
|
|
278
|
+
print(JSON.stringify({ data: { path } }));
|
|
279
|
+
else
|
|
280
|
+
output.printSuccess(`Heap snapshot saved: ${path}`);
|
|
281
|
+
return { success: true, data: { path } };
|
|
282
|
+
}
|
|
283
|
+
default:
|
|
284
|
+
throw new Error('Usage: monomind browse profiler start|stop|heap [path]');
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
};
|
|
288
|
+
export const vitalsCommand = {
|
|
289
|
+
name: 'vitals',
|
|
290
|
+
description: 'Collect Core Web Vitals. Usage: monomind browse vitals [--wait 2000]',
|
|
291
|
+
options: [
|
|
292
|
+
{ name: 'wait', type: 'number', description: 'Wait ms for observers', default: 2000 },
|
|
293
|
+
{ name: 'json', type: 'boolean', description: 'Output as JSON', default: false },
|
|
294
|
+
],
|
|
295
|
+
action: async (ctx) => {
|
|
296
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
297
|
+
const browser = await getBrowser();
|
|
298
|
+
const vitals = await browser.collectVitals(client, sessionId, ctx.flags.wait);
|
|
299
|
+
if (ctx.flags.json) {
|
|
300
|
+
print(JSON.stringify({ data: vitals }));
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
print(browser.formatVitals(vitals));
|
|
304
|
+
}
|
|
305
|
+
return { success: true, data: vitals };
|
|
306
|
+
},
|
|
307
|
+
};
|
|
308
|
+
export const harCommand = {
|
|
309
|
+
name: 'har',
|
|
310
|
+
description: 'HAR network recording. Usage: monomind browse har start|stop|status [path]',
|
|
311
|
+
options: [
|
|
312
|
+
{ name: 'bodies', type: 'boolean', description: 'Capture response bodies', default: false },
|
|
313
|
+
{ name: 'json', type: 'boolean', description: 'Output as JSON', default: false },
|
|
314
|
+
],
|
|
315
|
+
action: async (ctx) => {
|
|
316
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
317
|
+
const browser = await getBrowser();
|
|
318
|
+
const action = ctx.args[0];
|
|
319
|
+
if (!action)
|
|
320
|
+
throw new Error('Usage: monomind browse har start|stop|status [path]');
|
|
321
|
+
switch (action) {
|
|
322
|
+
case 'start':
|
|
323
|
+
await browser.startHarRecording(client, sessionId);
|
|
324
|
+
output.printSuccess('HAR recording started');
|
|
325
|
+
return { success: true };
|
|
326
|
+
case 'stop': {
|
|
327
|
+
const path = await browser.stopHarRecording(client, sessionId, ctx.args[1], ctx.flags.bodies);
|
|
328
|
+
if (ctx.flags.json)
|
|
329
|
+
print(JSON.stringify({ data: { path } }));
|
|
330
|
+
else
|
|
331
|
+
output.printSuccess(`HAR saved: ${path}`);
|
|
332
|
+
return { success: true, data: { path } };
|
|
333
|
+
}
|
|
334
|
+
case 'status': {
|
|
335
|
+
const status = browser.getHarStatus(sessionId);
|
|
336
|
+
if (ctx.flags.json)
|
|
337
|
+
print(JSON.stringify({ data: status }));
|
|
338
|
+
else
|
|
339
|
+
print(`Recording: ${status.recording} | Requests: ${status.requestCount}`);
|
|
340
|
+
return { success: true, data: status };
|
|
341
|
+
}
|
|
342
|
+
default:
|
|
343
|
+
throw new Error('Usage: monomind browse har start|stop|status [path]');
|
|
344
|
+
}
|
|
345
|
+
},
|
|
346
|
+
};
|
|
347
|
+
//# sourceMappingURL=commands-trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands-trace.js","sourceRoot":"","sources":["../../../src/cli/commands-trace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,51 +1,31 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Browse Command — Native browser automation via Chrome DevTools Protocol
|
|
3
3
|
* Provides ref-based element model and token-efficient accessibility snapshots
|
|
4
|
-
*/
|
|
5
|
-
import type { Command } from './types.js';
|
|
6
|
-
/**
|
|
7
|
-
* Splits one line of a `batch` command string into a subcommand name, its
|
|
8
|
-
* args, and any recognized leading flags.
|
|
9
4
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* them — correct for a value like `fill @e1 "some text"`, but for `eval` it
|
|
15
|
-
* silently deletes the expression's own quotes, turning a string literal
|
|
16
|
-
* into a bare (undefined) identifier reference and producing a
|
|
17
|
-
* ReferenceError instead of evaluating the intended expression. For `eval`,
|
|
18
|
-
* only its own known --flags are consumed from the front; everything after
|
|
19
|
-
* them is taken verbatim as one argument, untouched by tokenization.
|
|
5
|
+
* This file is the command CATALOGUE: it assembles the `browse` root command
|
|
6
|
+
* from the subcommand modules beside it and stays the single import point for
|
|
7
|
+
* the package. The subcommands themselves are grouped by what the user is
|
|
8
|
+
* doing:
|
|
20
9
|
*
|
|
21
|
-
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* `
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
10
|
+
* - `session.ts` the live CDP session every subcommand acts on,
|
|
11
|
+
* plus the shared flag/output helpers.
|
|
12
|
+
* - `commands-session.ts` open / connect / close / resize.
|
|
13
|
+
* - `commands-context.ts` frame / tab / window / state.
|
|
14
|
+
* - `commands-page.ts` snapshot / get / diff.
|
|
15
|
+
* - `commands-navigate.ts` wait / scroll / navigate / set / pushstate.
|
|
16
|
+
* - `commands-input.ts` mouse, keyboard, touch and drag input.
|
|
17
|
+
* - `commands-element.ts` find / is / isvisible / isenabled / ischecked /
|
|
18
|
+
* highlight.
|
|
19
|
+
* - `commands-files.ts` screenshot / pdf / upload / download.
|
|
20
|
+
* - `commands-data.ts` storage / cookies / clipboard / dialog /
|
|
21
|
+
* console / errors.
|
|
22
|
+
* - `commands-trace.ts` network / record / trace / profiler / vitals / har.
|
|
23
|
+
* - `commands-script.ts` eval / batch / init scripts.
|
|
24
|
+
* - `commands-report.ts` the one-command page report.
|
|
30
25
|
*/
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
width: number;
|
|
35
|
-
height: number;
|
|
36
|
-
} | null): {
|
|
37
|
-
x: number;
|
|
38
|
-
y: number;
|
|
39
|
-
width: number;
|
|
40
|
-
height: number;
|
|
41
|
-
centerX: number;
|
|
42
|
-
centerY: number;
|
|
43
|
-
} | null;
|
|
44
|
-
export declare function parseBatchCommandLine(cmdStr: string): {
|
|
45
|
-
subName: string;
|
|
46
|
-
subArgs: string[];
|
|
47
|
-
flags: Record<string, unknown>;
|
|
48
|
-
};
|
|
26
|
+
import type { Command } from './types.js';
|
|
27
|
+
export { deriveBoxOutput } from './commands-page.js';
|
|
28
|
+
export { parseBatchCommandLine } from './commands-script.js';
|
|
49
29
|
declare const browseCommand: Command;
|
|
50
30
|
export default browseCommand;
|
|
51
31
|
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAoEH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,YAAY,CAAC;AAIzE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAyH7D,QAAA,MAAM,aAAa,EAAE,OA+JpB,CAAC;eAEa,aAAa"}
|