AgentSkillsCN

playwright-mcp-ui-testing

借助 Playwright MCP 对 Wavecraft Web UI 进行可视化界面测试,与用户交互,验证界面组件的外观表现、截取屏幕截图,或对需浏览器交互的 UI 行为进行有效性验证。此技能要求开发服务器已启动(执行 cargo xtask dev)。

SKILL.md
--- frontmatter
name: playwright-mcp-ui-testing
description: Visual UI testing using Playwright MCP to interact with the Wavecraft web UI. Use this skill when testing UI components, verifying visual appearance, taking screenshots, or validating UI behavior that requires browser interaction. Requires the dev server running (cargo xtask dev).

Skill: Visual UI Testing with Playwright MCP

Use Playwright MCP tools to visually test the Wavecraft UI during manual testing sessions.

Prerequisites

  1. Dev servers will be auto-started by the agent using background process
  2. Playwright installed: cd ui && npm run playwright:install (first time only)

Starting Dev Server (Automated)

The agent can start the dev server automatically without user intervention:

bash
# Agent runs this in background:
run_in_terminal(
  command="cd /Users/ronhouben/code/private/wavecraft && cargo run --manifest-path engine/xtask/Cargo.toml --release -- dev",
  isBackground=true
)
# Returns terminal_id for later status checks

Wait for server startup:

bash
# Dev server needs ~5 seconds to compile and start Vite
sleep 5
# Playwright will handle connection verification

Stopping the server (when done testing):

bash
# Kill the background process:
pkill -f "cargo xtask dev"

Quick Workflow

code
1. Start dev server:     run_in_terminal(..., isBackground=true)
2. Wait for startup:     sleep 5
3. Navigate to UI:       mcp_playwright_browser_navigate → http://localhost:5173
                         (Playwright will fail with timeout if server isn't ready)
4. Wait for load:        mcp_playwright_browser_wait_for → "Wavecraft" text
5. Get page state:       mcp_playwright_browser_snapshot
6. Take screenshot:      mcp_playwright_browser_take_screenshot
7. Interact:             mcp_playwright_browser_click, _type, etc.
8. Close browser:        mcp_playwright_browser_close
9. Stop server:          pkill -f "cargo xtask dev"

MCP Tool Reference

Navigation & State

ToolPurposeExample
browser_navigateOpen URLurl: "http://localhost:5173"
browser_snapshotGet accessibility tree (preferred for interactions)
browser_take_screenshotCapture PNGtype: "png", filename: "meter.png"
browser_wait_forWait for text/timetext: "Wavecraft" or time: 2

Interactions

ToolPurposeKey Parameters
browser_clickClick elementref: "E123" from snapshot
browser_typeType textref: "E123", text: "value"
browser_hoverHover elementref: "E123"
browser_press_keyKeyboard inputkey: "Enter"

Lifecycle

ToolPurpose
browser_tabsList/create/close tabs
browser_closeClose browser

Test ID Selectors

All Wavecraft components have data-testid attributes. Use with snapshot refs:

ComponentTest IDUsage
App rootapp-rootFull page loaded
MetermeterMeter container
Left channelmeter-LLeft meter row
Clip buttonmeter-clip-buttonClipping indicator
Parameterparam-{id}e.g., param-gain
Sliderparam-{id}-sliderRange input
Versionversion-badgeVersion display
Connectionconnection-statusWebSocket status

Common Test Patterns

Verify Page Load

code
1. browser_navigate → http://localhost:5173
2. browser_wait_for → text: "Wavecraft"
3. browser_snapshot → verify app-root visible

Screenshot Full Page

code
1. browser_take_screenshot → type: "png", fullPage: true

Screenshot Component

code
1. browser_snapshot → find ref for [data-testid="meter"]
2. browser_take_screenshot → ref: "E123", element: "meter component"

Verify Version Display

code
1. browser_snapshot → find version-badge element
2. Verify text matches expected version

Test Slider Interaction

code
1. browser_snapshot → find param-gain-slider ref
2. browser_click → ref for slider
3. browser_type → new value
4. browser_snapshot → verify value updated

Troubleshooting

IssueSolution
Page blankVerify cargo xtask dev is running
Connection errorCheck WebSocket server on port 9000
Element not foundUse browser_snapshot to see current refs
Browser not installedRun mcp_playwright_browser_install

Reference

Full test ID registry and baseline management: docs/guides/visual-testing.md