Playwright
微软开源的 Web 自动化与端到端测试框架,用同一套 API 驱动 Chromium、Firefox 与 WebKit,并延伸出 CLI、MCP 与库三种用法,兼顾测试、脚本与 AI Agent 场景。
过去 7 天收获 2 颗 Star
爱鲜报评分
0 人评分
99k
星数
否
中文
TypeScript
主语言
是
活跃
825
贡献者
人工分析
EDITORIAL推荐理由
Playwright 是目前端到端测试领域的事实标准之一,自动等待、语义化定位器与 Trace 回放能显著降低 UI 测试的脆弱性。它还提供面向 AI Agent 的 CLI 与 MCP 服务,把浏览器自动化能力直接接入 Claude Code、Cursor 等工具。对需要跨浏览器验证或做网页采集、PDF 导出的团队来说,一套 API 即可覆盖多种需求。
适用场景
- Web 应用端到端测试与回归
- 跨 Chromium/Firefox/WebKit 兼容性验证
- 网页截图、PDF 导出与数据采集脚本
- AI Agent 浏览器操作(MCP / CLI)
- CI 流水线中的自动化测试
优点
- 单套 API 覆盖三大浏览器内核
- 自动等待与 web-first 断言,减少 flaky 测试
- Trace Viewer 可回放操作、DOM 快照与网络请求
- 测试隔离与登录态复用机制完善
- 官方提供 CLI、MCP、VS Code 扩展等多种入口
缺点
- 浏览器二进制体积较大,首次安装与 CI 缓存成本高
- 生态以 Node.js/TypeScript 为主,其他语言绑定相对滞后
- 复杂场景仍需理解异步与选择器策略,学习曲线不低
- 版本迭代较快,升级时偶有 API 行为变化
项目概览
Playwright 是微软开源的 Web 自动化与测试框架,核心卖点是用同一套 API 驱动 Chromium、Firefox 和 WebKit 三大浏览器内核。它既可作为端到端测试运行器,也可作为浏览器自动化库,还提供面向 AI Agent 的 CLI 与 MCP 服务。
主要形态
| 形态 | 适用场景 | 安装方式 |
|---|---|---|
| Playwright Test | 端到端测试 | npm init playwright@latest |
| Playwright CLI | 编码 Agent(Claude Code、Copilot) | npm i -g @playwright/cli@latest |
| Playwright MCP | AI Agent / LLM 驱动自动化 | npx @playwright/mcp@latest |
| Playwright Library | 浏览器自动化脚本 | npm i playwright |
| VS Code 扩展 | 在编辑器内编写与调试测试 | 从 Marketplace 安装 |
测试能力亮点
自动等待与 web-first 断言
无需人为设置超时,框架会等待元素可操作,断言也会自动重试直到条件满足。
语义化定位器
定位方式贴近用户视角,比 CSS/XPath 更稳定:
page.getByRole('button', { name: 'Submit' })
page.getByLabel('Email')
page.getByPlaceholder('Search...')
page.getByTestId('login-form')
测试隔离与登录态复用
每个测试运行在独立的浏览器上下文中,相当于全新的浏览器配置;登录状态可保存后跨用例复用:
await page.context().storageState({ path: 'auth.json' });
test.use({ storageState: 'auth.json' });
Trace 回放
失败时记录执行轨迹、截图与视频,可在 Trace Viewer 中逐帧查看操作、DOM 快照、网络请求与控制台输出:
export default defineConfig({
use: { trace: 'on-first-retry' },
});
npx playwright show-trace trace.zip
面向 AI Agent 的两种入口
- Playwright CLI:命令行式浏览器自动化,比 MCP 更省 token,避免把庞大的工具 schema 与可访问性树塞进上下文;支持
playwright-cli show查看所有会话的实时画面。 - Playwright MCP:通过 Model Context Protocol 让 Agent 以结构化可访问性快照操作页面,无需视觉模型或截图,元素引用如
e5、e10可确定性地点击与输入。
作为库使用
不依赖测试运行器时,可直接用 playwright 包做截图、PDF 导出、网页采集等:
import { chromium } from 'playwright';
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('https://playwright.dev/');
await page.screenshot({ path: 'screenshot.png' });
await browser.close();
使用建议
- 首次安装需下载浏览器二进制,CI 中建议缓存
~/.cache/ms-playwright。 - 优先使用语义化定位器,减少对 DOM 结构的依赖。
- 在 CI 中开启 trace 与失败重试,便于排查偶发失败。
- 需要跨语言时注意官方绑定以 Node.js/TypeScript 为主,其他语言生态相对滞后。
评论
- 暂无评论,来写第一条吧。