ワンクリックで
web-ui-autotest-generator
从前端和后端源码中生成可维护的 Web UI 自动化测试。适用于分析页面、路由、组件、接口、用户流程,生成 Playwright UI 测试,运行测试,生成中文报告,并自检页面功能和跨页面逻辑是否被独立测试资产覆盖。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
从前端和后端源码中生成可维护的 Web UI 自动化测试。适用于分析页面、路由、组件、接口、用户流程,生成 Playwright UI 测试,运行测试,生成中文报告,并自检页面功能和跨页面逻辑是否被独立测试资产覆盖。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | web-ui-autotest-generator |
| description | 从前端和后端源码中生成可维护的 Web UI 自动化测试。适用于分析页面、路由、组件、接口、用户流程,生成 Playwright UI 测试,运行测试,生成中文报告,并自检页面功能和跨页面逻辑是否被独立测试资产覆盖。 |
使用本 skill 可以把一个 Web 项目整理成可执行、可复查、可持续维护的 UI 自动化测试套件。
目标不是只写几条临时脚本,而是先分析前端页面、后端接口、用户流程和 UI 状态,再生成 Playwright 测试、覆盖率清单、执行命令和中文报告。生成后的测试资产应能脱离本 skill 独立运行。
除非目标仓库已经明确使用其他 UI 测试框架,否则默认使用 Playwright + TypeScript。
默认输出结构:
tests/e2e/
pages/ # Page Object 模型
specs/ # 按页面或路由组织的测试用例
fixtures/ # 登录状态、测试数据、接口 mock
utils/ # 通用辅助函数
reports/ # 测试报告和中文总结
playwright.config.ts
ui-test-manifest.json
ui-test-coverage.json
内置资源:
scripts/generate_manifest.py # 源码扫描,生成 ui-test-manifest.json
scripts/audit_selectors.py # 选择器稳定性审计,生成 ui-selector-audit.json
scripts/check_coverage.py # 清单和用例覆盖率检查,生成 ui-test-coverage.json
scripts/analyze_failures.py # Playwright JSON 报告分析,生成 ui-test-repair-plan.json
assets/templates/ # Playwright 起始模板
assets/templates/summary.zh-CN.md.template # 中文最终测试报告模板
data-testid 等改造建议。生成或评审测试时,按需读取 references/coverage-rubric.md。
编写清单、覆盖率或报告时,按需读取 references/output-contract.md。
先使用内置脚本得到稳定的基础扫描结果,再结合项目代码进行人工判断和修正。
生成初始清单:
python3 path/to/web-ui-autotest-generator/scripts/generate_manifest.py --root . --out ui-test-manifest.json --pretty
审计选择器稳定性:
python3 path/to/web-ui-autotest-generator/scripts/audit_selectors.py --root . --out ui-selector-audit.json --pretty
生成测试后检查覆盖率:
python3 path/to/web-ui-autotest-generator/scripts/check_coverage.py --root . --manifest ui-test-manifest.json --selector-audit ui-selector-audit.json --tests-dir tests/e2e --out ui-test-coverage.json --pretty
如果 Playwright 执行失败且已有 JSON 报告,生成修复计划:
python3 path/to/web-ui-autotest-generator/scripts/analyze_failures.py --report tests/e2e/reports/results.json --out ui-test-repair-plan.json --pretty
脚本输出是草稿,需要复核:
ui-selector-audit.json 选择更稳定的定位方式,并给出 data-testid 建议。ui-test-coverage.json 中写明原因。从快速本地检查开始:
rg --files
重点识别:
package.json、lockfile、workspace 文件。src/pages、src/views、app、pages、routes。src/api、src/services、请求客户端、生成式客户端、GraphQL 文档。优先沿用仓库已有风格。如果已有 Playwright,直接扩展现有体系。如果项目已经稳定使用 Cypress,且用户没有指定 Playwright,则跟随 Cypress。
建立页面清单。每个页面都应尽量识别:
优先基于源码和稳定选择器生成测试。如果 UI 元素缺少稳定选择器,使用 getByRole、getByLabel、getByText 等可访问定位方式,并在报告中说明哪些位置适合补充 data-testid。
选择器优先级:
data-testid 或项目已有测试 id 约定。生成 spec 前先运行 scripts/audit_selectors.py。根据审计结果决定:
missingStableSelectors 建议。data-testid。核心流程不要悄悄使用脆弱选择器。无法避免时,必须在最终中文报告中说明。
使用后端代码、OpenAPI、Swagger 或 Apifox 文档增强 UI 测试。
提取:
把接口映射回 UI 行为:
页面加载 -> 列表/详情接口
搜索/筛选 -> 查询接口
新增/编辑表单 -> 创建/更新接口
删除/批量操作 -> 变更接口
下载/导出 -> 文件接口
路由跳转 -> 详情页或子页面接口
如果没有后端代码,从前端接口客户端推断契约,并在必要时使用 route mock。
生成大量测试前,先创建或更新 ui-test-manifest.json。
清单应描述:
把清单作为生成和评审的事实来源。清单错误时,先修正清单,再扩展测试。
按页面和用户流程生成测试。
创建新的 Playwright 文件时,使用 assets/templates/ 作为起点:
page-object.ts.template:Page Object 类。page-spec.ts.template:页面级测试。playwright.config.ts.template:项目没有 Playwright 配置时使用。auth-fixture.ts.template:需要鉴权但项目登录方式不明确时使用。package-scripts.json.template:补充 npm scripts 时使用。github-actions-e2e.yml.template:补充 GitHub Actions CI 时使用。summary.zh-CN.md.template:编写最终中文测试报告时使用。每个业务页面通常应覆盖:
跨页面流程应生成场景 spec,不要在单页面测试中重复堆叠:
登录 -> 新建实体 -> 搜索实体 -> 打开详情 -> 编辑实体 -> 回到列表验证 -> 删除实体
避免脆弱测试:
使用确定性测试数据:
重复交互和稳定页面语义应放入 Page Object。
好的 Page Object 暴露用户语义动作:
await userListPage.search({ name: 'Alice' })
await userListPage.createUser(data)
await userListPage.deleteUser('Alice')
不要把底层选择器作为主要接口,除非确实需要。
Page Object 应包含:
goto场景特有断言保留在 spec 中,可复用的页面就绪断言放在 Page Object 中。
如果页面需要登录:
storageState fixture。不要写入真实生产账号或密钥。
新增或复用脚本:
{
"scripts": {
"test:e2e": "playwright test",
"test:e2e:ui": "playwright test --ui",
"test:e2e:report": "playwright show-report"
}
}
条件允许时运行:
npx playwright test
如果应用需要开发服务器,使用仓库标准 dev 命令启动,并按需配置 Playwright webServer。
如果依赖缺失且网络不可用,仍然生成测试套件,并在中文报告中明确写明未执行原因。
测试失败时,先做短循环修复,避免只留下原始失败。
scripts/analyze_failures.py 生成 ui-test-repair-plan.json。ui-test-coverage.json。修复建议:
data-testid。当测试通过,或遇到必须由用户提供账号、环境、业务规则的明确阻塞时,停止修复循环。
生成后的测试应能脱离本 skill 独立运行。
如果项目使用 npm scripts,新增或合并:
{
"scripts": {
"test:e2e": "playwright test",
"test:e2e:ci": "playwright test",
"test:e2e:ui": "playwright test --ui",
"test:e2e:report": "playwright show-report"
}
}
如果项目使用 GitHub Actions,复制并调整 assets/templates/github-actions-e2e.yml.template 到 .github/workflows/e2e.yml。
其他 CI 系统也应保持同一契约:
E2E_BASE_URL 和鉴权密钥。npm run test:e2e:ci。生成后必须先自检,再交付。
首次生成测试后运行 scripts/check_coverage.py,修复后再次运行。
检查:
写入 ui-test-coverage.json,包含已覆盖项和缺失项。缺失项可以存在,但必须写明原因。
覆盖率报告应包含:
ui-selector-audit.json 时,包含选择器稳定性评分。最终面向人阅读的测试报告必须使用中文。写入 tests/e2e/reports/summary.md 时,使用 assets/templates/summary.zh-CN.md.template。
报告必须包含:
机器可读产物包括:
ui-selector-audit.json。ui-test-coverage.json。ui-test-repair-plan.json。tests/e2e/reports/summary.md。任务只有在以下条件满足时才算完成: