<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>自动化测试 | VISTA Research Group</title><link>https://vista-research-group.pages.dev/tags/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/</link><atom:link href="https://vista-research-group.pages.dev/tags/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/index.xml" rel="self" type="application/rss+xml"/><description>自动化测试</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en</language><lastBuildDate>Thu, 11 Jun 2026 00:00:00 +0000</lastBuildDate><image><url>https://vista-research-group.pages.dev/media/icon_hu_831f3df7c45fd3fa.png</url><title>自动化测试</title><link>https://vista-research-group.pages.dev/tags/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/</link></image><item><title>用 Agent Skill 重构网页应用测试</title><link>https://vista-research-group.pages.dev/post/%E7%94%A8-agent-skill-%E9%87%8D%E6%9E%84%E7%BD%91%E9%A1%B5%E5%BA%94%E7%94%A8%E6%B5%8B%E8%AF%95/</link><pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate><guid>https://vista-research-group.pages.dev/post/%E7%94%A8-agent-skill-%E9%87%8D%E6%9E%84%E7%BD%91%E9%A1%B5%E5%BA%94%E7%94%A8%E6%B5%8B%E8%AF%95/</guid><description>&lt;p>如果说过去的自动化测试更像“写好脚本，然后让机器重复执行”，那么这个仓库展示的是另一种思路：让 AI Agent 先像真实用户一样进入浏览器、观察界面、操作产品、读取后端响应与日志，再把值得长期回归的流程沉淀成可复跑脚本。&lt;/p>
&lt;p>仓库地址：
&lt;/p>
&lt;h2 id="1-这个仓库是什么">1. 这个仓库是什么？&lt;/h2>
&lt;p>&lt;code>Mencius2023/skills&lt;/code> 是一个个人维护的 Claude Code / Agent Skills 集合。当前仓库的核心内容是一个名为 &lt;code>web-app-test&lt;/code> 的 skill，用于网页应用自动化测试。&lt;/p>
&lt;p>它的目标不是简单提供几个 Playwright 脚本模板，而是定义一套面向 AI Agent 的测试工作流：&lt;/p>
&lt;ul>
&lt;li>用 Playwright 驱动真实浏览器；&lt;/li>
&lt;li>模拟真实用户在前端界面中的操作；&lt;/li>
&lt;li>连接真实后端，不做 mock；&lt;/li>
&lt;li>同时检查 API 返回、HTTP 状态码、后端日志和页面截图；&lt;/li>
&lt;li>对值得长期回归的流程，动态沉淀为 Playwright spec；&lt;/li>
&lt;li>每轮测试结束后输出 Markdown 测试报告。&lt;/li>
&lt;/ul>
&lt;p>这使它更像一个“测试方法论 + 脚手架 + Agent 执行规范”的组合，而不只是一个代码模板仓库。&lt;/p>
&lt;h2 id="2-仓库结构概览">2. 仓库结构概览&lt;/h2>
&lt;p>仓库结构很简洁：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>skills/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>└── web-app-test/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ├── SKILL.md
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> └── templates/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ├── README.md
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ├── TEST_SPECIFICATION.template.md
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ├── run_regression.template.py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ├── playwright.config.template.js
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> └── standard-flow.spec.template.js
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>其中最重要的文件有三类：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>文件&lt;/th>
&lt;th>作用&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>README.md&lt;/code>&lt;/td>
&lt;td>仓库入口，说明 skill 列表、安装方式和结构约定&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>skills/web-app-test/SKILL.md&lt;/code>&lt;/td>
&lt;td>核心规范，定义网页应用测试的执行原则、分层策略、动态浏览器测试方法、报告格式等&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>templates/&lt;/code>&lt;/td>
&lt;td>新项目接入时使用的通用脚手架，落地后生成项目专属的测试规格书、回归运行器和 Playwright 配置&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>这个设计有一个非常重要的边界：&lt;strong>skill 本体是通用资产，项目测试文件是项目专属资产&lt;/strong>。也就是说，&lt;code>SKILL.md&lt;/code> 和 &lt;code>templates/&lt;/code> 留在 skill 仓库中，而某个具体项目的 &lt;code>TEST_SPECIFICATION.md&lt;/code>、测试脚本、操作指南等应该落到该项目根目录下的 &lt;code>web-app-test/&lt;/code> 中，并跟随项目自己的 Git 仓库维护。&lt;/p>
&lt;h2 id="3-web-app-test-的核心定位">3. web-app-test 的核心定位&lt;/h2>
&lt;p>&lt;code>web-app-test&lt;/code> 面向的是网页应用质量验证场景。只要用户提出“测网页”“测前端”“浏览器测试”“Playwright”“E2E”“端到端测试”“跑测试”“回归测试”“CI”“提交前检查”等需求，或者改动了前后端代码后想确认功能没有回归，就可以使用这个 skill。&lt;/p>
&lt;p>它尤其强调两点：&lt;/p>
&lt;p>第一，浏览器测试要连接真实后端。&lt;br>
测试不是拦截请求、伪造数据、只看页面状态，而是尽可能贴近真实用户路径，验证前后端真实集成行为。&lt;/p>
&lt;p>第二，AI 不是只执行脚本，而是参与判断。&lt;br>
Agent 在浏览器中截图观察页面，用视觉能力判断 UI 是否符合用户预期，同时结合 API 响应和后端日志确认逻辑路径是否正确。&lt;/p>
&lt;p>这和传统 E2E 测试的区别很明显：传统测试通常依赖预先写好的选择器和断言；这个 skill 则把 AI 的现场观察能力纳入测试闭环，用动态执行来抵抗前端界面频繁变化带来的脚本脆弱性。&lt;/p>
&lt;h2 id="4-测试分为两大类">4. 测试分为两大类&lt;/h2>
&lt;p>&lt;code>SKILL.md&lt;/code> 中最关键的设计，是把测试分成两类，并明确两类脚本采用相反的设计策略。&lt;/p>
&lt;h3 id="41-程序测试脚本必须预先设计">4.1 程序测试脚本：必须预先设计&lt;/h3>
&lt;p>这类测试不涉及浏览器，主要直接调用后端模块、API 或构建命令，验证数据层、配置层、核心逻辑、API 契约、前端构建等。&lt;/p>
&lt;p>它们是整个测试体系的“稳定底座”，应该在项目接入时就设计好，并且覆盖主要功能：&lt;/p>
&lt;ul>
&lt;li>L0：冒烟测试与基础依赖检查；&lt;/li>
&lt;li>L1：前端单元测试；&lt;/li>
&lt;li>L2：后端核心功能测试；&lt;/li>
&lt;li>L3：前端构建与静态检查；&lt;/li>
&lt;li>L5 或等价层级：真实 API 集成测试。&lt;/li>
&lt;/ul>
&lt;p>这类测试适合无人值守、批量复跑，也适合 CI。规格书里如果写了用例，却没有对应脚本或可直接运行命令，就会被视为未完成。&lt;/p>
&lt;h3 id="42-浏览器模拟用户操作不预先写满动态沉淀">4.2 浏览器模拟用户操作：不预先写满，动态沉淀&lt;/h3>
&lt;p>另一类测试是浏览器 E2E。它使用 Playwright 驱动真实浏览器，模拟用户完整操作流程，并连接真实后端。&lt;/p>
&lt;p>但仓库并不主张一开始就把所有浏览器流程都写成 Playwright 脚本。原因很实际：前端页面变化快，选择器、布局、弹窗、流程都可能变，提前写满脚本会带来高维护成本。&lt;/p>
&lt;p>因此，&lt;code>web-app-test&lt;/code> 的策略是：&lt;/p>
&lt;ol>
&lt;li>默认由 AI 动态接入浏览器；&lt;/li>
&lt;li>AI 根据页面截图、源码和用户指南现场判断下一步操作；&lt;/li>
&lt;li>每个关键步骤后截图并检查 API / 日志；&lt;/li>
&lt;li>功能测完后再判断：这条测试以后是否需要回归？&lt;/li>
&lt;li>如果值得长期回归，再沉淀为 Playwright spec；&lt;/li>
&lt;li>如果流程细节容易变，但操作路径有参考价值，则沉淀为操作手册，例如 &lt;code>L4_OPERATION_GUIDE.md&lt;/code>。&lt;/li>
&lt;/ol>
&lt;p>这是一种“先探索，再固化”的测试资产治理方式。&lt;/p>
&lt;h2 id="5-一条完整测试链路是怎样的">5. 一条完整测试链路是怎样的？&lt;/h2>
&lt;p>按照 skill 的设计，AI 执行浏览器测试时不是简单点击页面，而是进行一个循环：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>观察页面截图
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ↓
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>理解当前 UI 状态
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ↓
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>决定下一步用户操作
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ↓
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>通过 Playwright CLI 执行操作
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ↓
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>检查 API 响应 / HTTP 状态码
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ↓
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>读取后端日志
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ↓
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>再次截图并用视觉能力判断 UI 是否正确
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ↓
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>记录产物与结论
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>这个流程有两个验证维度：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>验证方式&lt;/th>
&lt;th>关注点&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>API 返回值 + 后端日志&lt;/td>
&lt;td>请求是否成功、数据结构是否符合预期、后端路径是否正确执行&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>截图 + 视觉判断&lt;/td>
&lt;td>页面布局、面板状态、主题色、弹窗、画布、生成结果等用户可见体验是否正常&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>这非常适合测试现代 Web 应用，尤其是那些“接口返回成功但页面实际表现不对”的场景。&lt;/p>
&lt;h2 id="6-测试资产如何落地到项目">6. 测试资产如何落地到项目？&lt;/h2>
&lt;p>仓库要求具体项目中维护自己的 &lt;code>web-app-test/&lt;/code> 目录：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>&amp;lt;被测项目根&amp;gt;/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>└── web-app-test/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ├── TEST_SPECIFICATION.md
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ├── L4_OPERATION_GUIDE.md
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ├── &amp;lt;其他分支文档&amp;gt;.md
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> └── scripts/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ├── run_regression.py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ├── playwright.config.js
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> └── &amp;lt;flow&amp;gt;.spec.js
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>其中：&lt;/p>
&lt;ul>
&lt;li>&lt;code>TEST_SPECIFICATION.md&lt;/code> 是测试规格书，也是所有脚本的唯一索引；&lt;/li>
&lt;li>&lt;code>scripts/&lt;/code> 下的每个脚本都必须登记到规格书附录；&lt;/li>
&lt;li>不允许出现“孤儿脚本”，即存在于 &lt;code>scripts/&lt;/code> 但在规格书里找不到的脚本；&lt;/li>
&lt;li>&lt;code>L4_OPERATION_GUIDE.md&lt;/code> 等分支文档用于记录浏览器 UI 操作细节，避免主文档过长。&lt;/li>
&lt;/ul>
&lt;p>这个约定解决了一个常见问题：测试脚本散落在项目各处，时间一久没人知道哪些脚本还能跑、覆盖了哪些功能、失败后该如何复现。这里通过规格书统一索引，把测试资产纳入项目治理。&lt;/p>
&lt;h2 id="7-新项目接入流程">7. 新项目接入流程&lt;/h2>
&lt;p>当一个项目还没有 &lt;code>web-app-test/&lt;/code>，或者已有内容明显来自其他项目时，就需要执行新项目落地流程。&lt;/p>
&lt;p>大致步骤如下：&lt;/p>
&lt;ol>
&lt;li>在被测项目根目录创建 &lt;code>web-app-test/&lt;/code> 和 &lt;code>web-app-test/scripts/&lt;/code>；&lt;/li>
&lt;li>阅读当前项目的前端源码、后端源码、API 文档和用户指南；&lt;/li>
&lt;li>从 skill 的 &lt;code>templates/&lt;/code> 中复制模板；&lt;/li>
&lt;li>把模板中的 &lt;code>&amp;lt;产品名&amp;gt;&lt;/code>、&lt;code>&amp;lt;前端目录&amp;gt;&lt;/code>、&lt;code>&amp;lt;后端端口&amp;gt;&lt;/code>、&lt;code>&amp;lt;前端健康检查&amp;gt;&lt;/code> 等占位符替换成项目真实值；&lt;/li>
&lt;li>删除不适用的层级或用例；&lt;/li>
&lt;li>补齐程序测试脚本和可执行命令；&lt;/li>
&lt;li>将 &lt;code>web-app-test/&lt;/code> 纳入项目自己的版本控制。&lt;/li>
&lt;/ol>
&lt;p>模板映射关系如下：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>skill 模板&lt;/th>
&lt;th>落地到项目中&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>templates/TEST_SPECIFICATION.template.md&lt;/code>&lt;/td>
&lt;td>&lt;code>web-app-test/TEST_SPECIFICATION.md&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>templates/run_regression.template.py&lt;/code>&lt;/td>
&lt;td>&lt;code>web-app-test/scripts/run_regression.py&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>templates/playwright.config.template.js&lt;/code>&lt;/td>
&lt;td>&lt;code>web-app-test/scripts/playwright.config.js&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>templates/standard-flow.spec.template.js&lt;/code>&lt;/td>
&lt;td>&lt;code>web-app-test/scripts/&amp;lt;flow&amp;gt;.spec.js&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="8-模板目录提供了什么">8. 模板目录提供了什么？&lt;/h2>
&lt;p>&lt;code>templates/&lt;/code> 是这个仓库的可复用脚手架。&lt;/p>
&lt;h3 id="81-test_specificationtemplatemd">8.1 &lt;code>TEST_SPECIFICATION.template.md&lt;/code>&lt;/h3>
&lt;p>这是测试规格书模板。它按测试层级组织：&lt;/p>
&lt;ul>
&lt;li>L0 冒烟测试；&lt;/li>
&lt;li>L1 前端单元测试；&lt;/li>
&lt;li>L2 后端核心功能测试；&lt;/li>
&lt;li>L3 前端构建与静态检查；&lt;/li>
&lt;li>L4 浏览器 E2E 测试。&lt;/li>
&lt;/ul>
&lt;p>L4 又进一步区分：&lt;/p>
&lt;ul>
&lt;li>API 契约：纯 HTTP 请求，预先设计，适合批量复跑；&lt;/li>
&lt;li>浏览器流程：默认由 AI 动态操作，测完后按需沉淀。&lt;/li>
&lt;/ul>
&lt;p>规格书还包含若干附录，例如：&lt;/p>
&lt;ul>
&lt;li>&lt;code>data-testid&lt;/code> 选择器契约；&lt;/li>
&lt;li>fixture 数据；&lt;/li>
&lt;li>浏览器测试环境配置；&lt;/li>
&lt;li>脚本清单。&lt;/li>
&lt;/ul>
&lt;p>这让测试文档不只是说明文档，而是测试执行入口、脚本索引和环境手册。&lt;/p>
&lt;h3 id="82-run_regressiontemplatepy">8.2 &lt;code>run_regression.template.py&lt;/code>&lt;/h3>
&lt;p>这是非交互式回归运行器，也是 CI 的首选入口。&lt;/p>
&lt;p>它按测试金字塔从 L0 到 L4 逐层执行：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>L0 冒烟 + 数据完整性
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>L1 前端单元测试
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>L2 配置回归 + 离线核心功能
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>L3 前端生产构建
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>L4 浏览器 E2E
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>运行器采用 fail-fast 策略：某一层失败后立即中断并返回退出码。这适合 CI 节省资源。但 skill 同时强调，AI 手动执行测试时不应被 fail-fast 限制，应尽量跑完更多用例，一次性收集完整问题。&lt;/p>
&lt;h3 id="83-playwrightconfigtemplatejs">8.3 &lt;code>playwright.config.template.js&lt;/code>&lt;/h3>
&lt;p>这是 Playwright 配置模板，包含：&lt;/p>
&lt;ul>
&lt;li>&lt;code>baseURL&lt;/code>；&lt;/li>
&lt;li>Chromium 项目；&lt;/li>
&lt;li>viewport；&lt;/li>
&lt;li>screenshot 策略；&lt;/li>
&lt;li>trace 策略；&lt;/li>
&lt;li>HTML 报告目录；&lt;/li>
&lt;li>webServer 自动拉起；&lt;/li>
&lt;li>是否复用已有前端服务。&lt;/li>
&lt;/ul>
&lt;p>它把浏览器测试运行环境规范化，避免每个项目重复配置。&lt;/p>
&lt;h3 id="84-standard-flowspectemplatejs">8.4 &lt;code>standard-flow.spec.template.js&lt;/code>&lt;/h3>
&lt;p>这是 API 契约与浏览器流程的 spec 骨架。&lt;/p>
&lt;p>它把一个 Playwright spec 分成两部分：&lt;/p>
&lt;ol>
&lt;li>API 契约断言：健康检查、配置接口、错误处理、主要端点；&lt;/li>
&lt;li>浏览器流程：页面加载、核心业务全流程等稳定路径。&lt;/li>
&lt;/ol>
&lt;p>不稳定、易变化的浏览器 UI 交互不会一开始就写进 spec，而是由 AI 动态测试后再决定是否沉淀。&lt;/p>
&lt;h2 id="9-安装与依赖">9. 安装与依赖&lt;/h2>
&lt;p>仓库 README 推荐使用 &lt;code>skills.sh&lt;/code> CLI 安装指定 skill：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6272a4"># 安装到当前项目&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>npx skills add Mencius2023/skills@web-app-test
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6272a4"># 安装到全局&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>npx skills add Mencius2023/skills@web-app-test -g -y
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>也可以手动安装：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>git clone https://github.com/Mencius2023/skills.git
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cp -r skills/skills/web-app-test ~/.claude/skills/web-app-test
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>web-app-test&lt;/code> 依赖 &lt;code>playwright-cli&lt;/code> skill，需要额外安装：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>npm install -g @playwright/cli@latest
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>playwright-cli install
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>playwright-cli --version
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>如果不希望全局安装，也可以使用 &lt;code>npx playwright-cli&lt;/code> 的方式运行。&lt;/p>
&lt;h2 id="10-测试结束后必须交付-markdown-报告">10. 测试结束后必须交付 Markdown 报告&lt;/h2>
&lt;p>这个 skill 对测试交付物有明确要求：每轮测试结束后必须产出 Markdown 测试报告，而不是只在对话里口头总结。&lt;/p>
&lt;p>报告建议包含：&lt;/p>
&lt;ul>
&lt;li>测试范围；&lt;/li>
&lt;li>通过 / 失败 / 跳过数量；&lt;/li>
&lt;li>环境信息；&lt;/li>
&lt;li>详细测试结果；&lt;/li>
&lt;li>发现的问题；&lt;/li>
&lt;li>本轮已修复内容；&lt;/li>
&lt;li>新增或更新的自动化脚本；&lt;/li>
&lt;li>待用户确认事项。&lt;/li>
&lt;/ul>
&lt;p>这一点很重要。因为 AI Agent 执行测试时会产生大量即时判断，如果没有报告固化，测试过程就会变成不可追溯的聊天记录。Markdown 报告把一次测试转化为可归档、可审查、可复盘的工程产物。&lt;/p>
&lt;h2 id="11-失败不是只有代码-bug">11. 失败不是只有“代码 bug”&lt;/h2>
&lt;p>&lt;code>web-app-test&lt;/code> 对失败原因也做了分类：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>类型&lt;/th>
&lt;th>含义&lt;/th>
&lt;th>处理方式&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>类型 A&lt;/td>
&lt;td>测试脚本 fixture、前置条件或断言逻辑有问题&lt;/td>
&lt;td>AI 可自行修复测试&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>类型 B&lt;/td>
&lt;td>产品 Feature 发生有意变更，旧测试预期过时&lt;/td>
&lt;td>AI 可更新测试预期&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>类型 C&lt;/td>
&lt;td>文档或设计未说明的意外回归&lt;/td>
&lt;td>汇报用户，等待确认修复方向&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>这套分类避免了两个极端：&lt;/p>
&lt;ul>
&lt;li>一看到测试失败就改代码；&lt;/li>
&lt;li>一看到测试失败就改测试让它通过。&lt;/li>
&lt;/ul>
&lt;p>它要求 Agent 先判断根因，再决定是修脚本、改预期，还是报告真实 bug。&lt;/p>
&lt;h2 id="12-这个仓库适合什么场景">12. 这个仓库适合什么场景？&lt;/h2>
&lt;p>这个 skill 尤其适合以下场景：&lt;/p>
&lt;ul>
&lt;li>前后端分离的 Web 应用；&lt;/li>
&lt;li>页面交互复杂、纯 API 测试覆盖不够的产品；&lt;/li>
&lt;li>需要频繁回归但 UI 又经常变化的项目；&lt;/li>
&lt;li>有 LLM 生成结果、输出不完全确定的应用；&lt;/li>
&lt;li>希望把 AI Agent 纳入测试流程的团队；&lt;/li>
&lt;li>想把测试规格、脚本、报告统一治理的项目。&lt;/li>
&lt;/ul>
&lt;p>相对不适合的场景包括：&lt;/p>
&lt;ul>
&lt;li>纯后端库，没有浏览器交互；&lt;/li>
&lt;li>产品极小、没有持续回归需求；&lt;/li>
&lt;li>团队只需要传统 CI 单元测试，不需要 AI 现场判断；&lt;/li>
&lt;li>无法提供真实后端或测试环境的项目。&lt;/li>
&lt;/ul>
&lt;h2 id="13-这个设计最有价值的地方">13. 这个设计最有价值的地方&lt;/h2>
&lt;p>我认为这个仓库最值得借鉴的不是具体代码量，而是它对 AI Agent 测试角色的重新定义。&lt;/p>
&lt;p>它没有把 Agent 当作“自动生成 Playwright 脚本的工具”，而是把 Agent 放进一个完整测试生命周期：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>理解项目
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> → 维护测试规格
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> → 启动真实环境
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> → 动态操作浏览器
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> → 结合视觉、API、日志判断问题
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> → 分类处理失败
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> → 沉淀可复用脚本
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> → 输出 Markdown 报告
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>这使测试从“一堆脚本”变成了“一套可演进的工程流程”。&lt;/p>
&lt;h2 id="14-可以继续增强的方向">14. 可以继续增强的方向&lt;/h2>
&lt;p>从博客解读视角看，这个仓库后续还可以补充一些内容，让它更容易被外部用户采用：&lt;/p>
&lt;ol>
&lt;li>增加一个完整示例项目，展示从模板落地到报告产出的全过程；&lt;/li>
&lt;li>提供一份真实的 &lt;code>TEST_SPECIFICATION.md&lt;/code> 示例；&lt;/li>
&lt;li>补充 GitHub Actions / CI 配置示例；&lt;/li>
&lt;li>增加 FAQ，例如如何处理登录态、鉴权、外部服务调用、LLM 超时；&lt;/li>
&lt;li>明确许可证，便于他人复用；&lt;/li>
&lt;li>提供更多 skill，例如 API 测试、文档测试、性能冒烟测试等。&lt;/li>
&lt;/ol>
&lt;p>这些不是当前仓库的缺陷，而是一个个人 skill 集合走向通用工具包时自然会遇到的下一步。&lt;/p>
&lt;h2 id="15-总结">15. 总结&lt;/h2>
&lt;p>&lt;code>Mencius2023/skills&lt;/code> 当前体量不大，但它提出了一个很有实践价值的方向：让 AI Agent 不只是写测试，而是参与测试设计、执行、判断和资产沉淀。&lt;/p>
&lt;p>其中的 &lt;code>web-app-test&lt;/code> skill 把网页应用测试拆成两条线：&lt;/p>
&lt;ul>
&lt;li>稳定、底层、可无人值守的程序测试，必须预先设计；&lt;/li>
&lt;li>脆弱、界面相关、需要用户视角判断的浏览器测试，先由 AI 动态执行，再按需沉淀为脚本。&lt;/li>
&lt;/ul>
&lt;p>这种分工非常贴合现实中的 Web 应用测试难题：核心逻辑要稳定回归，界面流程又不能被过度僵化的脚本绑死。&lt;/p>
&lt;p>如果你正在尝试把 Claude Code、Playwright 和 AI Agent 工作流结合起来，用于前端 / 全栈项目测试，这个仓库值得一读。它的价值不在于提供了多少现成代码，而在于提供了一套可落地、可演进、可追溯的 Agentic Testing 方法论。&lt;/p>
&lt;hr>
&lt;h2 id="参考链接">参考链接&lt;/h2>
&lt;ul>
&lt;li>仓库首页：
&lt;/li>
&lt;li>&lt;code>web-app-test&lt;/code> skill：
&lt;/li>
&lt;li>&lt;code>SKILL.md&lt;/code>：
&lt;/li>
&lt;li>模板目录：
&lt;/li>
&lt;li>&lt;code>TEST_SPECIFICATION.template.md&lt;/code>：
&lt;/li>
&lt;li>&lt;code>run_regression.template.py&lt;/code>：
&lt;/li>
&lt;li>&lt;code>playwright.config.template.js&lt;/code>：
&lt;/li>
&lt;li>&lt;code>standard-flow.spec.template.js&lt;/code>：
&lt;/li>
&lt;/ul></description></item></channel></rss>