Skip to main content
Glama
jomon003

PlayMCP Browser Automation Server

by jomon003

waitForText

Pauses automation until specified text appears on a webpage, ensuring reliable synchronization for scraping or testing workflows.

Instructions

Wait for specific text to appear on the page

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textYes
timeoutNoTimeout in milliseconds (default: 30000)

Implementation Reference

  • Core implementation of the waitForText tool using Playwright's waitForSelector with text selector to wait for specific text on the page.
    async waitForText(text: string, timeout: number = 30000): Promise<void> {
      try {
        if (!this.isInitialized() || !this.state.page) {
          throw new Error('Browser not initialized');
        }
        this.log('Waiting for text', { text, timeout });
        await this.state.page.waitForSelector(`text=${text}`, { timeout });
        this.log('Text found');
      } catch (error: any) {
        console.error('Wait for text error:', error);
        throw new BrowserError('Text not found within timeout', 'Check if the text appears on the page');
      }
    }
  • MCP tool dispatcher handler in callTool request handler that validates input and delegates to PlaywrightController.waitForText.
    case 'waitForText': {
      if (!args.text) {
        return {
          content: [{ type: "text", text: "Text is required" }],
          isError: true
        };
      }
      await playwrightController.waitForText(args.text as string, args.timeout as number);
      return {
        content: [{ type: "text", text: "Text found successfully" }]
      };
    }
  • Tool metadata and input schema definition specifying parameters 'text' (required) and 'timeout' (optional).
    const WAIT_FOR_TEXT_TOOL: Tool = {
      name: "waitForText",
      description: "Wait for specific text to appear on the page",
      inputSchema: {
        type: "object",
        properties: {
          text: { type: "string" },
          timeout: { 
            type: "number",
            description: "Timeout in milliseconds (default: 30000)"
          }
        },
        required: ["text"]
      }
    };
  • src/server.ts:514-552 (registration)
    Registers the waitForText tool (via WAIT_FOR_TEXT_TOOL) in the MCP server's tools object, which is passed to server capabilities.
    const tools = {
      openBrowser: OPEN_BROWSER_TOOL,
      navigate: NAVIGATE_TOOL,
      type: TYPE_TOOL,
      click: CLICK_TOOL,
      moveMouse: MOVE_MOUSE_TOOL,
      scroll: SCROLL_TOOL,
      screenshot: SCREENSHOT_TOOL,
      getPageSource: GET_PAGE_SOURCE_TOOL,
      getPageText: GET_PAGE_TEXT_TOOL,
      getPageTitle: GET_PAGE_TITLE_TOOL,
      getPageUrl: GET_PAGE_URL_TOOL,
      getScripts: GET_SCRIPTS_TOOL,
      getStylesheets: GET_STYLESHEETS_TOOL,
      getMetaTags: GET_META_TAGS_TOOL,
      getLinks: GET_LINKS_TOOL,
      getImages: GET_IMAGES_TOOL,
      getForms: GET_FORMS_TOOL,
      getElementContent: GET_ELEMENT_CONTENT_TOOL,
      getElementHierarchy: GET_ELEMENT_HIERARCHY_TOOL,
      executeJavaScript: EXECUTE_JAVASCRIPT_TOOL,
      goForward: GO_FORWARD_TOOL,
      hover: HOVER_TOOL,
      dragAndDrop: DRAG_AND_DROP_TOOL,
      selectOption: SELECT_OPTION_TOOL,
      pressKey: PRESS_KEY_TOOL,
      waitForText: WAIT_FOR_TEXT_TOOL,
      waitForSelector: WAIT_FOR_SELECTOR_TOOL,
      resize: RESIZE_TOOL,
      handleDialog: HANDLE_DIALOG_TOOL,
      getConsoleMessages: GET_CONSOLE_MESSAGES_TOOL,
      getNetworkRequests: GET_NETWORK_REQUESTS_TOOL,
      uploadFiles: UPLOAD_FILES_TOOL,
      evaluateWithReturn: EVALUATE_WITH_RETURN_TOOL,
      takeScreenshot: TAKE_SCREENSHOT_TOOL,
      mouseMove: MOUSE_MOVE_TOOL,
      mouseClick: MOUSE_CLICK_TOOL,
      mouseDrag: MOUSE_DRAG_TOOL,
      closeBrowser: CLOSE_BROWSER_TOOL

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jomon003/PlayMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server