playwright

Browser automation, web scraping, and visual testing with Playwright on Display :1. Use for navigating web pages, clicking elements, filling forms, taking screenshots, executing JavaScript, and visual verification of web applications. Visual access available via VNC on port 5901.

$ Installer

git clone https://github.com/pacphi/sindri /tmp/sindri && cp -r /tmp/sindri/docker/lib/extensions/vf-playwright-mcp/resources ~/.claude/skills/sindri

// tip: Run this command in your terminal to install the skill


name: playwright description: > Browser automation, web scraping, and visual testing with Playwright on Display :1. Use for navigating web pages, clicking elements, filling forms, taking screenshots, executing JavaScript, and visual verification of web applications. Visual access available via VNC on port 5901. version: 2.0.0 author: turbo-flow-claude mcp_server: true protocol: mcp-sdk entry_point: mcp-server/server.js dependencies:

  • chromium
  • playwright

Playwright Skill

Browser automation and visual testing via MCP SDK, with direct browser control on Display :1.

When to Use This Skill

  • Navigate to web pages and capture screenshots
  • Click buttons, links, and interactive elements
  • Fill forms and submit data
  • Execute JavaScript in page context
  • Wait for dynamic content and AJAX responses
  • Visual verification of web applications
  • Web scraping and data extraction
  • End-to-end testing of web UIs

Architecture

┌─────────────────────────────┐
│  Claude Code / VisionFlow   │
│  (MCP Client)               │
└──────────────┬──────────────┘
               │ MCP Protocol (stdio)
               ▼
┌─────────────────────────────┐
│  Playwright MCP Server      │
│  (Consolidated from 3 files)│
└──────────────┬──────────────┘
               │ Direct Playwright API
               ▼
┌─────────────────────────────┐
│  Chromium Browser           │
│  Display :1 (VNC 5901)      │
└─────────────────────────────┘

Tools

ToolDescription
navigateNavigate browser to URL
screenshotCapture screenshot (full page or viewport)
clickClick an element by CSS/XPath selector
typeType text into input field
evaluateExecute JavaScript in page context
wait_for_selectorWait for element to appear/disappear
get_contentGet full HTML content of page
get_urlGet current page URL and title
close_browserClose browser instance
health_checkCheck browser connection health

Examples

// Navigate and screenshot
await navigate({ url: "https://example.com" });
await screenshot({ filename: "homepage.png", fullPage: true });

// Fill and submit a form
await type({ selector: "#email", text: "user@example.com" });
await type({ selector: "#password", text: "secret123" });
await click({ selector: "button[type=submit]" });

// Wait for dynamic content
await wait_for_selector({ selector: ".results-loaded" });

// Execute JavaScript
await evaluate({ script: "document.querySelectorAll('.item').length" });

Environment Variables

VariableDefaultDescription
DISPLAY:1X display for browser
CHROMIUM_PATH/usr/bin/chromiumPath to Chromium binary
PLAYWRIGHT_HEADLESSfalseRun headless (no display)
SCREENSHOT_DIR/tmp/playwright-screenshotsScreenshot output directory
PLAYWRIGHT_TIMEOUT30000Default timeout in ms
VIEWPORT_WIDTH1920Browser viewport width
VIEWPORT_HEIGHT1080Browser viewport height

Visual Access

Browser is visible via VNC:

# Connect with VNC client
vncviewer localhost:5901

# Password: turboflow

VisionFlow Integration

This skill exposes playwright://capabilities and playwright://status resources for discovery by VisionFlow's MCP TCP client on port 9500.