원클릭으로
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。任务只有在以下条件满足时才算完成: