专为 Claude Code 和 Playwright MCP 打造的 YAML 配置如何改变了我们的测试工作流程,让自动化测试变得人人可用
如果你曾经维护过大型 Playwright 测试套件,你一定知道其中的痛苦。数百行 JavaScript 代码散布在数十个文件中,硬编码的值在环境变化时就会崩溃,测试逻辑复杂到只有原作者才敢修改。
如果我告诉你有更好的方法呢?一种任何人都能读懂、天生易维护、功能强大足以处理复杂工作流程的测试编写方式?
让我们来认识 专为 Claude Code 设计的基于 YAML 的 Playwright 测试 —— 一个正在改变团队自动化测试方式的范式转变,它结合了 Claude Code 的 AI 能力和 Playwright MCP 的浏览器自动化技术。
让我们坦诚面对传统 Playwright 测试的问题:
// 传统 Playwright 测试 - 50+ 行代码
test('完整订单流程', async ({ page }) => {
await page.goto('https://example.com');
await page.fill('[data-testid="username"]', 'user123');
await page.fill('[data-testid="password"]', 'pass456');
await page.click('[data-testid="login-btn"]');
await expect(page.locator('h1')).toContainText('仪表盘');
// ... 还有 40+ 行点击、填写、断言的代码
// ... 到处都是硬编码的值
// ... 测试之间无法复用
});
问题所在:
现在想象一下用 YAML 编写的同样测试:
# test-cases/order.yml
tags:
- smoke
- order
- checkout
steps:
- include: "login"
- "点击第一个商品的添加到购物车按钮"
- "点击第二个商品的添加到购物车按钮"
- "点击右上角购物车图标"
- "输入姓名"
- "输入姓氏"
- "输入邮政编码"
- "点击继续按钮"
- "点击完成按钮"
- "验证页面显示 感谢您的订单!"
- include: "cleanup"
立即的好处:
常见工作流程变成了构建块:
# steps/login.yml
steps:
- "打开 {{BASE_URL}} 页面"
- "在用户名字段填入 {{TEST_USERNAME}}"
- "在密码字段填入 {{TEST_PASSWORD}}"
- "点击登录按钮"
- "验证页面显示 Swag Labs"
编写一次,到处使用。告别复制粘贴的疯狂。
不同环境?没问题:
# .env.dev
BASE_URL=https://dev.example.com
TEST_USERNAME=dev_user
# .env.prod
BASE_URL=https://example.com
TEST_USERNAME=prod_user
相同的测试,不同的环境。自动切换。
只运行你需要的测试:
# 只运行冒烟测试
/run-yaml-test tags:smoke
# 运行订单 AND 结账测试
/run-yaml-test tags:order,checkout
# 运行冒烟 OR 关键测试
/run-yaml-test tags:smoke|critical
不再需要在你只改了登录流程时运行整个测试套件。
自动生成的 HTML 报告包含:
使用 YAML 测试之前:
使用 YAML 测试之后:
这个专为 Claude Code 和 Playwright MCP 设计的 YAML Playwright 测试框架由几个关键组件组成:
├── .env.dev # 开发环境
├── .env.test # 测试环境
├── .env.prod # 生产环境
├── steps/
│ ├── login.yml # 认证流程
│ ├── cleanup.yml # 清理程序
│ └── navigation.yml # 常见导航
├── test-cases/
│ ├── order.yml # 电商订单流程
│ ├── user.yml # 用户管理
│ └── search.yml # 搜索功能
框架自动:
include
引用{{BASE_URL}}
)基于 YAML 的测试之美在于其简单性。以下是开始使用的方法:
# 安装 Claude Code(如果尚未安装)
# 访问:https://claude.ai/code
# 为 Claude Code 安装 Playwright MCP
claude mcp add playwright -- npx -y @playwright/mcp@latest
# 克隆 YAML 测试框架
git clone https://github.com/terryso/claude-code-playwright-mcp-test.git
cd claude-code-playwright-mcp-test
your-project/
├── .env.dev # 环境配置
├── steps/ # 可复用步骤库
├── test-cases/ # 你的测试用例
├── screenshots/ # 测试产物
└── reports/ # 生成的报告
# test-cases/login.yml
tags:
- smoke
- auth
steps:
- "打开 {{BASE_URL}} 页面"
- "用户名填入 {{TEST_USERNAME}}"
- "密码填入 {{TEST_PASSWORD}}"
- "点击登录按钮"
- "验证登录成功"
# 在 Claude Code 中使用内置命令
/run-yaml-test file:test-cases/login.yml env:dev
# 或者使用标签过滤运行
/run-yaml-test tags:smoke env:dev
几小时内,你就会拥有比以前编写的任何测试都更易维护的测试。魔法通过 Claude Code 的 AI 理解你的自然语言步骤并由 Playwright MCP 执行为浏览器操作来实现。
# 多条件
/run-yaml-test tags:smoke,login|critical
# 特定环境执行
/run-yaml-test tags:order env:prod
steps:
- "将商品 {{PRODUCT_NAME}} 添加到购物车"
- "设置数量为 {{QUANTITY}}"
- "应用折扣码 {{DISCOUNT_CODE}}"
我们正在走向这样一个世界:
基于 YAML 的 Playwright 测试不仅仅是一个工具——它是一种哲学。它相信测试应该对团队中的每个人都是清晰的、可维护的和可访问的。
问:这与 Cucumber 等现有解决方案相比如何?
答:虽然 Cucumber 需要学习 Gherkin 语法和步骤定义,但这个 YAML 测试框架通过 Claude Code 的 AI 直接使用自然语言解释意图。无需步骤定义映射 - Claude Code 理解你想要做什么。
问:测试调试怎么办?
答:Claude Code 提供详细的执行日志,Playwright MCP 在失败时捕获截图,你还能获得映射回 YAML 步骤的清晰错误消息。AI 上下文有助于快速识别问题。
问:能与 CI/CD 集成吗?
答:当然可以。框架生成标准退出代码和多种报告格式(HTML、JSON、XML),实现无缝 CI/CD 集成。
问:如何处理复杂断言?
答:Claude Code 的 AI 让自然语言断言出人意料地强大:"验证页面包含'谢谢'"、"验证购物车总计等于 ¥43.18"、"验证购物车中有 2 件商品"。AI 理解上下文和意图。
问题不在于这种方法是否更好。问题是:你愿意在脆弱、复杂的测试上浪费多少时间?
开始你的 YAML 测试之旅:
# test-cases/ecommerce-flow.yml
tags: [e2e, purchase, critical]
steps:
- include: "login"
- "搜索商品 '{{PRODUCT_NAME}}'"
- "添加到购物车"
- "查看购物车"
- "结账"
- "填写收货信息"
- "选择支付方式"
- "确认订单"
- "验证订单成功"
# test-cases/user-registration.yml
tags: [smoke, registration]
steps:
- "打开注册页面"
- "填写用户信息"
- "同意条款和条件"
- "提交注册"
- "验证邮箱"
- "验证注册成功"
# test-cases/hybrid-test.yml
tags: [api, ui, integration]
steps:
- "通过 API 创建测试数据"
- include: "login"
- "在 UI 中验证数据显示"
- "执行 UI 操作"
- "通过 API 验证后端状态"
准备好用 Claude Code 和 Playwright MCP 改变你的测试工作流程了吗?测试自动化的未来是可读的、可维护的,并且对每个人都是可访问的。
🔗 立即开始: https://github.com/terryso/claude-code-playwright-mcp-test
你当前 Playwright 测试的最大痛点是什么?基于 YAML 的测试配合 Claude Code 如何为你的团队解决这个问题?
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。