@monoes/monobrowse 1.0.13 → 1.0.15
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/browser.d.ts.map +1 -1
- package/dist/src/browser/browser.js +11 -0
- package/dist/src/browser/browser.js.map +1 -1
- 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/browser.ts +12 -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,399 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Acting on elements — mouse, keyboard, touch and drag input.
|
|
3
|
+
*
|
|
4
|
+
* Every command here targets an element by `@eN` ref or CSS selector and
|
|
5
|
+
* performs a real input event through CDP, rather than scripting the DOM.
|
|
6
|
+
*/
|
|
7
|
+
import { output } from './output.js';
|
|
8
|
+
import { ensureConnected, getBrowser, session } from './session.js';
|
|
9
|
+
export const clickCommand = {
|
|
10
|
+
name: 'click',
|
|
11
|
+
description: 'Click an element by ref (@e1) or coordinates. Usage: monomind browse click @e1',
|
|
12
|
+
options: [
|
|
13
|
+
{ name: 'right', type: 'boolean', description: 'Right-click', default: false },
|
|
14
|
+
{ name: 'double', type: 'boolean', description: 'Double-click', default: false },
|
|
15
|
+
{ name: 'x', type: 'number', description: 'X coordinate (for point click)' },
|
|
16
|
+
{ name: 'y', type: 'number', description: 'Y coordinate (for point click)' },
|
|
17
|
+
],
|
|
18
|
+
action: async (ctx) => {
|
|
19
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
20
|
+
const browser = await getBrowser();
|
|
21
|
+
const refArg = ctx.args[0];
|
|
22
|
+
if (!refArg && ctx.flags.x === undefined)
|
|
23
|
+
throw new Error('Ref (@e1) or --x/--y required');
|
|
24
|
+
if (ctx.flags.x !== undefined && ctx.flags.y !== undefined) {
|
|
25
|
+
await browser.clickPoint(client, sessionId, ctx.flags.x, ctx.flags.y);
|
|
26
|
+
output.printSuccess(`Clicked at (${ctx.flags.x}, ${ctx.flags.y})`);
|
|
27
|
+
return { success: true };
|
|
28
|
+
}
|
|
29
|
+
const refKey = refArg.startsWith('@') ? refArg.slice(1) : refArg;
|
|
30
|
+
const ref = await browser.resolveRef(client, sessionId, session.refs, refKey);
|
|
31
|
+
await browser.clickElement(client, sessionId, ref, {
|
|
32
|
+
button: ctx.flags.right ? 'right' : 'left',
|
|
33
|
+
clickCount: ctx.flags.double ? 2 : 1,
|
|
34
|
+
});
|
|
35
|
+
output.printSuccess(`Clicked: ${ref.role} "${ref.name}"`);
|
|
36
|
+
return { success: true };
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
export const fillCommand = {
|
|
40
|
+
name: 'fill',
|
|
41
|
+
description: 'Fill an input element. Usage: monomind browse fill @e1 "text value"',
|
|
42
|
+
action: async (ctx) => {
|
|
43
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
44
|
+
const browser = await getBrowser();
|
|
45
|
+
const refArg = ctx.args[0];
|
|
46
|
+
const value = ctx.args[1];
|
|
47
|
+
if (!refArg || value === undefined)
|
|
48
|
+
throw new Error('Usage: monomind browse fill @e1 "value"');
|
|
49
|
+
const refKey = refArg.startsWith('@') ? refArg.slice(1) : refArg;
|
|
50
|
+
const ref = await browser.resolveRef(client, sessionId, session.refs, refKey);
|
|
51
|
+
await browser.fillElement(client, sessionId, ref, value);
|
|
52
|
+
output.printSuccess(`Filled: ${ref.role} "${ref.name}"`);
|
|
53
|
+
return { success: true };
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
export const pressCommand = {
|
|
57
|
+
name: 'press',
|
|
58
|
+
description: 'Press a keyboard key. Usage: monomind browse press Enter',
|
|
59
|
+
action: async (ctx) => {
|
|
60
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
61
|
+
const browser = await getBrowser();
|
|
62
|
+
const key = ctx.args[0];
|
|
63
|
+
if (!key)
|
|
64
|
+
throw new Error('Key required. E.g.: monomind browse press Enter');
|
|
65
|
+
await browser.pressKey(client, sessionId, key);
|
|
66
|
+
output.printSuccess(`Pressed: ${key}`);
|
|
67
|
+
return { success: true };
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
export const dblclickCommand = {
|
|
71
|
+
name: 'dblclick',
|
|
72
|
+
description: 'Double-click an element. Usage: monomind browse dblclick @e1',
|
|
73
|
+
action: async (ctx) => {
|
|
74
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
75
|
+
const browser = await getBrowser();
|
|
76
|
+
const refArg = ctx.args[0];
|
|
77
|
+
if (!refArg)
|
|
78
|
+
throw new Error('Usage: monomind browse dblclick @e1');
|
|
79
|
+
const refKey = refArg.startsWith('@') ? refArg.slice(1) : refArg;
|
|
80
|
+
const ref = await browser.resolveRef(client, sessionId, session.refs, refKey);
|
|
81
|
+
await browser.clickElement(client, sessionId, ref, { clickCount: 2 });
|
|
82
|
+
output.printSuccess(`Double-clicked: ${ref.role} "${ref.name}"`);
|
|
83
|
+
return { success: true };
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
export const focusCommand = {
|
|
87
|
+
name: 'focus',
|
|
88
|
+
description: 'Focus an element. Usage: monomind browse focus @e1',
|
|
89
|
+
action: async (ctx) => {
|
|
90
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
91
|
+
const browser = await getBrowser();
|
|
92
|
+
const refArg = ctx.args[0];
|
|
93
|
+
if (!refArg)
|
|
94
|
+
throw new Error('Usage: monomind browse focus @e1');
|
|
95
|
+
const refKey = refArg.startsWith('@') ? refArg.slice(1) : refArg;
|
|
96
|
+
const ref = await browser.resolveRef(client, sessionId, session.refs, refKey);
|
|
97
|
+
await browser.focusElement(client, sessionId, ref);
|
|
98
|
+
output.printSuccess(`Focused: ${ref.role} "${ref.name}"`);
|
|
99
|
+
return { success: true };
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
export const typeCommand = {
|
|
103
|
+
name: 'type',
|
|
104
|
+
description: 'Type text into element (appends, does not clear). Usage: monomind browse type @e1 "text"',
|
|
105
|
+
action: async (ctx) => {
|
|
106
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
107
|
+
const browser = await getBrowser();
|
|
108
|
+
const refArg = ctx.args[0];
|
|
109
|
+
const value = ctx.args[1];
|
|
110
|
+
if (!refArg || value === undefined)
|
|
111
|
+
throw new Error('Usage: monomind browse type @e1 "value"');
|
|
112
|
+
const refKey = refArg.startsWith('@') ? refArg.slice(1) : refArg;
|
|
113
|
+
const ref = await browser.resolveRef(client, sessionId, session.refs, refKey);
|
|
114
|
+
await browser.typeIntoElement(client, sessionId, ref, value);
|
|
115
|
+
output.printSuccess(`Typed into: ${ref.role} "${ref.name}"`);
|
|
116
|
+
return { success: true };
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
export const keyboardCommand = {
|
|
120
|
+
name: 'keyboard',
|
|
121
|
+
description: 'Keyboard commands. Usage: monomind browse keyboard type "text" | inserttext "text"',
|
|
122
|
+
action: async (ctx) => {
|
|
123
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
124
|
+
const browser = await getBrowser();
|
|
125
|
+
const action = ctx.args[0];
|
|
126
|
+
const text = ctx.args[1];
|
|
127
|
+
if (!action || !text)
|
|
128
|
+
throw new Error('Usage: monomind browse keyboard type|inserttext "text"');
|
|
129
|
+
await browser.typeText(client, sessionId, text);
|
|
130
|
+
output.printSuccess(`Keyboard ${action}: ${text.length} chars`);
|
|
131
|
+
return { success: true };
|
|
132
|
+
},
|
|
133
|
+
};
|
|
134
|
+
export const keydownCommand = {
|
|
135
|
+
name: 'keydown',
|
|
136
|
+
description: 'Hold key down. Usage: monomind browse keydown Shift',
|
|
137
|
+
action: async (ctx) => {
|
|
138
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
139
|
+
const browser = await getBrowser();
|
|
140
|
+
const key = ctx.args[0];
|
|
141
|
+
if (!key)
|
|
142
|
+
throw new Error('Usage: monomind browse keydown <key>');
|
|
143
|
+
await browser.keyDown(client, sessionId, key);
|
|
144
|
+
output.printSuccess(`Key down: ${key}`);
|
|
145
|
+
return { success: true };
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
export const keyupCommand = {
|
|
149
|
+
name: 'keyup',
|
|
150
|
+
description: 'Release held key. Usage: monomind browse keyup Shift',
|
|
151
|
+
action: async (ctx) => {
|
|
152
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
153
|
+
const browser = await getBrowser();
|
|
154
|
+
const key = ctx.args[0];
|
|
155
|
+
if (!key)
|
|
156
|
+
throw new Error('Usage: monomind browse keyup <key>');
|
|
157
|
+
await browser.keyUp(client, sessionId, key);
|
|
158
|
+
output.printSuccess(`Key up: ${key}`);
|
|
159
|
+
return { success: true };
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
export const hoverCommand = {
|
|
163
|
+
name: 'hover',
|
|
164
|
+
description: 'Hover over an element. Usage: monomind browse hover @e1',
|
|
165
|
+
action: async (ctx) => {
|
|
166
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
167
|
+
const browser = await getBrowser();
|
|
168
|
+
const refArg = ctx.args[0];
|
|
169
|
+
if (!refArg)
|
|
170
|
+
throw new Error('Usage: monomind browse hover @e1');
|
|
171
|
+
const refKey = refArg.startsWith('@') ? refArg.slice(1) : refArg;
|
|
172
|
+
const ref = await browser.resolveRef(client, sessionId, session.refs, refKey);
|
|
173
|
+
await browser.hoverElement(client, sessionId, ref);
|
|
174
|
+
output.printSuccess(`Hovered: ${ref.role} "${ref.name}"`);
|
|
175
|
+
return { success: true };
|
|
176
|
+
},
|
|
177
|
+
};
|
|
178
|
+
export const selectCommand = {
|
|
179
|
+
name: 'select',
|
|
180
|
+
description: 'Select a dropdown option. Usage: monomind browse select @e1 "Option text"',
|
|
181
|
+
action: async (ctx) => {
|
|
182
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
183
|
+
const browser = await getBrowser();
|
|
184
|
+
const refArg = ctx.args[0];
|
|
185
|
+
const value = ctx.args[1];
|
|
186
|
+
if (!refArg || !value)
|
|
187
|
+
throw new Error('Usage: monomind browse select @e1 "value"');
|
|
188
|
+
const refKey = refArg.startsWith('@') ? refArg.slice(1) : refArg;
|
|
189
|
+
const ref = await browser.resolveRef(client, sessionId, session.refs, refKey);
|
|
190
|
+
await browser.selectOption(client, sessionId, ref, value);
|
|
191
|
+
output.printSuccess(`Selected: "${value}"`);
|
|
192
|
+
return { success: true };
|
|
193
|
+
},
|
|
194
|
+
};
|
|
195
|
+
export const checkCommand = {
|
|
196
|
+
name: 'check',
|
|
197
|
+
description: 'Check a checkbox. Usage: monomind browse check @e1',
|
|
198
|
+
action: async (ctx) => {
|
|
199
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
200
|
+
const browser = await getBrowser();
|
|
201
|
+
const refArg = ctx.args[0];
|
|
202
|
+
if (!refArg)
|
|
203
|
+
throw new Error('Usage: monomind browse check @e1');
|
|
204
|
+
const refKey = refArg.startsWith('@') ? refArg.slice(1) : refArg;
|
|
205
|
+
const ref = await browser.resolveRef(client, sessionId, session.refs, refKey);
|
|
206
|
+
await browser.checkElement(client, sessionId, ref, true);
|
|
207
|
+
output.printSuccess(`Checked: ${ref.role} "${ref.name}"`);
|
|
208
|
+
return { success: true };
|
|
209
|
+
},
|
|
210
|
+
};
|
|
211
|
+
export const uncheckCommand = {
|
|
212
|
+
name: 'uncheck',
|
|
213
|
+
description: 'Uncheck a checkbox. Usage: monomind browse uncheck @e1',
|
|
214
|
+
action: async (ctx) => {
|
|
215
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
216
|
+
const browser = await getBrowser();
|
|
217
|
+
const refArg = ctx.args[0];
|
|
218
|
+
if (!refArg)
|
|
219
|
+
throw new Error('Usage: monomind browse uncheck @e1');
|
|
220
|
+
const refKey = refArg.startsWith('@') ? refArg.slice(1) : refArg;
|
|
221
|
+
const ref = await browser.resolveRef(client, sessionId, session.refs, refKey);
|
|
222
|
+
await browser.checkElement(client, sessionId, ref, false);
|
|
223
|
+
output.printSuccess(`Unchecked: ${ref.role} "${ref.name}"`);
|
|
224
|
+
return { success: true };
|
|
225
|
+
},
|
|
226
|
+
};
|
|
227
|
+
export const tapCommand = {
|
|
228
|
+
name: 'tap',
|
|
229
|
+
description: 'Tap element with a touch event (mobile testing). Usage: monomind browse tap @e1|"selector"',
|
|
230
|
+
action: async (ctx) => {
|
|
231
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
232
|
+
const browser = await getBrowser();
|
|
233
|
+
const arg = ctx.args[0];
|
|
234
|
+
if (!arg)
|
|
235
|
+
throw new Error('Usage: monomind browse tap @e1|".selector"');
|
|
236
|
+
// Get element center position
|
|
237
|
+
let x, y;
|
|
238
|
+
if (arg.startsWith('@') || /^e\d+$/.test(arg)) {
|
|
239
|
+
const key = arg.startsWith('@') ? arg.slice(1) : arg;
|
|
240
|
+
const ref = await browser.resolveRef(client, sessionId, session.refs, key);
|
|
241
|
+
const box = await browser.getElementBox(client, sessionId, ref);
|
|
242
|
+
if (!box)
|
|
243
|
+
throw new Error(`Cannot get bounds for @${key}`);
|
|
244
|
+
// box.x/box.y from getElementBox() ARE already the center point (see
|
|
245
|
+
// its own doc comment) — adding width/2 here double-offset the tap
|
|
246
|
+
// target away from the element (issue #15).
|
|
247
|
+
x = Math.round(box.x);
|
|
248
|
+
y = Math.round(box.y);
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
const posJson = (await browser.evaluateJs(client, sessionId, `(function(){var el=document.querySelector(${JSON.stringify(arg)});if(!el)return null;var r=el.getBoundingClientRect();return JSON.stringify({x:r.left+r.width/2,y:r.top+r.height/2});})()`));
|
|
252
|
+
if (!posJson)
|
|
253
|
+
throw new Error(`Selector not found: ${arg}`);
|
|
254
|
+
const pos = JSON.parse(posJson);
|
|
255
|
+
x = Math.round(pos.x);
|
|
256
|
+
y = Math.round(pos.y);
|
|
257
|
+
}
|
|
258
|
+
await client.send('Input.dispatchTouchEvent', { type: 'touchStart', touchPoints: [{ x, y }] }, sessionId);
|
|
259
|
+
await client.send('Input.dispatchTouchEvent', { type: 'touchEnd', touchPoints: [] }, sessionId);
|
|
260
|
+
output.printSuccess(`Tapped at (${x}, ${y})`);
|
|
261
|
+
return { success: true, data: { x, y } };
|
|
262
|
+
},
|
|
263
|
+
};
|
|
264
|
+
export const swipeCommand = {
|
|
265
|
+
name: 'swipe',
|
|
266
|
+
description: 'Swipe gesture (mobile). Usage: monomind browse swipe up|down|left|right [distance] [--x N] [--y N]',
|
|
267
|
+
options: [
|
|
268
|
+
{
|
|
269
|
+
name: 'x',
|
|
270
|
+
type: 'number',
|
|
271
|
+
description: 'Start X coordinate (default: center)',
|
|
272
|
+
default: 200,
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
name: 'y',
|
|
276
|
+
type: 'number',
|
|
277
|
+
description: 'Start Y coordinate (default: center)',
|
|
278
|
+
default: 400,
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
name: 'distance',
|
|
282
|
+
short: 'd',
|
|
283
|
+
type: 'number',
|
|
284
|
+
description: 'Swipe distance in pixels',
|
|
285
|
+
default: 300,
|
|
286
|
+
},
|
|
287
|
+
],
|
|
288
|
+
action: async (ctx) => {
|
|
289
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
290
|
+
const direction = ctx.args[0];
|
|
291
|
+
if (!['up', 'down', 'left', 'right'].includes(direction)) {
|
|
292
|
+
throw new Error('Usage: monomind browse swipe up|down|left|right [--x N] [--y N] [--distance N]');
|
|
293
|
+
}
|
|
294
|
+
const startX = ctx.flags.x ?? 200;
|
|
295
|
+
const startY = ctx.flags.y ?? 400;
|
|
296
|
+
const positionalDistance = ctx.args[1] !== undefined ? parseInt(ctx.args[1], 10) : undefined;
|
|
297
|
+
const distance = positionalDistance && Number.isFinite(positionalDistance)
|
|
298
|
+
? positionalDistance
|
|
299
|
+
: (ctx.flags.distance ?? 300);
|
|
300
|
+
const dx = direction === 'right' ? distance : direction === 'left' ? -distance : 0;
|
|
301
|
+
const dy = direction === 'down' ? distance : direction === 'up' ? -distance : 0;
|
|
302
|
+
await client.send('Input.dispatchTouchEvent', { type: 'touchStart', touchPoints: [{ x: startX, y: startY }] }, sessionId);
|
|
303
|
+
const steps = 10;
|
|
304
|
+
for (let i = 1; i <= steps; i++) {
|
|
305
|
+
const x = Math.round(startX + (dx * i) / steps);
|
|
306
|
+
const y = Math.round(startY + (dy * i) / steps);
|
|
307
|
+
await client.send('Input.dispatchTouchEvent', { type: 'touchMove', touchPoints: [{ x, y }] }, sessionId);
|
|
308
|
+
await new Promise((r) => setTimeout(r, 16));
|
|
309
|
+
}
|
|
310
|
+
await client.send('Input.dispatchTouchEvent', { type: 'touchEnd', touchPoints: [] }, sessionId);
|
|
311
|
+
output.printSuccess(`Swiped ${direction} ${distance}px from (${startX},${startY})`);
|
|
312
|
+
return { success: true, data: { direction, distance, startX, startY } };
|
|
313
|
+
},
|
|
314
|
+
};
|
|
315
|
+
export const scrollIntoViewCommand = {
|
|
316
|
+
name: 'scrollintoview',
|
|
317
|
+
description: 'Scroll element into view. Usage: monomind browse scrollintoview @e1',
|
|
318
|
+
action: async (ctx) => {
|
|
319
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
320
|
+
const browser = await getBrowser();
|
|
321
|
+
const refArg = ctx.args[0];
|
|
322
|
+
if (!refArg)
|
|
323
|
+
throw new Error('Usage: monomind browse scrollintoview @e1');
|
|
324
|
+
const refKey = refArg.startsWith('@') ? refArg.slice(1) : refArg;
|
|
325
|
+
const ref = await browser.resolveRef(client, sessionId, session.refs, refKey);
|
|
326
|
+
await browser.scrollIntoView(client, sessionId, ref);
|
|
327
|
+
output.printSuccess(`Scrolled into view: ${ref.role} "${ref.name}"`);
|
|
328
|
+
return { success: true };
|
|
329
|
+
},
|
|
330
|
+
};
|
|
331
|
+
export const dragCommand = {
|
|
332
|
+
name: 'drag',
|
|
333
|
+
description: 'Drag element to another element. Usage: monomind browse drag @e1 @e2',
|
|
334
|
+
action: async (ctx) => {
|
|
335
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
336
|
+
const browser = await getBrowser();
|
|
337
|
+
const srcArg = ctx.args[0];
|
|
338
|
+
const tgtArg = ctx.args[1];
|
|
339
|
+
if (!srcArg || !tgtArg)
|
|
340
|
+
throw new Error('Usage: monomind browse drag @e1 @e2');
|
|
341
|
+
const srcKey = srcArg.startsWith('@') ? srcArg.slice(1) : srcArg;
|
|
342
|
+
const tgtKey = tgtArg.startsWith('@') ? tgtArg.slice(1) : tgtArg;
|
|
343
|
+
const src = await browser.resolveRef(client, sessionId, session.refs, srcKey);
|
|
344
|
+
const tgt = await browser.resolveRef(client, sessionId, session.refs, tgtKey);
|
|
345
|
+
await browser.dragAndDrop(client, sessionId, src, tgt);
|
|
346
|
+
output.printSuccess(`Dragged @${srcKey} to @${tgtKey}`);
|
|
347
|
+
return { success: true };
|
|
348
|
+
},
|
|
349
|
+
};
|
|
350
|
+
export const mouseCommand = {
|
|
351
|
+
name: 'mouse',
|
|
352
|
+
description: 'Fine-grained mouse control. Usage: monomind browse mouse move|down|up|wheel <args>',
|
|
353
|
+
options: [
|
|
354
|
+
{ name: 'button', type: 'string', description: 'Button: left|right|middle', default: 'left' },
|
|
355
|
+
],
|
|
356
|
+
action: async (ctx) => {
|
|
357
|
+
const { client, sessionId } = await ensureConnected(session.port);
|
|
358
|
+
const browser = await getBrowser();
|
|
359
|
+
const action = ctx.args[0];
|
|
360
|
+
switch (action) {
|
|
361
|
+
case 'move': {
|
|
362
|
+
const x = parseFloat(ctx.args[1]);
|
|
363
|
+
const y = parseFloat(ctx.args[2]);
|
|
364
|
+
await browser.mouseMove(client, sessionId, x, y);
|
|
365
|
+
output.printSuccess(`Mouse moved to (${x}, ${y})`);
|
|
366
|
+
break;
|
|
367
|
+
}
|
|
368
|
+
case 'down': {
|
|
369
|
+
const x = parseFloat(ctx.args[1]) || 0;
|
|
370
|
+
const y = parseFloat(ctx.args[2]) || 0;
|
|
371
|
+
const button = ctx.flags.button ?? 'left';
|
|
372
|
+
await browser.mouseDown(client, sessionId, x, y, button);
|
|
373
|
+
output.printSuccess(`Mouse down at (${x}, ${y})`);
|
|
374
|
+
break;
|
|
375
|
+
}
|
|
376
|
+
case 'up': {
|
|
377
|
+
const x = parseFloat(ctx.args[1]) || 0;
|
|
378
|
+
const y = parseFloat(ctx.args[2]) || 0;
|
|
379
|
+
const button = ctx.flags.button ?? 'left';
|
|
380
|
+
await browser.mouseUp(client, sessionId, x, y, button);
|
|
381
|
+
output.printSuccess(`Mouse up at (${x}, ${y})`);
|
|
382
|
+
break;
|
|
383
|
+
}
|
|
384
|
+
case 'wheel': {
|
|
385
|
+
const x = parseFloat(ctx.args[1]) || 0;
|
|
386
|
+
const y = parseFloat(ctx.args[2]) || 0;
|
|
387
|
+
const dy = parseFloat(ctx.args[3]) || 0;
|
|
388
|
+
const dx = parseFloat(ctx.args[4]) || 0;
|
|
389
|
+
await browser.mouseWheel(client, sessionId, x, y, dy, dx);
|
|
390
|
+
output.printSuccess(`Mouse wheel (${dx}, ${dy})`);
|
|
391
|
+
break;
|
|
392
|
+
}
|
|
393
|
+
default:
|
|
394
|
+
throw new Error('Usage: monomind browse mouse move|down|up|wheel <args>');
|
|
395
|
+
}
|
|
396
|
+
return { success: true };
|
|
397
|
+
},
|
|
398
|
+
};
|
|
399
|
+
//# sourceMappingURL=commands-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands-input.js","sourceRoot":"","sources":["../../../src/cli/commands-input.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Moving around and configuring the viewport — history navigation, scrolling,
|
|
3
|
+
* SPA pushState, device/viewport/user-agent settings, and waiting for the page
|
|
4
|
+
* to reach a condition.
|
|
5
|
+
*/
|
|
6
|
+
import type { Command } from './types.js';
|
|
7
|
+
export declare const waitCommand: Command;
|
|
8
|
+
export declare const scrollCommand: Command;
|
|
9
|
+
export declare const navigateCommand: Command;
|
|
10
|
+
export declare const setCommand: Command;
|
|
11
|
+
export declare const pushstateCommand: Command;
|
|
12
|
+
//# sourceMappingURL=commands-navigate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands-navigate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands-navigate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,YAAY,CAAC;AAEzE,eAAO,MAAM,WAAW,EAAE,OAqMzB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,OA6D3B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,OAwD7B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,OA4FxB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,OAgB9B,CAAC"}
|