| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- "use strict";
- var __create = Object.create;
- var __defProp = Object.defineProperty;
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
- var __getOwnPropNames = Object.getOwnPropertyNames;
- var __getProtoOf = Object.getPrototypeOf;
- var __hasOwnProp = Object.prototype.hasOwnProperty;
- var __export = (target, all) => {
- for (var name in all)
- __defProp(target, name, { get: all[name], enumerable: true });
- };
- var __copyProps = (to, from, except, desc) => {
- if (from && typeof from === "object" || typeof from === "function") {
- for (let key of __getOwnPropNames(from))
- if (!__hasOwnProp.call(to, key) && key !== except)
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
- }
- return to;
- };
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
- // If the importer is in node compatibility mode or this is not an ESM
- // file that has been converted to a CommonJS file using a Babel-
- // compatible transform (i.e. "__esModule" has not been set), then set
- // "default" to the CommonJS "module.exports" for node compatibility.
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
- mod
- ));
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
- var snapshot_exports = {};
- __export(snapshot_exports, {
- default: () => snapshot_default,
- elementSchema: () => elementSchema
- });
- module.exports = __toCommonJS(snapshot_exports);
- var import_bundle = require("../../sdk/bundle");
- var import_tool = require("./tool");
- var javascript = __toESM(require("../codegen"));
- const snapshot = (0, import_tool.defineTool)({
- capability: "core",
- schema: {
- name: "browser_snapshot",
- title: "Page snapshot",
- description: "Capture accessibility snapshot of the current page, this is better than screenshot",
- inputSchema: import_bundle.z.object({}),
- type: "readOnly"
- },
- handle: async (context, params, response) => {
- await context.ensureTab();
- response.setIncludeSnapshot("full");
- }
- });
- const elementSchema = import_bundle.z.object({
- element: import_bundle.z.string().describe("Human-readable element description used to obtain permission to interact with the element"),
- ref: import_bundle.z.string().describe("Exact target element reference from the page snapshot")
- });
- const clickSchema = elementSchema.extend({
- doubleClick: import_bundle.z.boolean().optional().describe("Whether to perform a double click instead of a single click"),
- button: import_bundle.z.enum(["left", "right", "middle"]).optional().describe("Button to click, defaults to left"),
- modifiers: import_bundle.z.array(import_bundle.z.enum(["Alt", "Control", "ControlOrMeta", "Meta", "Shift"])).optional().describe("Modifier keys to press")
- });
- const click = (0, import_tool.defineTabTool)({
- capability: "core",
- schema: {
- name: "browser_click",
- title: "Click",
- description: "Perform click on a web page",
- inputSchema: clickSchema,
- type: "input"
- },
- handle: async (tab, params, response) => {
- response.setIncludeSnapshot();
- const { locator, resolved } = await tab.refLocator(params);
- const options = {
- button: params.button,
- modifiers: params.modifiers
- };
- const formatted = javascript.formatObject(options, " ", "oneline");
- const optionsAttr = formatted !== "{}" ? formatted : "";
- if (params.doubleClick)
- response.addCode(`await page.${resolved}.dblclick(${optionsAttr});`);
- else
- response.addCode(`await page.${resolved}.click(${optionsAttr});`);
- await tab.waitForCompletion(async () => {
- if (params.doubleClick)
- await locator.dblclick(options);
- else
- await locator.click(options);
- });
- }
- });
- const drag = (0, import_tool.defineTabTool)({
- capability: "core",
- schema: {
- name: "browser_drag",
- title: "Drag mouse",
- description: "Perform drag and drop between two elements",
- inputSchema: import_bundle.z.object({
- startElement: import_bundle.z.string().describe("Human-readable source element description used to obtain the permission to interact with the element"),
- startRef: import_bundle.z.string().describe("Exact source element reference from the page snapshot"),
- endElement: import_bundle.z.string().describe("Human-readable target element description used to obtain the permission to interact with the element"),
- endRef: import_bundle.z.string().describe("Exact target element reference from the page snapshot")
- }),
- type: "input"
- },
- handle: async (tab, params, response) => {
- response.setIncludeSnapshot();
- const [start, end] = await tab.refLocators([
- { ref: params.startRef, element: params.startElement },
- { ref: params.endRef, element: params.endElement }
- ]);
- await tab.waitForCompletion(async () => {
- await start.locator.dragTo(end.locator);
- });
- response.addCode(`await page.${start.resolved}.dragTo(page.${end.resolved});`);
- }
- });
- const hover = (0, import_tool.defineTabTool)({
- capability: "core",
- schema: {
- name: "browser_hover",
- title: "Hover mouse",
- description: "Hover over element on page",
- inputSchema: elementSchema,
- type: "input"
- },
- handle: async (tab, params, response) => {
- response.setIncludeSnapshot();
- const { locator, resolved } = await tab.refLocator(params);
- response.addCode(`await page.${resolved}.hover();`);
- await tab.waitForCompletion(async () => {
- await locator.hover();
- });
- }
- });
- const selectOptionSchema = elementSchema.extend({
- values: import_bundle.z.array(import_bundle.z.string()).describe("Array of values to select in the dropdown. This can be a single value or multiple values.")
- });
- const selectOption = (0, import_tool.defineTabTool)({
- capability: "core",
- schema: {
- name: "browser_select_option",
- title: "Select option",
- description: "Select an option in a dropdown",
- inputSchema: selectOptionSchema,
- type: "input"
- },
- handle: async (tab, params, response) => {
- response.setIncludeSnapshot();
- const { locator, resolved } = await tab.refLocator(params);
- response.addCode(`await page.${resolved}.selectOption(${javascript.formatObject(params.values)});`);
- await tab.waitForCompletion(async () => {
- await locator.selectOption(params.values);
- });
- }
- });
- const pickLocator = (0, import_tool.defineTabTool)({
- capability: "testing",
- schema: {
- name: "browser_generate_locator",
- title: "Create locator for element",
- description: "Generate locator for the given element to use in tests",
- inputSchema: elementSchema,
- type: "readOnly"
- },
- handle: async (tab, params, response) => {
- const { resolved } = await tab.refLocator(params);
- response.addResult(resolved);
- }
- });
- var snapshot_default = [
- snapshot,
- click,
- drag,
- hover,
- selectOption,
- pickLocator
- ];
- // Annotate the CommonJS export names for ESM import in node:
- 0 && (module.exports = {
- elementSchema
- });
|