Web 应用测试技能
用 Playwright 自动化测试本地 Web 应用:验证前端功能、调试 UI、截图并读取浏览器日志。
技能整体为本地自动化:headless Chromium、本地端口轮询、服务器进程用完即清理,无网络外发或凭据读取,未见红线风险。但 with_server.py 使用 shell=True 执行用户提供的命令且无确认或白名单机制,SKILL.md 未说明权限边界、数据流向与回滚方式,故扣分。
with_server.py 逻辑自洽、参数校验清晰(server/port 数量匹配、超时报错、finally 清理),主路径可读且失败信息可诊断。但未见针对本技能的测试或 CI 覆盖,示例硬编码 /mnt/user-data/outputs 等路径(目录不存在会失败且未提示),stdout/stderr 用 PIPE 无消费可能导致大输出阻塞,静态审查上限为10。
场景明确(本地 Web 应用测试),决策树区分静态/动态页面、单/多服务器,触发语义较清晰。但未声明非适用边界(如远程站点、需图形界面的场景),依赖 Playwright 及浏览器二进制安装但未给安装说明;脚本与文档全英文,未涉及中文环境,故扣分。
SKILL.md 分层合理(决策树→示例→参考文件),有许可声明引用 LICENSE.txt,但该文件未在证据中出现;技能本身无版本号、无变更记录、无已知限制章节、无 FAQ,维护责任仅能追溯到仓库整体,故扣分。
核心任务(启动服务器→运行 Playwright 脚本→侦察 DOM→执行动作)路径完整,with_server.py 提供了超出手写的边际价值(多服务器管理、就绪探测、清理)。但示例使用占位 URL/路径,输出需用户自行适配,且无执行验证,静态上限7,扣至6。
示例脚本与 helper 脚本均为可审计的一手材料,声明(如 networkidle 陷阱)与代码一致。但仓库测试(tests/)不覆盖本技能关键路径,无 CI 证据、无第三方复现材料,事实与推断基本可分但证据类型单一,故仅给4。
- 本评为静态源码审查(置信度低),未执行任何脚本,实际运行行为未验证。
- with_server.py 以 shell=True 执行任意命令字符串,且输出管道可能因大输出阻塞,使用前请自行审查命令内容。
- 示例中 /mnt/user-data/outputs 等硬编码路径在多数本地环境不存在,需先创建目录或修改路径。
- 需自行安装 playwright 及 chromium 浏览器二进制,SKILL.md 未提供安装指引。
- SKILL.md 引用的 LICENSE.txt 未在审查文件中出现,许可以仓库根目录 MIT LICENSE 为准。
- 技能无独立版本号与变更记录,升级时请比对上游差异。
这个 Skill 能做什么,适合哪些场景?
webapp-testing 是一个基于 Python Playwright 的技能,用于与本地 Web 应用交互并进行测试。它提供了 with_server.py 辅助脚本来自动管理一个或多个开发服务器的生命周期,让代理只需编写纯 Playwright 自动化逻辑。技能内置了一套「先侦察后操作」的工作流:等待 networkidle、截图或检查 DOM、发现选择器、再执行操作,避免在 JS 未执行完就检查 DOM 的常见错误。它适合作为代理执行端到端前端验证的执行工具。
该技能指导模型编写原生 Python Playwright 脚本来访问本地 Web 应用。它通过 scripts/with_server.py 启动并管理服务器(支持 --server 参数多次指定后端、前端等多个服务,并在指定端口就绪后运行自动化脚本),随后以 headless Chromium 打开页面、等待 networkidle、截图、读取 DOM 内容与按钮等元素、执行点击/输入等操作,并可捕获控制台日志。examples/ 目录提供元素发现、静态 HTML 自动化(file:// URL)、控制台日志捕获三个示例脚本。
- 开发者在本地跑着 Vite/Next.js 等开发服务器,需要代理自动化验证某个前端交互(按钮点击、表单提交)是否正常。
- 前后端分离项目需要同时启动后端 API 和前端页面再做端到端验证,用 with_server.py 的多服务器模式一次性托管两个服务。
- 拿到一个静态 HTML 文件,需要快速验证其结构和交互选择器,可直接读取文件并写 Playwright 脚本用 file:// URL 测试。
- 调试 UI 行为时需要截图和浏览器控制台日志,用于定位渲染或报错问题。
这个 Skill 有哪些优点和局限?
- with_server.py 自动管理服务器生命周期,支持多服务器(后端+前端)并行启动。
- 提供明确的决策树和「等待 networkidle 再检查 DOM」等最佳实践,减少常见自动化失败。
- 辅助脚本设计为黑盒调用,避免大文件污染代理上下文窗口。
- examples/ 提供元素发现、静态 HTML、控制台日志三个可直接参考的示例。
- 依赖本地环境已安装 Python 和 Playwright(含浏览器二进制),技能本身未提供安装脚本。
- 文档假设使用 Chromium headless,未说明对其他浏览器的支持情况。
- 技能的 LICENSE 以「详见 LICENSE.txt」表述,具体条款需查看仓库文件。
- SKILL.md 未包含针对该技能本身的测试套件或版本信息。
如何安装这个 Skill?
该技能位于 Mini-Agent 仓库(https://github.com/MiniMax-AI/Mini-Agent)的 mini_agent/skills/webapp-testing/ 目录,随仓库的 15 个技能一起分发。开发模式下克隆仓库后运行 git submodule update --init --recursive 初始化技能;Quick Start 模式通过 uv tool install git+https://github.com/MiniMax-AI/Mini-Agent.git 安装。将技能放入 Claude Code 技能目录即可被识别(具体目录放置方式源文档未详述)。使用前需安装 Playwright(pip install playwright && playwright install chromium,源文档未给出此命令,属 Playwright 常规安装步骤)。
如何使用这个 Skill?
- 对单个开发服务器运行自动化:
python scripts/with_server.py --server "npm run dev" --port 5173 -- python your_automation.py;前后端多服务器则重复 --server 参数。2. 自动化脚本只写 Playwright 逻辑,服务器由辅助脚本管理,例如用sync_playwright()启动 headless Chromium、page.goto('http://localhost:5173')、page.wait_for_load_state('networkidle')再执行操作。3. 首次使用任何辅助脚本先运行--help查看用法,不要直接读源码以免污染上下文。4. 对动态页面先截图/检查 DOM 再操作(侦察-后-操作模式)。