惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
Scott Helme
Scott Helme
P
Proofpoint News Feed
T
Threat Research - Cisco Blogs
C
CERT Recently Published Vulnerability Notes
P
Privacy & Cybersecurity Law Blog
云风的 BLOG
云风的 BLOG
V
Visual Studio Blog
Martin Fowler
Martin Fowler
Cisco Talos Blog
Cisco Talos Blog
罗磊的独立博客
MyScale Blog
MyScale Blog
博客园 - 【当耐特】
L
LangChain Blog
AWS News Blog
AWS News Blog
Security Latest
Security Latest
C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Proofpoint News Feed
T
True Tiger Recordings
aimingoo的专栏
aimingoo的专栏
宝玉的分享
宝玉的分享
月光博客
月光博客
The Hacker News
The Hacker News
L
Lohrmann on Cybersecurity
The GitHub Blog
The GitHub Blog
Stack Overflow Blog
Stack Overflow Blog
S
SegmentFault 最新的问题
Recorded Future
Recorded Future
S
Security Archives - TechRepublic
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
Y
Y Combinator Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
大猫的无限游戏
大猫的无限游戏
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
博客园 - 聂微东
GbyAI
GbyAI
N
News and Events Feed by Topic
The Cloudflare Blog
Engineering at Meta
Engineering at Meta
Last Week in AI
Last Week in AI
博客园 - 三生石上(FineUI控件)
G
Google Developers Blog
A
About on SuperTechFans
K
Kaspersky official blog
NISL@THU
NISL@THU
S
Securelist
Microsoft Azure Blog
Microsoft Azure Blog
V
V2EX - 技术

V2EX

[程序员] 免费共享自己的 token 给大家一起用 极豹代理注册送 500M 动态住宅流量 静态住宅 3 刀起 [Codex] 好像没有人说 ChatGPT 账户登录的 Codex,不支持 GPT-5.3 Codex、GPT-5.4 等模型了 有没有一种工作能每天稳定收入 10-50 元 [分享创造] 谁还记得 K-MeleonCCF 网页浏览器 [分享发现] 从 0 开始 vibe coding,产品上线一个月 1500+用户,我对用户增长的一些思考 [Windows] 卡巴斯基安全软件和卡巴斯基标准版选择哪个? [程序员] 做了一个本地音频处理 + 伪知识库应用,强依赖本地 ASR 模型,这种项目开源有意义吗? [Linux] 国产 Touchpad 在 arch 下偶发无法用手势 [问与答] 有老哥用 Portainer 吗? webhook 调用成功但是没有重新部署,哪位有经验? [问与答] 现在比较可靠的国外手机卡选哪家? [路由器] MikroTik RB5009 在 2026 是否还值得入手 [硬件] 外置硬盘有什么散热的好方案,太热了 OpenCode 的压缩算法有建议的兄弟们吗?主要是写 LaTeX 论文。 今年 618 是凉了吗 现在各类所谓戒网瘾机构真的太吓人了. 芒果 TV 好像在送免费的 glm 5.1 和 ds v4? 有大佬知道开了 ChatGPT plus 年费的情况下,可以再升级成 pro 吗?想只升级一个月用用 [分享创造] [分享创造] 做了一个纯本地的加密日记本,已上架 Google Play android 大佬们,有什么隐藏开发者 usb 调试的方案吗? [Visual Studio Code] VSCode 1.122.0 可以离线使用 BYOK 分析下“女生拒绝你,却还和你保持联系”这种现象 [宽带症候群] 部分机场拦截 SSL 连接,导致很多非浏览器软件的代理链路残废 [推广] [DDShub.cc]呆呆兽 Claude/CodeX 中转站,内含免费测试金 [程序员] 个人 side project 的设计工具用什么 今天 CPA 升级到 7.1.25 Codex free 只有 4 个模型了, gpt-5.5 还在,大家是不是这样? mimo 昨天重置之后为什么现在这么慢,是我的错觉吗 AI 编程是否是一种无效内卷? 做了个 Chrome 插件 DemoAlias,录 demo 时一键替换敏感数据 [Pixel] 想要入手个带一个 Sim 卡的 pixel10 在那块买更好 觉得现在入手合适吗 Mac pro M1 磁盘扩容问题 小米 mimo 模式是不是挂了,现在无应答了 Gemini 最近是降智了吗? 3.5 快是快但是回答的质量变差了 [程序员] 祝贺我司,月收入突破万刀~ [分享发现] [翻译] 为什么我要用 C# 构建数据库引擎 [分享创造] 使用 Skills 结合 NotebookLM 一人运营十个视频号 用 AI 如何做出好看的前端页面? 记一次令我非常无语的面试 [分享创造] GEO Wiki: 一个面向生成式引擎优化的百科全书 [分享发现] 哪位友友有滴滴 V8 [问与答] 有没有听力不太好,用苹果 air pod 的 [分享创造] Obsidian-Extensions-Activity 0.2 - 更好用的三方插件管理工具 《HelloGitHub》第 122 期 有没有阿里云的大佬,来说说这是真的,还是销售吹的? [Android] 看到 k80 可以解锁了 原来大型活动和人流量较多的地方有警察执勤并不是中国特色 [开源实时数字人] 商业级部署演示! 同时我们消费级卡的部署链路已经通啦,欢迎提意见~ [问与答] AI 搜索互联网资讯有啥好用的接口没? [副业] 跟风开了一个自助洗车店 [macOS] Mac 盖上盖子使用之后,每次开屏屏幕会花,这个是硬件问题还是驱动问题呢? 闪电藤即将下线,虾传正式上线 [DeepSeek] 今天 deepseek 崩了吗 codex 土区的 plus,能改成美区的 pro 吗,会触发手机验证吗 大家用过 Qwen3.7-Max 吗,说是比 GLM5.1, KIMI2.6 还强,真的假的? anthropic 既然如此抵触 cn,但是多国语言又提供简体中文? [程序员] 英语学了几十年,还是听不懂说不出,大家都是怎么练听说的? [问与答] 感觉有点 ai 阳痿了,话说你们都用 ai 做了啥 分享一个我做的 Apple Watch 独立游戏——30 秒打地鼠 [OpenAI] 有时候感觉言出法随比使用 superpowers 更方便快捷 [问与答] 有没有云南的?昆明彩礼一般多少啊? [生活] 我的无奈,我很想她,但是这不再可能 朋友用美国身份注册了 claude 账号,在国内使用会被封吗 [职场话题] 北京裁员赔偿上限是多少啊 [推广] 做了一个 AI 中转站 Lumi,新用户可免费订阅,每周送 2 元额度 17PM 7999 PDD、淘宝百亿补贴 [问与答] 我的 codex app 为什么这样? [分享创造] 无聊开发了一个蚊子白噪音助眠小程序,适合烦朋友 [程序员] Cursor 滞销了, 60 刀套餐回归玩家首月给 70% off [Wunder] edge.v2ex.com/chat 20260527 功能更新 [问与答] 寻找 image2,香蕉, seedance2 的 api; 取精室是怎么个流程?取不出来怎么办? opencode go 里的 mimov2.5 系列额度涨了 [酷工作] Crypto CEX 诚聘 AI 测试工程师 薪水 20K-30K RMB 纯远程办公 [生活] 你有给自己买什么商业保险吗,或者说有必要买商业保险吗 claude 发的这句话啥意思,说我问的多了吗 Quantumult X 又更新了 配置优化更新了一下 [问与答] 不知道是不是错觉, typeless 在 Macbook 上的耗电感觉有点快 老婆送了我个 iPhone17 Pro Max 1T,但我更舍不得我的 iPhone13 巨魔 福利: 4 个住宅 IP 兑换码,新用户专享 mac 笔记本 500G,开发用,现在没有储存空间了怎么办 是否存在港卡以外的其他选择?比如东南亚各国? DigVPS 测评 - 100TB 新增美国 Los Angeles - Global Tier1 产品:这应该是 Y 系第一个美国产品?限量九折优惠中。 [程序员] OpenCode x MiMo V2.5 - 限时免费 现在的你有哪些骄傲和无奈呢 香港金管局:就内地投资者投资账户新增三项监管措施 开户核查倒查至 2023 年 1 月 做了个 macOS 网站与应用拦截器, 保持专注. [小米] 有没有安卓玩机高手请教点问题 我发现 it 类工作者是最严重的性压抑群体 包括我自己 it 类的工作者 [开源] 高阶魔方一键求解器 Cursor 还能买吗, 20 刀和 60 刀的大概能用多久? ai studio 被疯狂封 api 怎么回事 Zerolang 好像还没人讨论? [问与答] token 用量究竟是怎么算的? 香港众安银行开户返 300HKD+50USD 英伟达股票兑换券 活动时间 5.28 日至 7.1 日截止。 vibe coding 了个辅助颈腰椎病康复的体态相机小工具 有在用免费 VPS 的吗?可以当梯子用吗? 这个 sechub 网站搬运了很多 V 站的内容,站方能管到它吗 我的 AI(LLM) 和 vibe coding 使用技巧已经落伍了吗 我做了一个 Agent Team 协作平台——Rudder:让 Agent Team 在实践中成长 react 这个技术栈到底是如何做到每天都有新发现的?
专为 Claude Code 设计的基于 YAML 的 Playwright UI 自动化测试
terryso · 2025-06-19 · via V2EX

专为 Claude Code 和 Playwright MCP 打造的 YAML 配置如何改变了我们的测试工作流程,让自动化测试变得人人可用


如果你曾经维护过大型 Playwright 测试套件,你一定知道其中的痛苦。数百行 JavaScript 代码散布在数十个文件中,硬编码的值在环境变化时就会崩溃,测试逻辑复杂到只有原作者才敢修改。

如果我告诉你有更好的方法呢?一种任何人都能读懂天生易维护功能强大足以处理复杂工作流程的测试编写方式?

让我们来认识 专为 Claude Code 设计的基于 YAML 的 Playwright 测试 —— 一个正在改变团队自动化测试方式的范式转变,它结合了 Claude Code 的 AI 能力和 Playwright MCP 的浏览器自动化技术。

传统 Playwright 测试的问题

让我们坦诚面对传统 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 革命:让测试变得有意义

现在想象一下用 YAML 编写的同样测试:

# test-cases/order.yml
tags: 
  - smoke
  - order
  - checkout

steps:
  - include: "login"
  - "点击第一个商品的添加到购物车按钮"
  - "点击第二个商品的添加到购物车按钮"
  - "点击右上角购物车图标"
  - "输入姓名"
  - "输入姓氏"
  - "输入邮政编码"
  - "点击继续按钮"
  - "点击完成按钮"
  - "验证页面显示 感谢您的订单!"
  - include: "cleanup"

立即的好处:

  • 意图清晰 — 任何人都能理解这个测试的作用
  • 自然语言 — 步骤读起来就像用户故事
  • 可复用组件 — 登录和清理步骤可以在多个测试间共享
  • 环境无关 — 看不到任何硬编码的值

简洁背后的魔法

1. 可复用的步骤库

常见工作流程变成了构建块:

# steps/login.yml
steps:
  - "打开 {{BASE_URL}} 页面"
  - "在用户名字段填入 {{TEST_USERNAME}}"
  - "在密码字段填入 {{TEST_PASSWORD}}"
  - "点击登录按钮"
  - "验证页面显示 Swag Labs"

编写一次,到处使用。告别复制粘贴的疯狂。

2. 环境变量的魔法

不同环境?没问题:

# .env.dev
BASE_URL=https://dev.example.com
TEST_USERNAME=dev_user

# .env.prod  
BASE_URL=https://example.com
TEST_USERNAME=prod_user

相同的测试,不同的环境。自动切换。

3. 智能标签过滤

只运行你需要的测试:

# 只运行冒烟测试
/run-yaml-test tags:smoke

# 运行订单 AND 结账测试
/run-yaml-test tags:order,checkout

# 运行冒烟 OR 关键测试
/run-yaml-test tags:smoke|critical

不再需要在你只改了登录流程时运行整个测试套件。

4. 智能报告

自动生成的 HTML 报告包含:

  • ✅ 逐步执行详情
  • ✅ 环境配置信息
  • ✅ 截图和测试产物
  • ✅ 成功/失败统计

真实世界的影响:案例研究

使用 YAML 测试之前:

  • 📊 2000+ 行 Playwright JavaScript 代码
  • ⏱️ 3 天培训新 QA 团队成员
  • 🐛 15+ 个测试失败每次环境变化
  • 👥 只有 3 个开发人员能修改测试

使用 YAML 测试之后:

  • 📊 200 行可读的 YAML 代码
  • ⏱️ 30 分钟培训新团队成员
  • 🐛 0 个测试失败在环境变化期间
  • 👥 整个团队都能编写和修改测试

为什么这对你的团队很重要

对开发人员:

  • 更少时间写样板代码,更多时间构建功能
  • 测试真正记录了应用程序的行为
  • 不再有"让我快速修复这个测试"的兔子洞

对 QA 工程师:

  • 专注于测试策略,而不是 JavaScript 语法
  • 快速创建和修改测试
  • 清晰的测试覆盖率可见性

对产品经理:

  • 测试读起来就像验收标准
  • 容易验证测试是否符合需求
  • 对重要流程的覆盖充满信心

对 DevOps:

  • 可预测的跨环境测试执行
  • 清晰的失败报告和调试
  • 易于与 CI/CD 管道集成

技术架构:工作原理

这个专为 Claude CodePlaywright MCP 设计的 YAML Playwright 测试框架由几个关键组件组成:

Claude Code 集成

  • AI 驱动执行:Claude Code 的 AI 解释自然语言测试步骤并转换为 Playwright 操作
  • 智能步骤识别:从纯英文描述中高级理解测试意图
  • 上下文感知:在测试步骤间保持上下文,实现更智能的自动化

Playwright MCP 基础

  • 浏览器自动化:利用 Playwright MCP 进行可靠的跨浏览器测试
  • 元素检测:智能元素查找和交互
  • 截图和报告:内置捕获和文档功能

多环境配置

├── .env.dev          # 开发环境
├── .env.test         # 测试环境
├── .env.prod         # 生产环境

可复用步骤库

├── steps/
│   ├── login.yml     # 认证流程
│   ├── cleanup.yml   # 清理程序
│   └── navigation.yml # 常见导航

使用自然语言的测试用例

├── test-cases/
│   ├── order.yml     # 电商订单流程
│   ├── user.yml      # 用户管理
│   └── search.yml    # 搜索功能

智能执行引擎

框架自动:

  1. 加载特定环境的配置
  2. 从步骤库展开 include 引用
  3. 替换环境变量({{BASE_URL}}
  4. 使用 Playwright MCP 执行测试
  5. 生成综合报告

开始使用:你的第一个 YAML 测试

基于 YAML 的测试之美在于其简单性。以下是开始使用的方法:

1. 先决条件

# 安装 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

2. 项目结构

your-project/
├── .env.dev              # 环境配置
├── steps/               # 可复用步骤库
├── test-cases/          # 你的测试用例
├── screenshots/         # 测试产物
└── reports/            # 生成的报告

3. 编写你的第一个测试

# test-cases/login.yml
tags:
  - smoke
  - auth

steps:
  - "打开 {{BASE_URL}} 页面"
  - "用户名填入 {{TEST_USERNAME}}"
  - "密码填入 {{TEST_PASSWORD}}"
  - "点击登录按钮"
  - "验证登录成功"

4. 执行和迭代

# 在 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}}"

综合报告

  • HTML 报告:美观的交互式测试报告
  • JSON/XML 输出:用于 CI/CD 集成
  • 截图捕获:自动失败记录
  • 性能指标:执行时间和统计信息

未来是可读的

我们正在走向这样一个世界:

  • 测试是可执行的文档
  • 任何人都能为测试自动化做贡献
  • 维护是一种乐趣,而不是负担
  • 环境只是配置问题

基于 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 测试之旅:

  1. 获取 Claude Code:安装 Claude Code 和 Playwright MCP
  2. 试用演示:从 https://github.com/terryso/claude-code-playwright-mcp-test 克隆项目并运行你的第一个 YAML 测试
  3. 转换一个测试:拿你最复杂的 Playwright 测试用 YAML 重写
  4. 与团队分享:向他们展示可读测试的强大
  5. 逐步扩展:当你看到好处时转换更多测试

实际应用场景

电商平台测试

# test-cases/ecommerce-flow.yml
tags: [e2e, purchase, critical]
steps:
  - include: "login"
  - "搜索商品 '{{PRODUCT_NAME}}'"
  - "添加到购物车"
  - "查看购物车"
  - "结账"
  - "填写收货信息"
  - "选择支付方式"
  - "确认订单"
  - "验证订单成功"

用户注册流程

# test-cases/user-registration.yml
tags: [smoke, registration]
steps:
  - "打开注册页面"
  - "填写用户信息"
  - "同意条款和条件"
  - "提交注册"
  - "验证邮箱"
  - "验证注册成功"

API 与 UI 混合测试

# test-cases/hybrid-test.yml
tags: [api, ui, integration]
steps:
  - "通过 API 创建测试数据"
  - include: "login"
  - "在 UI 中验证数据显示"
  - "执行 UI 操作"
  - "通过 API 验证后端状态"

团队采用策略

第一阶段:试点项目

  • 选择一个小模块开始
  • 转换 2-3 个关键测试用例
  • 衡量编写和维护的时间差异

第二阶段:知识传播

  • 培训团队成员 YAML 语法
  • 建立编写规范和最佳实践
  • 创建常用步骤库

第三阶段:全面推广

  • 逐步迁移现有测试
  • 建立 CI/CD 集成
  • 优化报告和监控

性能和可扩展性

执行效率

  • 并行执行支持
  • 智能测试选择
  • 增量测试运行

维护成本

  • 90% 减少代码量
  • 零学习成本的自然语言
  • 集中式步骤库管理

团队协作

  • 非技术人员也能编写测试
  • 版本控制友好的 YAML 格式
  • 清晰的测试意图表达

准备好用 Claude Code 和 Playwright MCP 改变你的测试工作流程了吗?测试自动化的未来是可读的、可维护的,并且对每个人都是可访问的。

🔗 立即开始: https://github.com/terryso/claude-code-playwright-mcp-test

你当前 Playwright 测试的最大痛点是什么?基于 YAML 的测试配合 Claude Code 如何为你的团队解决这个问题?