@playwright/mcp 0.0.13 → 0.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/README.md +134 -30
- package/index.d.ts +37 -24
- package/lib/context.js +155 -81
- package/lib/index.js +61 -9
- package/lib/manualPromise.js +116 -0
- package/lib/program.js +4 -53
- package/lib/server.js +15 -4
- package/lib/tools/common.js +21 -20
- package/lib/{resources → tools}/console.js +23 -12
- package/lib/tools/dialogs.js +54 -0
- package/lib/tools/files.js +16 -10
- package/lib/tools/install.js +3 -4
- package/lib/tools/keyboard.js +11 -9
- package/lib/tools/navigate.js +34 -32
- package/lib/tools/pdf.js +43 -6
- package/lib/tools/screen.js +108 -36
- package/lib/tools/snapshot.js +119 -67
- package/lib/tools/tabs.js +36 -34
- package/lib/tools/utils.js +2 -2
- package/package.json +4 -1
package/lib/tools/common.js
CHANGED
|
@@ -20,7 +20,7 @@ const zod_to_json_schema_1 = require("zod-to-json-schema");
|
|
|
20
20
|
const waitSchema = zod_1.z.object({
|
|
21
21
|
time: zod_1.z.number().describe('The time to wait in seconds'),
|
|
22
22
|
});
|
|
23
|
-
const wait = {
|
|
23
|
+
const wait = captureSnapshot => ({
|
|
24
24
|
capability: 'wait',
|
|
25
25
|
schema: {
|
|
26
26
|
name: 'browser_wait',
|
|
@@ -31,13 +31,12 @@ const wait = {
|
|
|
31
31
|
const validatedParams = waitSchema.parse(params);
|
|
32
32
|
await new Promise(f => setTimeout(f, Math.min(10000, validatedParams.time * 1000)));
|
|
33
33
|
return {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}],
|
|
34
|
+
code: [`// Waited for ${validatedParams.time} seconds`],
|
|
35
|
+
captureSnapshot,
|
|
36
|
+
waitForNetwork: false,
|
|
38
37
|
};
|
|
39
38
|
},
|
|
40
|
-
};
|
|
39
|
+
});
|
|
41
40
|
const closeSchema = zod_1.z.object({});
|
|
42
41
|
const close = {
|
|
43
42
|
capability: 'core',
|
|
@@ -49,10 +48,9 @@ const close = {
|
|
|
49
48
|
handle: async (context) => {
|
|
50
49
|
await context.close();
|
|
51
50
|
return {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}],
|
|
51
|
+
code: [`// Internal to close the page`],
|
|
52
|
+
captureSnapshot: false,
|
|
53
|
+
waitForNetwork: false,
|
|
56
54
|
};
|
|
57
55
|
},
|
|
58
56
|
};
|
|
@@ -69,21 +67,24 @@ const resize = captureSnapshot => ({
|
|
|
69
67
|
},
|
|
70
68
|
handle: async (context, params) => {
|
|
71
69
|
const validatedParams = resizeSchema.parse(params);
|
|
72
|
-
const tab = context.
|
|
73
|
-
|
|
70
|
+
const tab = context.currentTabOrDie();
|
|
71
|
+
const code = [
|
|
72
|
+
`// Resize browser window to ${validatedParams.width}x${validatedParams.height}`,
|
|
73
|
+
`await page.setViewportSize({ width: ${validatedParams.width}, height: ${validatedParams.height} });`
|
|
74
|
+
];
|
|
75
|
+
const action = async () => {
|
|
74
76
|
await tab.page.setViewportSize({ width: validatedParams.width, height: validatedParams.height });
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
return { code };
|
|
80
|
-
}, {
|
|
77
|
+
};
|
|
78
|
+
return {
|
|
79
|
+
code,
|
|
80
|
+
action,
|
|
81
81
|
captureSnapshot,
|
|
82
|
-
|
|
82
|
+
waitForNetwork: true
|
|
83
|
+
};
|
|
83
84
|
},
|
|
84
85
|
});
|
|
85
86
|
exports.default = (captureSnapshot) => [
|
|
86
87
|
close,
|
|
87
|
-
wait,
|
|
88
|
+
wait(captureSnapshot),
|
|
88
89
|
resize(captureSnapshot)
|
|
89
90
|
];
|
|
@@ -15,20 +15,31 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
const zod_1 = require("zod");
|
|
19
|
+
const zod_to_json_schema_1 = require("zod-to-json-schema");
|
|
20
|
+
const consoleSchema = zod_1.z.object({});
|
|
21
|
+
const console = {
|
|
22
|
+
capability: 'core',
|
|
20
23
|
schema: {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
name: 'browser_console_messages',
|
|
25
|
+
description: 'Returns all console messages',
|
|
26
|
+
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(consoleSchema),
|
|
24
27
|
},
|
|
25
|
-
|
|
26
|
-
const messages = await context.
|
|
28
|
+
handle: async (context) => {
|
|
29
|
+
const messages = await context.currentTabOrDie().console();
|
|
27
30
|
const log = messages.map(message => `[${message.type().toUpperCase()}] ${message.text()}`).join('\n');
|
|
28
|
-
return
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
return {
|
|
32
|
+
code: [`// <internal code to get console messages>`],
|
|
33
|
+
action: async () => {
|
|
34
|
+
return {
|
|
35
|
+
content: [{ type: 'text', text: log }]
|
|
36
|
+
};
|
|
37
|
+
},
|
|
38
|
+
captureSnapshot: false,
|
|
39
|
+
waitForNetwork: false,
|
|
40
|
+
};
|
|
33
41
|
},
|
|
34
42
|
};
|
|
43
|
+
exports.default = [
|
|
44
|
+
console,
|
|
45
|
+
];
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) Microsoft Corporation.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const zod_1 = require("zod");
|
|
19
|
+
const zod_to_json_schema_1 = require("zod-to-json-schema");
|
|
20
|
+
const handleDialogSchema = zod_1.z.object({
|
|
21
|
+
accept: zod_1.z.boolean().describe('Whether to accept the dialog.'),
|
|
22
|
+
promptText: zod_1.z.string().optional().describe('The text of the prompt in case of a prompt dialog.'),
|
|
23
|
+
});
|
|
24
|
+
const handleDialog = captureSnapshot => ({
|
|
25
|
+
capability: 'core',
|
|
26
|
+
schema: {
|
|
27
|
+
name: 'browser_handle_dialog',
|
|
28
|
+
description: 'Handle a dialog',
|
|
29
|
+
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(handleDialogSchema),
|
|
30
|
+
},
|
|
31
|
+
handle: async (context, params) => {
|
|
32
|
+
const validatedParams = handleDialogSchema.parse(params);
|
|
33
|
+
const dialogState = context.modalStates().find(state => state.type === 'dialog');
|
|
34
|
+
if (!dialogState)
|
|
35
|
+
throw new Error('No dialog visible');
|
|
36
|
+
if (validatedParams.accept)
|
|
37
|
+
await dialogState.dialog.accept(validatedParams.promptText);
|
|
38
|
+
else
|
|
39
|
+
await dialogState.dialog.dismiss();
|
|
40
|
+
context.clearModalState(dialogState);
|
|
41
|
+
const code = [
|
|
42
|
+
`// <internal code to handle "${dialogState.dialog.type()}" dialog>`,
|
|
43
|
+
];
|
|
44
|
+
return {
|
|
45
|
+
code,
|
|
46
|
+
captureSnapshot,
|
|
47
|
+
waitForNetwork: false,
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
clearsModalState: 'dialog',
|
|
51
|
+
});
|
|
52
|
+
exports.default = (captureSnapshot) => [
|
|
53
|
+
handleDialog(captureSnapshot),
|
|
54
|
+
];
|
package/lib/tools/files.js
CHANGED
|
@@ -29,18 +29,24 @@ const uploadFile = captureSnapshot => ({
|
|
|
29
29
|
},
|
|
30
30
|
handle: async (context, params) => {
|
|
31
31
|
const validatedParams = uploadFileSchema.parse(params);
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
32
|
+
const modalState = context.modalStates().find(state => state.type === 'fileChooser');
|
|
33
|
+
if (!modalState)
|
|
34
|
+
throw new Error('No file chooser visible');
|
|
35
|
+
const code = [
|
|
36
|
+
`// <internal code to chose files ${validatedParams.paths.join(', ')}`,
|
|
37
|
+
];
|
|
38
|
+
const action = async () => {
|
|
39
|
+
await modalState.fileChooser.setFiles(validatedParams.paths);
|
|
40
|
+
context.clearModalState(modalState);
|
|
41
|
+
};
|
|
42
|
+
return {
|
|
43
|
+
code,
|
|
44
|
+
action,
|
|
40
45
|
captureSnapshot,
|
|
41
|
-
|
|
42
|
-
}
|
|
46
|
+
waitForNetwork: true,
|
|
47
|
+
};
|
|
43
48
|
},
|
|
49
|
+
clearsModalState: 'fileChooser',
|
|
44
50
|
});
|
|
45
51
|
exports.default = (captureSnapshot) => [
|
|
46
52
|
uploadFile(captureSnapshot),
|
package/lib/tools/install.js
CHANGED
package/lib/tools/keyboard.js
CHANGED
|
@@ -32,16 +32,18 @@ const pressKey = captureSnapshot => ({
|
|
|
32
32
|
},
|
|
33
33
|
handle: async (context, params) => {
|
|
34
34
|
const validatedParams = pressKeySchema.parse(params);
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
35
|
+
const tab = context.currentTabOrDie();
|
|
36
|
+
const code = [
|
|
37
|
+
`// Press ${validatedParams.key}`,
|
|
38
|
+
`await page.keyboard.press('${validatedParams.key}');`,
|
|
39
|
+
];
|
|
40
|
+
const action = () => tab.page.keyboard.press(validatedParams.key);
|
|
41
|
+
return {
|
|
42
|
+
code,
|
|
43
|
+
action,
|
|
43
44
|
captureSnapshot,
|
|
44
|
-
|
|
45
|
+
waitForNetwork: true
|
|
46
|
+
};
|
|
45
47
|
},
|
|
46
48
|
});
|
|
47
49
|
exports.default = (captureSnapshot) => [
|
package/lib/tools/navigate.js
CHANGED
|
@@ -29,21 +29,21 @@ const navigate = captureSnapshot => ({
|
|
|
29
29
|
},
|
|
30
30
|
handle: async (context, params) => {
|
|
31
31
|
const validatedParams = navigateSchema.parse(params);
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}, {
|
|
32
|
+
const tab = await context.ensureTab();
|
|
33
|
+
await tab.navigate(validatedParams.url);
|
|
34
|
+
const code = [
|
|
35
|
+
`// Navigate to ${validatedParams.url}`,
|
|
36
|
+
`await page.goto('${validatedParams.url}');`,
|
|
37
|
+
];
|
|
38
|
+
return {
|
|
39
|
+
code,
|
|
41
40
|
captureSnapshot,
|
|
42
|
-
|
|
41
|
+
waitForNetwork: false,
|
|
42
|
+
};
|
|
43
43
|
},
|
|
44
44
|
});
|
|
45
45
|
const goBackSchema = zod_1.z.object({});
|
|
46
|
-
const goBack =
|
|
46
|
+
const goBack = captureSnapshot => ({
|
|
47
47
|
capability: 'history',
|
|
48
48
|
schema: {
|
|
49
49
|
name: 'browser_navigate_back',
|
|
@@ -51,20 +51,21 @@ const goBack = snapshot => ({
|
|
|
51
51
|
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(goBackSchema),
|
|
52
52
|
},
|
|
53
53
|
handle: async (context) => {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
captureSnapshot
|
|
63
|
-
|
|
54
|
+
const tab = await context.ensureTab();
|
|
55
|
+
await tab.page.goBack();
|
|
56
|
+
const code = [
|
|
57
|
+
`// Navigate back`,
|
|
58
|
+
`await page.goBack();`,
|
|
59
|
+
];
|
|
60
|
+
return {
|
|
61
|
+
code,
|
|
62
|
+
captureSnapshot,
|
|
63
|
+
waitForNetwork: false,
|
|
64
|
+
};
|
|
64
65
|
},
|
|
65
66
|
});
|
|
66
67
|
const goForwardSchema = zod_1.z.object({});
|
|
67
|
-
const goForward =
|
|
68
|
+
const goForward = captureSnapshot => ({
|
|
68
69
|
capability: 'history',
|
|
69
70
|
schema: {
|
|
70
71
|
name: 'browser_navigate_forward',
|
|
@@ -72,16 +73,17 @@ const goForward = snapshot => ({
|
|
|
72
73
|
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(goForwardSchema),
|
|
73
74
|
},
|
|
74
75
|
handle: async (context) => {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
captureSnapshot
|
|
84
|
-
|
|
76
|
+
const tab = context.currentTabOrDie();
|
|
77
|
+
await tab.page.goForward();
|
|
78
|
+
const code = [
|
|
79
|
+
`// Navigate forward`,
|
|
80
|
+
`await page.goForward();`,
|
|
81
|
+
];
|
|
82
|
+
return {
|
|
83
|
+
code,
|
|
84
|
+
captureSnapshot,
|
|
85
|
+
waitForNetwork: false,
|
|
86
|
+
};
|
|
85
87
|
},
|
|
86
88
|
});
|
|
87
89
|
exports.default = (captureSnapshot) => [
|
package/lib/tools/pdf.js
CHANGED
|
@@ -14,6 +14,39 @@
|
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
20
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
21
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
22
|
+
}
|
|
23
|
+
Object.defineProperty(o, k2, desc);
|
|
24
|
+
}) : (function(o, m, k, k2) {
|
|
25
|
+
if (k2 === undefined) k2 = k;
|
|
26
|
+
o[k2] = m[k];
|
|
27
|
+
}));
|
|
28
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
29
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
30
|
+
}) : function(o, v) {
|
|
31
|
+
o["default"] = v;
|
|
32
|
+
});
|
|
33
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
34
|
+
var ownKeys = function(o) {
|
|
35
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
36
|
+
var ar = [];
|
|
37
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
38
|
+
return ar;
|
|
39
|
+
};
|
|
40
|
+
return ownKeys(o);
|
|
41
|
+
};
|
|
42
|
+
return function (mod) {
|
|
43
|
+
if (mod && mod.__esModule) return mod;
|
|
44
|
+
var result = {};
|
|
45
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
46
|
+
__setModuleDefault(result, mod);
|
|
47
|
+
return result;
|
|
48
|
+
};
|
|
49
|
+
})();
|
|
17
50
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
51
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
52
|
};
|
|
@@ -23,6 +56,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
23
56
|
const zod_1 = require("zod");
|
|
24
57
|
const zod_to_json_schema_1 = require("zod-to-json-schema");
|
|
25
58
|
const utils_1 = require("./utils");
|
|
59
|
+
const javascript = __importStar(require("../javascript"));
|
|
26
60
|
const pdfSchema = zod_1.z.object({});
|
|
27
61
|
const pdf = {
|
|
28
62
|
capability: 'pdf',
|
|
@@ -32,14 +66,17 @@ const pdf = {
|
|
|
32
66
|
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(pdfSchema),
|
|
33
67
|
},
|
|
34
68
|
handle: async (context) => {
|
|
35
|
-
const tab = context.
|
|
69
|
+
const tab = context.currentTabOrDie();
|
|
36
70
|
const fileName = path_1.default.join(os_1.default.tmpdir(), (0, utils_1.sanitizeForFilePath)(`page-${new Date().toISOString()}`)) + '.pdf';
|
|
37
|
-
|
|
71
|
+
const code = [
|
|
72
|
+
`// Save page as ${fileName}`,
|
|
73
|
+
`await page.pdf(${javascript.formatObject({ path: fileName })});`,
|
|
74
|
+
];
|
|
38
75
|
return {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
76
|
+
code,
|
|
77
|
+
action: async () => tab.page.pdf({ path: fileName }).then(() => { }),
|
|
78
|
+
captureSnapshot: false,
|
|
79
|
+
waitForNetwork: false,
|
|
43
80
|
};
|
|
44
81
|
},
|
|
45
82
|
};
|
package/lib/tools/screen.js
CHANGED
|
@@ -14,9 +14,43 @@
|
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
20
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
21
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
22
|
+
}
|
|
23
|
+
Object.defineProperty(o, k2, desc);
|
|
24
|
+
}) : (function(o, m, k, k2) {
|
|
25
|
+
if (k2 === undefined) k2 = k;
|
|
26
|
+
o[k2] = m[k];
|
|
27
|
+
}));
|
|
28
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
29
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
30
|
+
}) : function(o, v) {
|
|
31
|
+
o["default"] = v;
|
|
32
|
+
});
|
|
33
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
34
|
+
var ownKeys = function(o) {
|
|
35
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
36
|
+
var ar = [];
|
|
37
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
38
|
+
return ar;
|
|
39
|
+
};
|
|
40
|
+
return ownKeys(o);
|
|
41
|
+
};
|
|
42
|
+
return function (mod) {
|
|
43
|
+
if (mod && mod.__esModule) return mod;
|
|
44
|
+
var result = {};
|
|
45
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
46
|
+
__setModuleDefault(result, mod);
|
|
47
|
+
return result;
|
|
48
|
+
};
|
|
49
|
+
})();
|
|
17
50
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
51
|
const zod_1 = require("zod");
|
|
19
52
|
const zod_to_json_schema_1 = require("zod-to-json-schema");
|
|
53
|
+
const javascript = __importStar(require("../javascript"));
|
|
20
54
|
const screenshot = {
|
|
21
55
|
capability: 'core',
|
|
22
56
|
schema: {
|
|
@@ -26,9 +60,21 @@ const screenshot = {
|
|
|
26
60
|
},
|
|
27
61
|
handle: async (context) => {
|
|
28
62
|
const tab = await context.ensureTab();
|
|
29
|
-
const
|
|
63
|
+
const options = { type: 'jpeg', quality: 50, scale: 'css' };
|
|
64
|
+
const code = [
|
|
65
|
+
`// Take a screenshot of the current page`,
|
|
66
|
+
`await page.screenshot(${javascript.formatObject(options)});`,
|
|
67
|
+
];
|
|
68
|
+
const action = () => tab.page.screenshot(options).then(buffer => {
|
|
69
|
+
return {
|
|
70
|
+
content: [{ type: 'image', data: buffer.toString('base64'), mimeType: 'image/jpeg' }],
|
|
71
|
+
};
|
|
72
|
+
});
|
|
30
73
|
return {
|
|
31
|
-
|
|
74
|
+
code,
|
|
75
|
+
action,
|
|
76
|
+
captureSnapshot: false,
|
|
77
|
+
waitForNetwork: false
|
|
32
78
|
};
|
|
33
79
|
},
|
|
34
80
|
};
|
|
@@ -48,10 +94,17 @@ const moveMouse = {
|
|
|
48
94
|
},
|
|
49
95
|
handle: async (context, params) => {
|
|
50
96
|
const validatedParams = moveMouseSchema.parse(params);
|
|
51
|
-
const tab = context.
|
|
52
|
-
|
|
97
|
+
const tab = context.currentTabOrDie();
|
|
98
|
+
const code = [
|
|
99
|
+
`// Move mouse to (${validatedParams.x}, ${validatedParams.y})`,
|
|
100
|
+
`await page.mouse.move(${validatedParams.x}, ${validatedParams.y});`,
|
|
101
|
+
];
|
|
102
|
+
const action = () => tab.page.mouse.move(validatedParams.x, validatedParams.y);
|
|
53
103
|
return {
|
|
54
|
-
|
|
104
|
+
code,
|
|
105
|
+
action,
|
|
106
|
+
captureSnapshot: false,
|
|
107
|
+
waitForNetwork: false
|
|
55
108
|
};
|
|
56
109
|
},
|
|
57
110
|
};
|
|
@@ -67,19 +120,25 @@ const click = {
|
|
|
67
120
|
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(clickSchema),
|
|
68
121
|
},
|
|
69
122
|
handle: async (context, params) => {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
123
|
+
const validatedParams = clickSchema.parse(params);
|
|
124
|
+
const tab = context.currentTabOrDie();
|
|
125
|
+
const code = [
|
|
126
|
+
`// Click mouse at coordinates (${validatedParams.x}, ${validatedParams.y})`,
|
|
127
|
+
`await page.mouse.move(${validatedParams.x}, ${validatedParams.y});`,
|
|
128
|
+
`await page.mouse.down();`,
|
|
129
|
+
`await page.mouse.up();`,
|
|
130
|
+
];
|
|
131
|
+
const action = async () => {
|
|
78
132
|
await tab.page.mouse.move(validatedParams.x, validatedParams.y);
|
|
79
133
|
await tab.page.mouse.down();
|
|
80
134
|
await tab.page.mouse.up();
|
|
81
|
-
|
|
82
|
-
|
|
135
|
+
};
|
|
136
|
+
return {
|
|
137
|
+
code,
|
|
138
|
+
action,
|
|
139
|
+
captureSnapshot: false,
|
|
140
|
+
waitForNetwork: true,
|
|
141
|
+
};
|
|
83
142
|
},
|
|
84
143
|
};
|
|
85
144
|
const dragSchema = elementSchema.extend({
|
|
@@ -97,20 +156,26 @@ const drag = {
|
|
|
97
156
|
},
|
|
98
157
|
handle: async (context, params) => {
|
|
99
158
|
const validatedParams = dragSchema.parse(params);
|
|
100
|
-
|
|
159
|
+
const tab = context.currentTabOrDie();
|
|
160
|
+
const code = [
|
|
161
|
+
`// Drag mouse from (${validatedParams.startX}, ${validatedParams.startY}) to (${validatedParams.endX}, ${validatedParams.endY})`,
|
|
162
|
+
`await page.mouse.move(${validatedParams.startX}, ${validatedParams.startY});`,
|
|
163
|
+
`await page.mouse.down();`,
|
|
164
|
+
`await page.mouse.move(${validatedParams.endX}, ${validatedParams.endY});`,
|
|
165
|
+
`await page.mouse.up();`,
|
|
166
|
+
];
|
|
167
|
+
const action = async () => {
|
|
101
168
|
await tab.page.mouse.move(validatedParams.startX, validatedParams.startY);
|
|
102
169
|
await tab.page.mouse.down();
|
|
103
170
|
await tab.page.mouse.move(validatedParams.endX, validatedParams.endY);
|
|
104
171
|
await tab.page.mouse.up();
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
return { code };
|
|
113
|
-
});
|
|
172
|
+
};
|
|
173
|
+
return {
|
|
174
|
+
code,
|
|
175
|
+
action,
|
|
176
|
+
captureSnapshot: false,
|
|
177
|
+
waitForNetwork: true,
|
|
178
|
+
};
|
|
114
179
|
},
|
|
115
180
|
};
|
|
116
181
|
const typeSchema = zod_1.z.object({
|
|
@@ -126,19 +191,26 @@ const type = {
|
|
|
126
191
|
},
|
|
127
192
|
handle: async (context, params) => {
|
|
128
193
|
const validatedParams = typeSchema.parse(params);
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
194
|
+
const tab = context.currentTabOrDie();
|
|
195
|
+
const code = [
|
|
196
|
+
`// Type ${validatedParams.text}`,
|
|
197
|
+
`await page.keyboard.type('${validatedParams.text}');`,
|
|
198
|
+
];
|
|
199
|
+
const action = async () => {
|
|
134
200
|
await tab.page.keyboard.type(validatedParams.text);
|
|
135
|
-
if (validatedParams.submit)
|
|
136
|
-
code.push(`// Submit text`);
|
|
137
|
-
code.push(`await page.keyboard.press('Enter');`);
|
|
201
|
+
if (validatedParams.submit)
|
|
138
202
|
await tab.page.keyboard.press('Enter');
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
203
|
+
};
|
|
204
|
+
if (validatedParams.submit) {
|
|
205
|
+
code.push(`// Submit text`);
|
|
206
|
+
code.push(`await page.keyboard.press('Enter');`);
|
|
207
|
+
}
|
|
208
|
+
return {
|
|
209
|
+
code,
|
|
210
|
+
action,
|
|
211
|
+
captureSnapshot: false,
|
|
212
|
+
waitForNetwork: true,
|
|
213
|
+
};
|
|
142
214
|
},
|
|
143
215
|
};
|
|
144
216
|
exports.default = [
|