ScuttleBot

scuttlebot / tests / e2e / node_modules / playwright / lib / mcp / terminal / commands.js
Blame History Raw 334 lines
1
"use strict";
2
var __defProp = Object.defineProperty;
3
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
var __getOwnPropNames = Object.getOwnPropertyNames;
5
var __hasOwnProp = Object.prototype.hasOwnProperty;
6
var __export = (target, all) => {
7
for (var name in all)
8
__defProp(target, name, { get: all[name], enumerable: true });
9
};
10
var __copyProps = (to, from, except, desc) => {
11
if (from && typeof from === "object" || typeof from === "function") {
12
for (let key of __getOwnPropNames(from))
13
if (!__hasOwnProp.call(to, key) && key !== except)
14
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
}
16
return to;
17
};
18
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
var commands_exports = {};
20
__export(commands_exports, {
21
commands: () => commands
22
});
23
module.exports = __toCommonJS(commands_exports);
24
var import_mcpBundle = require("playwright-core/lib/mcpBundle");
25
var import_command = require("./command");
26
const click = (0, import_command.declareCommand)({
27
name: "click",
28
description: "Perform click on a web page",
29
args: import_mcpBundle.z.object({
30
ref: import_mcpBundle.z.string().describe("Exact target element reference from the page snapshot")
31
}),
32
options: import_mcpBundle.z.object({
33
button: import_mcpBundle.z.string().optional().describe("Button to click, defaults to left"),
34
modifiers: import_mcpBundle.z.array(import_mcpBundle.z.string()).optional().describe("Modifier keys to press")
35
}),
36
toolName: "browser_click",
37
toolParams: ({ ref }, { button, modifiers }) => ({ ref, button, modifiers })
38
});
39
const doubleClick = (0, import_command.declareCommand)({
40
name: "dblclick",
41
description: "Perform double click on a web page",
42
args: import_mcpBundle.z.object({
43
ref: import_mcpBundle.z.string().describe("Exact target element reference from the page snapshot")
44
}),
45
options: import_mcpBundle.z.object({
46
button: import_mcpBundle.z.string().optional().describe("Button to click, defaults to left"),
47
modifiers: import_mcpBundle.z.array(import_mcpBundle.z.string()).optional().describe("Modifier keys to press")
48
}),
49
toolName: "browser_click",
50
toolParams: ({ ref }, { button, modifiers }) => ({ ref, button, modifiers, doubleClick: true })
51
});
52
const close = (0, import_command.declareCommand)({
53
name: "close",
54
description: "Close the page",
55
args: import_mcpBundle.z.object({}),
56
toolName: "browser_close",
57
toolParams: () => ({})
58
});
59
const consoleMessages = (0, import_command.declareCommand)({
60
name: "console",
61
description: "Returns all console messages",
62
args: import_mcpBundle.z.object({
63
level: import_mcpBundle.z.string().optional().describe('Level of the console messages to return. Each level includes the messages of more severe levels. Defaults to "info".')
64
}),
65
toolName: "browser_console_messages",
66
toolParams: ({ level }) => ({ level })
67
});
68
const drag = (0, import_command.declareCommand)({
69
name: "drag",
70
description: "Perform drag and drop between two elements",
71
args: import_mcpBundle.z.object({
72
startRef: import_mcpBundle.z.string().describe("Exact source element reference from the page snapshot"),
73
endRef: import_mcpBundle.z.string().describe("Exact target element reference from the page snapshot")
74
}),
75
options: import_mcpBundle.z.object({
76
headed: import_mcpBundle.z.boolean().default(false).describe("Run browser in headed mode")
77
}),
78
toolName: "browser_drag",
79
toolParams: ({ startRef, endRef }) => ({ startRef, endRef })
80
});
81
const evaluate = (0, import_command.declareCommand)({
82
name: "evaluate",
83
description: "Evaluate JavaScript expression on page or element",
84
args: import_mcpBundle.z.object({
85
function: import_mcpBundle.z.string().describe("() => { /* code */ } or (element) => { /* code */ } when element is provided"),
86
ref: import_mcpBundle.z.string().optional().describe("Exact target element reference from the page snapshot")
87
}),
88
toolName: "browser_evaluate",
89
toolParams: ({ function: fn, ref }) => ({ function: fn, ref })
90
});
91
const fileUpload = (0, import_command.declareCommand)({
92
name: "upload-file",
93
description: "Upload one or multiple files",
94
args: import_mcpBundle.z.object({}),
95
options: import_mcpBundle.z.object({
96
paths: import_mcpBundle.z.array(import_mcpBundle.z.string()).optional().describe("The absolute paths to the files to upload. Can be single file or multiple files. If omitted, file chooser is cancelled.")
97
}),
98
toolName: "browser_file_upload",
99
toolParams: (_, { paths }) => ({ paths })
100
});
101
const handleDialog = (0, import_command.declareCommand)({
102
name: "handle-dialog",
103
description: "Handle a dialog",
104
args: import_mcpBundle.z.object({
105
accept: import_mcpBundle.z.boolean().describe("Whether to accept the dialog."),
106
promptText: import_mcpBundle.z.string().optional().describe("The text of the prompt in case of a prompt dialog.")
107
}),
108
toolName: "browser_handle_dialog",
109
toolParams: ({ accept, promptText }) => ({ accept, promptText })
110
});
111
const hover = (0, import_command.declareCommand)({
112
name: "hover",
113
description: "Hover over element on page",
114
args: import_mcpBundle.z.object({
115
ref: import_mcpBundle.z.string().describe("Exact target element reference from the page snapshot")
116
}),
117
toolName: "browser_hover",
118
toolParams: ({ ref }) => ({ ref })
119
});
120
const open = (0, import_command.declareCommand)({
121
name: "open",
122
description: "Open URL",
123
args: import_mcpBundle.z.object({
124
url: import_mcpBundle.z.string().describe("The URL to navigate to")
125
}),
126
options: import_mcpBundle.z.object({
127
headed: import_mcpBundle.z.boolean().default(false).describe("Run browser in headed mode")
128
}),
129
toolName: "browser_open",
130
toolParams: ({ url }, { headed }) => ({ url, headed })
131
});
132
const navigateBack = (0, import_command.declareCommand)({
133
name: "go-back",
134
description: "Go back to the previous page",
135
args: import_mcpBundle.z.object({}),
136
toolName: "browser_navigate_back",
137
toolParams: () => ({})
138
});
139
const networkRequests = (0, import_command.declareCommand)({
140
name: "network-requests",
141
description: "Returns all network requests since loading the page",
142
args: import_mcpBundle.z.object({}),
143
options: import_mcpBundle.z.object({
144
includeStatic: import_mcpBundle.z.boolean().optional().describe("Whether to include successful static resources like images, fonts, scripts, etc. Defaults to false.")
145
}),
146
toolName: "browser_network_requests",
147
toolParams: (_, { includeStatic }) => ({ includeStatic })
148
});
149
const pressKey = (0, import_command.declareCommand)({
150
name: "press",
151
description: "Press a key on the keyboard",
152
args: import_mcpBundle.z.object({
153
key: import_mcpBundle.z.string().describe("Name of the key to press or a character to generate, such as `ArrowLeft` or `a`")
154
}),
155
toolName: "browser_press_key",
156
toolParams: ({ key }) => ({ key })
157
});
158
const resize = (0, import_command.declareCommand)({
159
name: "resize",
160
description: "Resize the browser window",
161
args: import_mcpBundle.z.object({
162
width: import_mcpBundle.z.number().describe("Width of the browser window"),
163
height: import_mcpBundle.z.number().describe("Height of the browser window")
164
}),
165
toolName: "browser_resize",
166
toolParams: ({ width, height }) => ({ width, height })
167
});
168
const runCode = (0, import_command.declareCommand)({
169
name: "run-code",
170
description: "Run Playwright code snippet",
171
args: import_mcpBundle.z.object({
172
code: import_mcpBundle.z.string().describe("A JavaScript function containing Playwright code to execute. It will be invoked with a single argument, page, which you can use for any page interaction.")
173
}),
174
toolName: "browser_run_code",
175
toolParams: ({ code }) => ({ code })
176
});
177
const selectOption = (0, import_command.declareCommand)({
178
name: "select-option",
179
description: "Select an option in a dropdown",
180
args: import_mcpBundle.z.object({
181
ref: import_mcpBundle.z.string().describe("Exact target element reference from the page snapshot"),
182
values: import_mcpBundle.z.array(import_mcpBundle.z.string()).describe("Array of values to select in the dropdown. This can be a single value or multiple values.")
183
}),
184
toolName: "browser_select_option",
185
toolParams: ({ ref, values }) => ({ ref, values })
186
});
187
const snapshot = (0, import_command.declareCommand)({
188
name: "snapshot",
189
description: "Capture accessibility snapshot of the current page, this is better than screenshot",
190
args: import_mcpBundle.z.object({}),
191
options: import_mcpBundle.z.object({
192
filename: import_mcpBundle.z.string().optional().describe("Save snapshot to markdown file instead of returning it in the response.")
193
}),
194
toolName: "browser_snapshot",
195
toolParams: (_, { filename }) => ({ filename })
196
});
197
const screenshot = (0, import_command.declareCommand)({
198
name: "screenshot",
199
description: "Take a screenshot of the current page. You can't perform actions based on the screenshot, use browser_snapshot for actions.",
200
args: import_mcpBundle.z.object({
201
ref: import_mcpBundle.z.string().optional().describe("Exact target element reference from the page snapshot.")
202
}),
203
options: import_mcpBundle.z.object({
204
filename: import_mcpBundle.z.string().optional().describe("File name to save the screenshot to. Defaults to `page-{timestamp}.{png|jpeg}` if not specified."),
205
fullPage: import_mcpBundle.z.boolean().optional().describe("When true, takes a screenshot of the full scrollable page, instead of the currently visible viewport.")
206
}),
207
toolName: "browser_take_screenshot",
208
toolParams: ({ ref }, { filename, fullPage }) => ({ filename, ref, fullPage })
209
});
210
const type = (0, import_command.declareCommand)({
211
name: "type",
212
description: "Type text into editable element",
213
args: import_mcpBundle.z.object({
214
text: import_mcpBundle.z.string().describe("Text to type into the element")
215
}),
216
options: import_mcpBundle.z.object({
217
submit: import_mcpBundle.z.boolean().optional().describe("Whether to submit entered text (press Enter after)")
218
}),
219
toolName: "browser_press_sequentially",
220
toolParams: ({ text }, { submit }) => ({ text, submit })
221
});
222
const waitFor = (0, import_command.declareCommand)({
223
name: "wait-for",
224
description: "Wait for text to appear or disappear or a specified time to pass",
225
args: import_mcpBundle.z.object({}),
226
options: import_mcpBundle.z.object({
227
time: import_mcpBundle.z.number().optional().describe("The time to wait in seconds"),
228
text: import_mcpBundle.z.string().optional().describe("The text to wait for"),
229
textGone: import_mcpBundle.z.string().optional().describe("The text to wait for to disappear")
230
}),
231
toolName: "browser_wait_for",
232
toolParams: (_, { time, text, textGone }) => ({ time, text, textGone })
233
});
234
const tab = (0, import_command.declareCommand)({
235
name: "tab",
236
description: "Close a browser tab",
237
args: import_mcpBundle.z.object({
238
action: import_mcpBundle.z.string().describe(`Action to perform on tabs, 'list' | 'new' | 'close' | 'select'`),
239
index: import_mcpBundle.z.number().optional().describe("Tab index. If omitted, current tab is closed.")
240
}),
241
toolName: "browser_tabs",
242
toolParams: ({ action, index }) => ({ action, index })
243
});
244
const mouseClickXy = (0, import_command.declareCommand)({
245
name: "mouse-click-xy",
246
description: "Click left mouse button at a given position",
247
args: import_mcpBundle.z.object({
248
x: import_mcpBundle.z.number().describe("X coordinate"),
249
y: import_mcpBundle.z.number().describe("Y coordinate")
250
}),
251
toolName: "browser_mouse_click_xy",
252
toolParams: ({ x, y }) => ({ x, y })
253
});
254
const mouseDragXy = (0, import_command.declareCommand)({
255
name: "mouse-drag-xy",
256
description: "Drag left mouse button to a given position",
257
args: import_mcpBundle.z.object({
258
startX: import_mcpBundle.z.number().describe("Start X coordinate"),
259
startY: import_mcpBundle.z.number().describe("Start Y coordinate"),
260
endX: import_mcpBundle.z.number().describe("End X coordinate"),
261
endY: import_mcpBundle.z.number().describe("End Y coordinate")
262
}),
263
toolName: "browser_mouse_drag_xy",
264
toolParams: ({ startX, startY, endX, endY }) => ({ startX, startY, endX, endY })
265
});
266
const mouseMoveXy = (0, import_command.declareCommand)({
267
name: "mouse-move-xy",
268
description: "Move mouse to a given position",
269
args: import_mcpBundle.z.object({
270
x: import_mcpBundle.z.number().describe("X coordinate"),
271
y: import_mcpBundle.z.number().describe("Y coordinate")
272
}),
273
toolName: "browser_mouse_move_xy",
274
toolParams: ({ x, y }) => ({ x, y })
275
});
276
const pdfSave = (0, import_command.declareCommand)({
277
name: "pdf-save",
278
description: "Save page as PDF",
279
args: import_mcpBundle.z.object({}),
280
options: import_mcpBundle.z.object({
281
filename: import_mcpBundle.z.string().optional().describe("File name to save the pdf to. Defaults to `page-{timestamp}.pdf` if not specified.")
282
}),
283
toolName: "browser_pdf_save",
284
toolParams: (_, { filename }) => ({ filename })
285
});
286
const startTracing = (0, import_command.declareCommand)({
287
name: "start-tracing",
288
description: "Start trace recording",
289
args: import_mcpBundle.z.object({}),
290
toolName: "browser_start_tracing",
291
toolParams: () => ({})
292
});
293
const stopTracing = (0, import_command.declareCommand)({
294
name: "stop-tracing",
295
description: "Stop trace recording",
296
args: import_mcpBundle.z.object({}),
297
toolName: "browser_stop_tracing",
298
toolParams: () => ({})
299
});
300
const commandsArray = [
301
click,
302
close,
303
doubleClick,
304
consoleMessages,
305
drag,
306
evaluate,
307
fileUpload,
308
handleDialog,
309
hover,
310
open,
311
navigateBack,
312
networkRequests,
313
pressKey,
314
resize,
315
runCode,
316
selectOption,
317
snapshot,
318
screenshot,
319
type,
320
waitFor,
321
tab,
322
mouseClickXy,
323
mouseDragXy,
324
mouseMoveXy,
325
pdfSave,
326
startTracing,
327
stopTracing
328
];
329
const commands = Object.fromEntries(commandsArray.map((cmd) => [cmd.name, cmd]));
330
// Annotate the CommonJS export names for ESM import in node:
331
0 && (module.exports = {
332
commands
333
});
334

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button