@smoothdeploy/playwright 1.58.3 → 1.60.0-beta-1780662356000

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 (182) hide show
  1. package/ThirdPartyNotices.txt +8 -5036
  2. package/lib/agents/agentParser.js +2 -2
  3. package/lib/agents/generateAgents.js +21 -22
  4. package/lib/agents/playwright-test-healer.agent.md +1 -0
  5. package/lib/agents/playwright-test-planner.agent.md +2 -1
  6. package/lib/cli/reportActions.js +78 -0
  7. package/lib/cli/testActions.js +211 -0
  8. package/lib/common/index.js +2898 -0
  9. package/lib/common/index.js.txt +35 -0
  10. package/lib/errorContext.js +130 -0
  11. package/lib/index.js +283 -206
  12. package/lib/{isomorphic/testServerConnection.js → isomorphic.js} +70 -35
  13. package/lib/isomorphic.js.txt +9 -0
  14. package/lib/loader/loaderProcessEntry.js +34 -0
  15. package/lib/loader/loaderProcessEntry.js.txt +9 -0
  16. package/lib/matchers/expect.js +12988 -249
  17. package/lib/matchers/expect.js.LICENSE +693 -0
  18. package/lib/matchers/expect.js.txt +72 -0
  19. package/lib/mcp/test/browserBackend.js +49 -22
  20. package/lib/mcp/test/generatorTools.js +16 -16
  21. package/lib/mcp/test/plannerTools.js +25 -20
  22. package/lib/mcp/test/seed.js +7 -7
  23. package/lib/mcp/test/testBackend.js +30 -30
  24. package/lib/mcp/test/testContext.js +50 -33
  25. package/lib/mcp/test/testTools.js +15 -25
  26. package/lib/{internalsForTest.js → package.js} +13 -8
  27. package/lib/program.js +63 -263
  28. package/lib/runner/index.js +8339 -0
  29. package/lib/runner/index.js.txt +60 -0
  30. package/lib/transform/babelBundle.js +71002 -18
  31. package/lib/transform/babelBundle.js.LICENSE +2359 -0
  32. package/lib/transform/babelBundle.js.txt +325 -0
  33. package/lib/transform/esmLoader.js +5884 -30
  34. package/lib/transform/esmLoader.js.LICENSE +335 -0
  35. package/lib/transform/esmLoader.js.txt +55 -0
  36. package/lib/util.js +37 -34
  37. package/lib/worker/workerProcessEntry.js +3251 -0
  38. package/lib/worker/workerProcessEntry.js.txt +24 -0
  39. package/package.json +5 -16
  40. package/test.mjs +1 -0
  41. package/types/test.d.ts +173 -12
  42. package/types/testReporter.d.ts +7 -5
  43. package/lib/common/config.js +0 -282
  44. package/lib/common/configLoader.js +0 -344
  45. package/lib/common/esmLoaderHost.js +0 -104
  46. package/lib/common/expectBundle.js +0 -28
  47. package/lib/common/expectBundleImpl.js +0 -407
  48. package/lib/common/fixtures.js +0 -302
  49. package/lib/common/ipc.js +0 -60
  50. package/lib/common/poolBuilder.js +0 -85
  51. package/lib/common/process.js +0 -132
  52. package/lib/common/suiteUtils.js +0 -140
  53. package/lib/common/test.js +0 -321
  54. package/lib/common/testLoader.js +0 -101
  55. package/lib/common/testType.js +0 -298
  56. package/lib/common/validators.js +0 -68
  57. package/lib/fsWatcher.js +0 -67
  58. package/lib/isomorphic/events.js +0 -77
  59. package/lib/isomorphic/folders.js +0 -30
  60. package/lib/isomorphic/stringInternPool.js +0 -69
  61. package/lib/isomorphic/teleReceiver.js +0 -521
  62. package/lib/isomorphic/teleSuiteUpdater.js +0 -157
  63. package/lib/isomorphic/testServerInterface.js +0 -16
  64. package/lib/isomorphic/testTree.js +0 -329
  65. package/lib/isomorphic/types.d.js +0 -16
  66. package/lib/loader/loaderMain.js +0 -59
  67. package/lib/matchers/matcherHint.js +0 -44
  68. package/lib/matchers/matchers.js +0 -383
  69. package/lib/matchers/toBeTruthy.js +0 -75
  70. package/lib/matchers/toEqual.js +0 -100
  71. package/lib/matchers/toHaveURL.js +0 -101
  72. package/lib/matchers/toMatchAriaSnapshot.js +0 -159
  73. package/lib/matchers/toMatchSnapshot.js +0 -342
  74. package/lib/matchers/toMatchText.js +0 -99
  75. package/lib/mcp/browser/browserContextFactory.js +0 -329
  76. package/lib/mcp/browser/browserServerBackend.js +0 -84
  77. package/lib/mcp/browser/config.js +0 -421
  78. package/lib/mcp/browser/context.js +0 -244
  79. package/lib/mcp/browser/response.js +0 -278
  80. package/lib/mcp/browser/sessionLog.js +0 -75
  81. package/lib/mcp/browser/tab.js +0 -343
  82. package/lib/mcp/browser/tools/common.js +0 -65
  83. package/lib/mcp/browser/tools/console.js +0 -46
  84. package/lib/mcp/browser/tools/dialogs.js +0 -60
  85. package/lib/mcp/browser/tools/evaluate.js +0 -61
  86. package/lib/mcp/browser/tools/files.js +0 -58
  87. package/lib/mcp/browser/tools/form.js +0 -63
  88. package/lib/mcp/browser/tools/install.js +0 -72
  89. package/lib/mcp/browser/tools/keyboard.js +0 -107
  90. package/lib/mcp/browser/tools/mouse.js +0 -107
  91. package/lib/mcp/browser/tools/navigate.js +0 -71
  92. package/lib/mcp/browser/tools/network.js +0 -63
  93. package/lib/mcp/browser/tools/open.js +0 -57
  94. package/lib/mcp/browser/tools/pdf.js +0 -49
  95. package/lib/mcp/browser/tools/runCode.js +0 -78
  96. package/lib/mcp/browser/tools/screenshot.js +0 -93
  97. package/lib/mcp/browser/tools/snapshot.js +0 -173
  98. package/lib/mcp/browser/tools/tabs.js +0 -67
  99. package/lib/mcp/browser/tools/tool.js +0 -47
  100. package/lib/mcp/browser/tools/tracing.js +0 -74
  101. package/lib/mcp/browser/tools/utils.js +0 -94
  102. package/lib/mcp/browser/tools/verify.js +0 -143
  103. package/lib/mcp/browser/tools/wait.js +0 -63
  104. package/lib/mcp/browser/tools.js +0 -84
  105. package/lib/mcp/browser/watchdog.js +0 -44
  106. package/lib/mcp/config.d.js +0 -16
  107. package/lib/mcp/extension/cdpRelay.js +0 -351
  108. package/lib/mcp/extension/extensionContextFactory.js +0 -76
  109. package/lib/mcp/extension/protocol.js +0 -28
  110. package/lib/mcp/index.js +0 -61
  111. package/lib/mcp/log.js +0 -35
  112. package/lib/mcp/program.js +0 -111
  113. package/lib/mcp/sdk/exports.js +0 -28
  114. package/lib/mcp/sdk/http.js +0 -152
  115. package/lib/mcp/sdk/inProcessTransport.js +0 -71
  116. package/lib/mcp/sdk/server.js +0 -223
  117. package/lib/mcp/sdk/tool.js +0 -47
  118. package/lib/mcp/terminal/cli.js +0 -296
  119. package/lib/mcp/terminal/command.js +0 -56
  120. package/lib/mcp/terminal/commands.js +0 -333
  121. package/lib/mcp/terminal/daemon.js +0 -129
  122. package/lib/mcp/terminal/help.json +0 -32
  123. package/lib/mcp/terminal/helpGenerator.js +0 -88
  124. package/lib/mcp/terminal/socketConnection.js +0 -80
  125. package/lib/plugins/gitCommitInfoPlugin.js +0 -198
  126. package/lib/plugins/index.js +0 -28
  127. package/lib/plugins/webServerPlugin.js +0 -237
  128. package/lib/reporters/base.js +0 -634
  129. package/lib/reporters/blob.js +0 -138
  130. package/lib/reporters/dot.js +0 -99
  131. package/lib/reporters/empty.js +0 -32
  132. package/lib/reporters/github.js +0 -128
  133. package/lib/reporters/html.js +0 -633
  134. package/lib/reporters/internalReporter.js +0 -138
  135. package/lib/reporters/json.js +0 -254
  136. package/lib/reporters/junit.js +0 -232
  137. package/lib/reporters/line.js +0 -131
  138. package/lib/reporters/list.js +0 -253
  139. package/lib/reporters/listModeReporter.js +0 -69
  140. package/lib/reporters/markdown.js +0 -144
  141. package/lib/reporters/merge.js +0 -558
  142. package/lib/reporters/multiplexer.js +0 -112
  143. package/lib/reporters/reporterV2.js +0 -102
  144. package/lib/reporters/smoothdeploy.js +0 -333
  145. package/lib/reporters/teleEmitter.js +0 -317
  146. package/lib/reporters/versions/blobV1.js +0 -16
  147. package/lib/runner/dispatcher.js +0 -531
  148. package/lib/runner/failureTracker.js +0 -72
  149. package/lib/runner/lastRun.js +0 -77
  150. package/lib/runner/loadUtils.js +0 -334
  151. package/lib/runner/loaderHost.js +0 -89
  152. package/lib/runner/processHost.js +0 -180
  153. package/lib/runner/projectUtils.js +0 -241
  154. package/lib/runner/rebase.js +0 -189
  155. package/lib/runner/reporters.js +0 -140
  156. package/lib/runner/sigIntWatcher.js +0 -96
  157. package/lib/runner/storage.js +0 -91
  158. package/lib/runner/taskRunner.js +0 -127
  159. package/lib/runner/tasks.js +0 -410
  160. package/lib/runner/testGroups.js +0 -125
  161. package/lib/runner/testRunner.js +0 -398
  162. package/lib/runner/testServer.js +0 -269
  163. package/lib/runner/uiModeReporter.js +0 -30
  164. package/lib/runner/vcs.js +0 -72
  165. package/lib/runner/watchMode.js +0 -396
  166. package/lib/runner/workerHost.js +0 -104
  167. package/lib/third_party/pirates.js +0 -62
  168. package/lib/third_party/tsconfig-loader.js +0 -103
  169. package/lib/transform/babelBundleImpl.js +0 -461
  170. package/lib/transform/compilationCache.js +0 -274
  171. package/lib/transform/md.js +0 -221
  172. package/lib/transform/portTransport.js +0 -67
  173. package/lib/transform/transform.js +0 -303
  174. package/lib/utilsBundle.js +0 -50
  175. package/lib/utilsBundleImpl.js +0 -103
  176. package/lib/worker/fixtureRunner.js +0 -262
  177. package/lib/worker/testInfo.js +0 -536
  178. package/lib/worker/testTracing.js +0 -345
  179. package/lib/worker/timeoutManager.js +0 -174
  180. package/lib/worker/util.js +0 -31
  181. package/lib/worker/workerMain.js +0 -530
  182. /package/lib/{common/globals.js → globals.js} +0 -0
@@ -1,65 +0,0 @@
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 common_exports = {};
20
- __export(common_exports, {
21
- default: () => common_default
22
- });
23
- module.exports = __toCommonJS(common_exports);
24
- var import_mcpBundle = require("playwright-core/lib/mcpBundle");
25
- var import_tool = require("./tool");
26
- var import_response = require("../response");
27
- const close = (0, import_tool.defineTool)({
28
- capability: "core",
29
- schema: {
30
- name: "browser_close",
31
- title: "Close browser",
32
- description: "Close the page",
33
- inputSchema: import_mcpBundle.z.object({}),
34
- type: "action"
35
- },
36
- handle: async (context, params, response) => {
37
- await context.closeBrowserContext();
38
- const result = (0, import_response.renderTabsMarkdown)([]);
39
- response.addTextResult(result.join("\n"));
40
- response.addCode(`await page.close()`);
41
- }
42
- });
43
- const resize = (0, import_tool.defineTabTool)({
44
- capability: "core",
45
- schema: {
46
- name: "browser_resize",
47
- title: "Resize browser window",
48
- description: "Resize the browser window",
49
- inputSchema: import_mcpBundle.z.object({
50
- width: import_mcpBundle.z.number().describe("Width of the browser window"),
51
- height: import_mcpBundle.z.number().describe("Height of the browser window")
52
- }),
53
- type: "action"
54
- },
55
- handle: async (tab, params, response) => {
56
- response.addCode(`await page.setViewportSize({ width: ${params.width}, height: ${params.height} });`);
57
- await tab.waitForCompletion(async () => {
58
- await tab.page.setViewportSize({ width: params.width, height: params.height });
59
- });
60
- }
61
- });
62
- var common_default = [
63
- close,
64
- resize
65
- ];
@@ -1,46 +0,0 @@
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 console_exports = {};
20
- __export(console_exports, {
21
- default: () => console_default
22
- });
23
- module.exports = __toCommonJS(console_exports);
24
- var import_mcpBundle = require("playwright-core/lib/mcpBundle");
25
- var import_tool = require("./tool");
26
- const console = (0, import_tool.defineTabTool)({
27
- capability: "core",
28
- schema: {
29
- name: "browser_console_messages",
30
- title: "Get console messages",
31
- description: "Returns all console messages",
32
- inputSchema: import_mcpBundle.z.object({
33
- level: import_mcpBundle.z.enum(["error", "warning", "info", "debug"]).default("info").describe('Level of the console messages to return. Each level includes the messages of more severe levels. Defaults to "info".'),
34
- filename: import_mcpBundle.z.string().optional().describe("Filename to save the console messages to. If not provided, messages are returned as text.")
35
- }),
36
- type: "readOnly"
37
- },
38
- handle: async (tab, params, response) => {
39
- const messages = await tab.consoleMessages(params.level);
40
- const text = messages.map((message) => message.toString()).join("\n");
41
- await response.addResult({ text, suggestedFilename: params.filename });
42
- }
43
- });
44
- var console_default = [
45
- console
46
- ];
@@ -1,60 +0,0 @@
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 dialogs_exports = {};
20
- __export(dialogs_exports, {
21
- default: () => dialogs_default,
22
- handleDialog: () => handleDialog
23
- });
24
- module.exports = __toCommonJS(dialogs_exports);
25
- var import_mcpBundle = require("playwright-core/lib/mcpBundle");
26
- var import_tool = require("./tool");
27
- const handleDialog = (0, import_tool.defineTabTool)({
28
- capability: "core",
29
- schema: {
30
- name: "browser_handle_dialog",
31
- title: "Handle a dialog",
32
- description: "Handle a dialog",
33
- inputSchema: import_mcpBundle.z.object({
34
- accept: import_mcpBundle.z.boolean().describe("Whether to accept the dialog."),
35
- promptText: import_mcpBundle.z.string().optional().describe("The text of the prompt in case of a prompt dialog.")
36
- }),
37
- type: "action"
38
- },
39
- handle: async (tab, params, response) => {
40
- response.setIncludeSnapshot();
41
- const dialogState = tab.modalStates().find((state) => state.type === "dialog");
42
- if (!dialogState)
43
- throw new Error("No dialog visible");
44
- tab.clearModalState(dialogState);
45
- await tab.waitForCompletion(async () => {
46
- if (params.accept)
47
- await dialogState.dialog.accept(params.promptText);
48
- else
49
- await dialogState.dialog.dismiss();
50
- });
51
- },
52
- clearsModalState: "dialog"
53
- });
54
- var dialogs_default = [
55
- handleDialog
56
- ];
57
- // Annotate the CommonJS export names for ESM import in node:
58
- 0 && (module.exports = {
59
- handleDialog
60
- });
@@ -1,61 +0,0 @@
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 evaluate_exports = {};
20
- __export(evaluate_exports, {
21
- default: () => evaluate_default
22
- });
23
- module.exports = __toCommonJS(evaluate_exports);
24
- var import_mcpBundle = require("playwright-core/lib/mcpBundle");
25
- var import_utils = require("playwright-core/lib/utils");
26
- var import_tool = require("./tool");
27
- const evaluateSchema = import_mcpBundle.z.object({
28
- function: import_mcpBundle.z.string().describe("() => { /* code */ } or (element) => { /* code */ } when element is provided"),
29
- element: import_mcpBundle.z.string().optional().describe("Human-readable element description used to obtain permission to interact with the element"),
30
- ref: import_mcpBundle.z.string().optional().describe("Exact target element reference from the page snapshot"),
31
- filename: import_mcpBundle.z.string().optional().describe("Filename to save the result to. If not provided, result is returned as JSON string.")
32
- });
33
- const evaluate = (0, import_tool.defineTabTool)({
34
- capability: "core",
35
- schema: {
36
- name: "browser_evaluate",
37
- title: "Evaluate JavaScript",
38
- description: "Evaluate JavaScript expression on page or element",
39
- inputSchema: evaluateSchema,
40
- type: "action"
41
- },
42
- handle: async (tab, params, response) => {
43
- response.setIncludeSnapshot();
44
- let locator;
45
- if (params.ref && params.element) {
46
- locator = await tab.refLocator({ ref: params.ref, element: params.element });
47
- response.addCode(`await page.${locator.resolved}.evaluate(${(0, import_utils.escapeWithQuotes)(params.function)});`);
48
- } else {
49
- response.addCode(`await page.evaluate(${(0, import_utils.escapeWithQuotes)(params.function)});`);
50
- }
51
- await tab.waitForCompletion(async () => {
52
- const receiver = locator?.locator ?? tab.page;
53
- const result = await receiver._evaluateFunction(params.function);
54
- const text = JSON.stringify(result, null, 2) || "undefined";
55
- await response.addResult({ text, suggestedFilename: params.filename });
56
- });
57
- }
58
- });
59
- var evaluate_default = [
60
- evaluate
61
- ];
@@ -1,58 +0,0 @@
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 files_exports = {};
20
- __export(files_exports, {
21
- default: () => files_default,
22
- uploadFile: () => uploadFile
23
- });
24
- module.exports = __toCommonJS(files_exports);
25
- var import_mcpBundle = require("playwright-core/lib/mcpBundle");
26
- var import_tool = require("./tool");
27
- const uploadFile = (0, import_tool.defineTabTool)({
28
- capability: "core",
29
- schema: {
30
- name: "browser_file_upload",
31
- title: "Upload files",
32
- description: "Upload one or multiple files",
33
- inputSchema: import_mcpBundle.z.object({
34
- 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.")
35
- }),
36
- type: "action"
37
- },
38
- handle: async (tab, params, response) => {
39
- response.setIncludeSnapshot();
40
- const modalState = tab.modalStates().find((state) => state.type === "fileChooser");
41
- if (!modalState)
42
- throw new Error("No file chooser visible");
43
- response.addCode(`await fileChooser.setFiles(${JSON.stringify(params.paths)})`);
44
- tab.clearModalState(modalState);
45
- await tab.waitForCompletion(async () => {
46
- if (params.paths)
47
- await modalState.fileChooser.setFiles(params.paths);
48
- });
49
- },
50
- clearsModalState: "fileChooser"
51
- });
52
- var files_default = [
53
- uploadFile
54
- ];
55
- // Annotate the CommonJS export names for ESM import in node:
56
- 0 && (module.exports = {
57
- uploadFile
58
- });
@@ -1,63 +0,0 @@
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 form_exports = {};
20
- __export(form_exports, {
21
- default: () => form_default
22
- });
23
- module.exports = __toCommonJS(form_exports);
24
- var import_mcpBundle = require("playwright-core/lib/mcpBundle");
25
- var import_utils = require("playwright-core/lib/utils");
26
- var import_tool = require("./tool");
27
- const fillForm = (0, import_tool.defineTabTool)({
28
- capability: "core",
29
- schema: {
30
- name: "browser_fill_form",
31
- title: "Fill form",
32
- description: "Fill multiple form fields",
33
- inputSchema: import_mcpBundle.z.object({
34
- fields: import_mcpBundle.z.array(import_mcpBundle.z.object({
35
- name: import_mcpBundle.z.string().describe("Human-readable field name"),
36
- type: import_mcpBundle.z.enum(["textbox", "checkbox", "radio", "combobox", "slider"]).describe("Type of the field"),
37
- ref: import_mcpBundle.z.string().describe("Exact target field reference from the page snapshot"),
38
- value: import_mcpBundle.z.string().describe("Value to fill in the field. If the field is a checkbox, the value should be `true` or `false`. If the field is a combobox, the value should be the text of the option.")
39
- })).describe("Fields to fill in")
40
- }),
41
- type: "input"
42
- },
43
- handle: async (tab, params, response) => {
44
- for (const field of params.fields) {
45
- const { locator, resolved } = await tab.refLocator({ element: field.name, ref: field.ref });
46
- const locatorSource = `await page.${resolved}`;
47
- if (field.type === "textbox" || field.type === "slider") {
48
- const secret = tab.context.lookupSecret(field.value);
49
- await locator.fill(secret.value);
50
- response.addCode(`${locatorSource}.fill(${secret.code});`);
51
- } else if (field.type === "checkbox" || field.type === "radio") {
52
- await locator.setChecked(field.value === "true");
53
- response.addCode(`${locatorSource}.setChecked(${field.value});`);
54
- } else if (field.type === "combobox") {
55
- await locator.selectOption({ label: field.value });
56
- response.addCode(`${locatorSource}.selectOption(${(0, import_utils.escapeWithQuotes)(field.value)});`);
57
- }
58
- }
59
- }
60
- });
61
- var form_default = [
62
- fillForm
63
- ];
@@ -1,72 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var install_exports = {};
30
- __export(install_exports, {
31
- default: () => install_default
32
- });
33
- module.exports = __toCommonJS(install_exports);
34
- var import_child_process = require("child_process");
35
- var import_path = __toESM(require("path"));
36
- var import_mcpBundle = require("playwright-core/lib/mcpBundle");
37
- var import_tool = require("./tool");
38
- var import_response = require("../response");
39
- const install = (0, import_tool.defineTool)({
40
- capability: "core-install",
41
- schema: {
42
- name: "browser_install",
43
- title: "Install the browser specified in the config",
44
- description: "Install the browser specified in the config. Call this if you get an error about the browser not being installed.",
45
- inputSchema: import_mcpBundle.z.object({}),
46
- type: "action"
47
- },
48
- handle: async (context, params, response) => {
49
- const channel = context.config.browser?.launchOptions?.channel ?? context.config.browser?.browserName ?? "chrome";
50
- const cliPath = import_path.default.join(require.resolve("playwright/package.json"), "../cli.js");
51
- const child = (0, import_child_process.fork)(cliPath, ["install", channel], {
52
- stdio: "pipe"
53
- });
54
- const output = [];
55
- child.stdout?.on("data", (data) => output.push(data.toString()));
56
- child.stderr?.on("data", (data) => output.push(data.toString()));
57
- await new Promise((resolve, reject) => {
58
- child.on("close", (code) => {
59
- if (code === 0)
60
- resolve();
61
- else
62
- reject(new Error(`Failed to install browser: ${output.join("")}`));
63
- });
64
- });
65
- const tabHeaders = await Promise.all(context.tabs().map((tab) => tab.headerSnapshot()));
66
- const result = (0, import_response.renderTabsMarkdown)(tabHeaders);
67
- response.addTextResult(result.join("\n"));
68
- }
69
- });
70
- var install_default = [
71
- install
72
- ];
@@ -1,107 +0,0 @@
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 keyboard_exports = {};
20
- __export(keyboard_exports, {
21
- default: () => keyboard_default
22
- });
23
- module.exports = __toCommonJS(keyboard_exports);
24
- var import_mcpBundle = require("playwright-core/lib/mcpBundle");
25
- var import_tool = require("./tool");
26
- var import_snapshot = require("./snapshot");
27
- const pressKey = (0, import_tool.defineTabTool)({
28
- capability: "core",
29
- schema: {
30
- name: "browser_press_key",
31
- title: "Press a key",
32
- description: "Press a key on the keyboard",
33
- inputSchema: import_mcpBundle.z.object({
34
- key: import_mcpBundle.z.string().describe("Name of the key to press or a character to generate, such as `ArrowLeft` or `a`")
35
- }),
36
- type: "input"
37
- },
38
- handle: async (tab, params, response) => {
39
- response.addCode(`// Press ${params.key}`);
40
- response.addCode(`await page.keyboard.press('${params.key}');`);
41
- await tab.page.keyboard.press(params.key);
42
- }
43
- });
44
- const pressSequentially = (0, import_tool.defineTabTool)({
45
- capability: "internal",
46
- schema: {
47
- name: "browser_press_sequentially",
48
- title: "Press sequentially",
49
- description: "Press text sequentially on the keyboard",
50
- inputSchema: import_mcpBundle.z.object({
51
- text: import_mcpBundle.z.string().describe("Text to press sequentially"),
52
- submit: import_mcpBundle.z.boolean().optional().describe("Whether to submit entered text (press Enter after)")
53
- }),
54
- type: "input"
55
- },
56
- handle: async (tab, params, response) => {
57
- response.addCode(`// Press ${params.text}`);
58
- response.addCode(`await page.keyboard.type('${params.text}');`);
59
- await tab.page.keyboard.type(params.text);
60
- if (params.submit) {
61
- response.addCode(`await page.keyboard.press('Enter');`);
62
- response.setIncludeSnapshot();
63
- await tab.waitForCompletion(async () => {
64
- await tab.page.keyboard.press("Enter");
65
- });
66
- }
67
- }
68
- });
69
- const typeSchema = import_snapshot.elementSchema.extend({
70
- text: import_mcpBundle.z.string().describe("Text to type into the element"),
71
- submit: import_mcpBundle.z.boolean().optional().describe("Whether to submit entered text (press Enter after)"),
72
- slowly: import_mcpBundle.z.boolean().optional().describe("Whether to type one character at a time. Useful for triggering key handlers in the page. By default entire text is filled in at once.")
73
- });
74
- const type = (0, import_tool.defineTabTool)({
75
- capability: "core",
76
- schema: {
77
- name: "browser_type",
78
- title: "Type text",
79
- description: "Type text into editable element",
80
- inputSchema: typeSchema,
81
- type: "input"
82
- },
83
- handle: async (tab, params, response) => {
84
- const { locator, resolved } = await tab.refLocator(params);
85
- const secret = tab.context.lookupSecret(params.text);
86
- await tab.waitForCompletion(async () => {
87
- if (params.slowly) {
88
- response.setIncludeSnapshot();
89
- response.addCode(`await page.${resolved}.pressSequentially(${secret.code});`);
90
- await locator.pressSequentially(secret.value);
91
- } else {
92
- response.addCode(`await page.${resolved}.fill(${secret.code});`);
93
- await locator.fill(secret.value);
94
- }
95
- if (params.submit) {
96
- response.setIncludeSnapshot();
97
- response.addCode(`await page.${resolved}.press('Enter');`);
98
- await locator.press("Enter");
99
- }
100
- });
101
- }
102
- });
103
- var keyboard_default = [
104
- pressKey,
105
- type,
106
- pressSequentially
107
- ];
@@ -1,107 +0,0 @@
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 mouse_exports = {};
20
- __export(mouse_exports, {
21
- default: () => mouse_default
22
- });
23
- module.exports = __toCommonJS(mouse_exports);
24
- var import_mcpBundle = require("playwright-core/lib/mcpBundle");
25
- var import_tool = require("./tool");
26
- const elementSchema = import_mcpBundle.z.object({
27
- element: import_mcpBundle.z.string().describe("Human-readable element description used to obtain permission to interact with the element")
28
- });
29
- const mouseMove = (0, import_tool.defineTabTool)({
30
- capability: "vision",
31
- schema: {
32
- name: "browser_mouse_move_xy",
33
- title: "Move mouse",
34
- description: "Move mouse to a given position",
35
- inputSchema: elementSchema.extend({
36
- x: import_mcpBundle.z.number().describe("X coordinate"),
37
- y: import_mcpBundle.z.number().describe("Y coordinate")
38
- }),
39
- type: "input"
40
- },
41
- handle: async (tab, params, response) => {
42
- response.addCode(`// Move mouse to (${params.x}, ${params.y})`);
43
- response.addCode(`await page.mouse.move(${params.x}, ${params.y});`);
44
- await tab.waitForCompletion(async () => {
45
- await tab.page.mouse.move(params.x, params.y);
46
- });
47
- }
48
- });
49
- const mouseClick = (0, import_tool.defineTabTool)({
50
- capability: "vision",
51
- schema: {
52
- name: "browser_mouse_click_xy",
53
- title: "Click",
54
- description: "Click left mouse button at a given position",
55
- inputSchema: elementSchema.extend({
56
- x: import_mcpBundle.z.number().describe("X coordinate"),
57
- y: import_mcpBundle.z.number().describe("Y coordinate")
58
- }),
59
- type: "input"
60
- },
61
- handle: async (tab, params, response) => {
62
- response.setIncludeSnapshot();
63
- response.addCode(`// Click mouse at coordinates (${params.x}, ${params.y})`);
64
- response.addCode(`await page.mouse.move(${params.x}, ${params.y});`);
65
- response.addCode(`await page.mouse.down();`);
66
- response.addCode(`await page.mouse.up();`);
67
- await tab.waitForCompletion(async () => {
68
- await tab.page.mouse.move(params.x, params.y);
69
- await tab.page.mouse.down();
70
- await tab.page.mouse.up();
71
- });
72
- }
73
- });
74
- const mouseDrag = (0, import_tool.defineTabTool)({
75
- capability: "vision",
76
- schema: {
77
- name: "browser_mouse_drag_xy",
78
- title: "Drag mouse",
79
- description: "Drag left mouse button to a given position",
80
- inputSchema: elementSchema.extend({
81
- startX: import_mcpBundle.z.number().describe("Start X coordinate"),
82
- startY: import_mcpBundle.z.number().describe("Start Y coordinate"),
83
- endX: import_mcpBundle.z.number().describe("End X coordinate"),
84
- endY: import_mcpBundle.z.number().describe("End Y coordinate")
85
- }),
86
- type: "input"
87
- },
88
- handle: async (tab, params, response) => {
89
- response.setIncludeSnapshot();
90
- response.addCode(`// Drag mouse from (${params.startX}, ${params.startY}) to (${params.endX}, ${params.endY})`);
91
- response.addCode(`await page.mouse.move(${params.startX}, ${params.startY});`);
92
- response.addCode(`await page.mouse.down();`);
93
- response.addCode(`await page.mouse.move(${params.endX}, ${params.endY});`);
94
- response.addCode(`await page.mouse.up();`);
95
- await tab.waitForCompletion(async () => {
96
- await tab.page.mouse.move(params.startX, params.startY);
97
- await tab.page.mouse.down();
98
- await tab.page.mouse.move(params.endX, params.endY);
99
- await tab.page.mouse.up();
100
- });
101
- }
102
- });
103
- var mouse_default = [
104
- mouseMove,
105
- mouseClick,
106
- mouseDrag
107
- ];