测试与断言
🌐 Testing & Assertions
验证页面状态并生成 Playwright 测试代码。需要 testing 功能。
🌐 Verify page state and generate Playwright test code. Requires the testing capability.
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest", "--caps=testing"]
}
}
}
验证元素
🌐 Verify elements
browser_verify_element_visible
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
role | 字符串 | 是 | ARIA 角色(button、heading、link、textbox 等) |
name | 字符串 | 是 | 可访问名称 |
→ browser_verify_element_visible { role: "heading", name: "Dashboard" }
✓ Element visible: heading "Dashboard"
→ browser_verify_element_visible { role: "button", name: "Submit" }
✗ Element not visible: button "Submit"
browser_verify_text_visible
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
text | 字符串 | 是 | 要查找的文本 |
→ browser_verify_text_visible { text: "3 items left" }
✓ Text visible: "3 items left"
browser_verify_list_visible
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
label | string | 是 | 列表的可访问名称 |
items | string[] | 是 | 预期的列表项 |
→ browser_verify_list_visible {
label: "Todo list",
items: ["Buy groceries", "Walk the dog", "Read a book"]
}
✓ List "Todo list" visible with 3 matching items
browser_verify_value
| 参数 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
ref | 字符串 | 是 | 元素引用 |
value | 字符串 | 是 | 期望值 |
→ browser_verify_value { ref: "e3", value: "alice@example.com" }
✓ Value matches: "alice@example.com"
生成测试代码
🌐 Generate test code
browser_generate_locator
为一个元素生成 Playwright 定位器,在将探索性自动化转换为测试文件时非常有用。
🌐 Generate a Playwright locator for an element, useful when converting exploratory automation into test files.
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
ref | 字符串 | 是 | 元素引用 |
→ browser_generate_locator { ref: "e15" }
page.getByRole('button', { name: 'Submit' })
→ browser_generate_locator { ref: "e3" }
page.getByLabel('Email')
工作流:探索性测试用于测试代码
🌐 Workflow: exploratory testing to test code
→ browser_navigate { url: "https://demo.playwright.dev/todomvc" }
→ browser_type { ref: "e5", text: "Buy groceries", submit: true }
// Generated: await page.getByPlaceholder('What needs to be done?').fill('Buy groceries');
// Generated: await page.getByPlaceholder('What needs to be done?').press('Enter');
→ browser_verify_text_visible { text: "Buy groceries" }
// Generated: await expect(page.getByText('Buy groceries')).toBeVisible();
→ browser_click { ref: "e10" }
// Generated: await page.getByRole('checkbox', { name: 'Toggle Todo' }).click();
→ browser_verify_text_visible { text: "0 items left" }
// Generated: await expect(page.getByText('0 items left')).toBeVisible();
生成的代码可以被组装成一个 Playwright 测试:
🌐 The generated code can be assembled into a Playwright test:
test('add and complete todo', async ({ page }) => {
await page.goto('https://demo.playwright.dev/todomvc');
await page.getByPlaceholder('What needs to be done?').fill('Buy groceries');
await page.getByPlaceholder('What needs to be done?').press('Enter');
await expect(page.getByText('Buy groceries')).toBeVisible();
await page.getByRole('checkbox', { name: 'Toggle Todo' }).click();
await expect(page.getByText('0 items left')).toBeVisible();
});
工作流程:测试表单验证
🌐 Workflow: testing form validation
→ browser_navigate { url: "https://app.example.com/register" }
→ browser_click { ref: "e9" } // Submit empty form
→ browser_verify_text_visible { text: "Email is required" }
✓ Text visible
→ browser_type { ref: "e3", text: "not-an-email" }
→ browser_click { ref: "e9" }
→ browser_verify_text_visible { text: "Please enter a valid email" }
✓ Text visible
→ browser_type { ref: "e3", text: "alice@example.com" }
→ browser_type { ref: "e5", text: "password123" }
→ browser_type { ref: "e7", text: "password456" }
→ browser_click { ref: "e9" }
→ browser_verify_text_visible { text: "Passwords do not match" }
✓ Text visible