ui-test-executor
WEB UI 自动化测试的智能执行调度引擎。负责触发执行 Playwright + Pytest UI 测试,按标签/模块/优先级智能调度,自动检测本地浏览器环境,全程监控执行状态,自动采集截图/录屏/Trace/网络日志,输出标准化报告。当用户需要"跑一下 UI 测试"、"执行 P0 用例"、"跑登录模块测试"、"跨浏览器跑 UI 测试"、"按标签筛选执行"、"用 CI 跑 UI 测试"、"浏览器跑不了"、"需要选浏览器"、"测试失败要截图和 Trace"、"生成测试报告"等场景时应使用本技能。不要使用本技能处理接口测试(用 api-test-executor)或测试脚本编写(用 ui-testscript-generator)。
DeepseekModel
官方收录技能
质量 良好 · 64
v1.0.0
获取
https://deepseekmodel.com/api/download.php?id=zhoujinjian-skills-skills-ui-test-executor-skill-md&format=skill
下载 .skill
标准格式,含 system_prompt 与 model_config,导入任意 Agent 框架即可使用
.skill 文件中 system_prompt 字段的实际内容。
name ui-test-executor description WEB UI 自动化测试的智能执行调度引擎。负责触发执行 Playwright + Pytest UI 测试,按标签/模块/优先级智能调度,自动检测本地浏览器环境,全程监控执行状态,自动采集截图/录屏/Trace/网络日志,输出标准化报告。当用户需要"跑一下 UI 测试"、"执行 P0 用例"、"跑登录模块测试"、"跨浏览器跑 UI 测试"、"按标签筛选执行"、"用 CI 跑 UI 测试"、"浏览器跑不了"、"需要选浏览器"、"测试失败要截图和 Trace"、"生成测试报告"等场景时应使用本技能。不要使用本技能处理接口测试(用 api-test-executor)或测试脚本编写(用 ui-testscript-generator)。 ui-test-executor — UI 测试智能执行调度引擎 技能定位 将已编写好的 Playwright + Pytest UI 测试脚本 真正跑起来 ,形成"标签筛选 → 环境检测 → 执行调度 → artifact 采集 → 报告产出"的完整执行闭环。 与上下游技能的边界: 技能 输入 输出 ui-page-parser URL / 用例描述 pages.yaml ui-testscript-generator pages.yaml + 用例 基础测试脚本 ui-testscript-enhancer 基础测试脚本 健壮性增强脚本 ui-visual-assert 增强脚本 视觉回归脚本 ui-test-tagger 测试脚本目录 标签化脚本 + ui_tag_statistics.md ui-test-executor 标签化脚本 + 执行意图 执行结果 + 报告 + artifacts 本技能 只读 测试目录, 不修改 测试脚本,只在执行层面做调度。 触发场景 应当触发本技能的关键词: "跑 UI 测试"、"执行 UI 用例"、"run UI tests" "跑一下 P0"、"执行冒烟用例"、"smoke test" "跑登录模块"、"按模块跑测试"、"跑搜索场景" "跨浏览器跑"、"chrome firefox 一起跑"、"matrix" "并行执行 UI 测试"、"加速跑" "失败要截图"、"要 Trace"、"要录屏" "生成测试报告"、"出 CI 报告" "浏览器跑不了"、"哪个浏览器能用"、"检测浏览器" "打开 trace"、"看 trace"、"show trace"、"open trace" "最新 trace"、"trace viewer" 不应当触发: 编写新测试脚本 → ui-testscript-generator 调试失败用例根因 → ui-failure-diagnoser(如有)/ systematic-debugging 给脚本打标签 → ui-test-tagger 工作流程 执行流程概览:标准化执行前打印(每次必输出,已固化) execute_tests.py 在调度任何 pytest 进程之前, 无条件 先在 stderr 打印两个标准化章节,让用户在 pytest 大量输出之前就能确认本次执行的运行环境和用例范围。 章节格式 两个章节都使用统一的视觉规范: 顶部 + 底部各 86 个 = 分隔线包夹 标题前缀 ▶ ,副标题用 · 分隔 章节之间空一行避免粘连 全部输出走 stderr(不污染 pytest stdout 报告) 章节 1:浏览器环境清单 调用 detect_browsers.py 输出本机已安装的所有浏览器(Playwright 内置 + 系统浏览器),含版本号、Headless 支持、未安装提示。 ====================================================================================== ▶ 浏览器环境清单 · execute_tests 调度前检测 ====================================================================================== ========================== ... 浏览器环境检测报告 ========================== ... 系统: Darwin (macOS-26.3.1-x86_64-i386-64bit) Playwright 版本: unknown ✅ 检测到 4 个可用浏览器: # 名称 引擎 版本 Headless --- ------------------------------ ---------------------- -------------- ---------- 1 Chromium (Playwright) playwright_chromium 1223 ✓ 2 Google Chrome (System) system_chromium Google Chrome 149.0.7827.155 ✓ 3 Microsoft Edge (System) system_chromium Microsoft Edge 149.0.4022.69 ✓ 4 Safari (System) system_webkit - ✗ 未安装的浏览器(5 个,跳过): - Firefox (Playwright): 未安装,运行 `python3 -m playwright install firefox` ... ========================== ... ====================================================================================== 章节 2:待执行用例清单 按 文件名:类别:用例名 格式打印命中的用例列表,区分前置阶段(PRE-RUN)和主筛选集(MAIN)。 ====================================================================================== ▶ 待执行用例清单 — 主筛选集 MAIN · 命中 8 个用例 ====================================================================================== 1. tests/auth/test_login.py:TestLogin:test_login_with_valid_credentials_redirects_to_home[chromium] 2. tests/auth/test_login.py:TestLogin:test_login_success_shows_user_nickname_in_header[chromium] 3. tests/auth/test_register.py:TestRegister:test_register_with_valid_data_redirects_to_login[chromium] 4. tests/auth/test_register.py:TestRegister:test_register_page_displays_all_required_fields[chromium] 5. tests/product/test_search.py:TestSearchPositive:test_search_valid_keyword_shows_results[chromium-手机] 6. tests/product/test_search.py:TestSearchPositive:test_search_result_visual_layout_consistency[chromium] 7. tests/product/test_search.py:TestSearchPositive:test_search_valid_keyword_shows_results[chromium-小米] 8. tests/product/test_search.py:TestSearchPositive:test_search_valid_keyword_shows_results[chromium-手表] ====================================================================================== 关键字段说明: 字段 含义 来源 文件名 用例所属测试文件相对路径 pytest nodeid 第一段 类别 测试类名(无类时显示 (no_class) ) pytest nodeid 第二段 用例名 测试方法名 + 参数化方括号 pytest nodeid 第三段 命中 N 个用例 经 --tags / --priority / --keyword 筛选后的总数 副标题 实现位置 函数 文件 作用 _print_section_header() scripts/execute_tests.py 统一渲染章节标题块(标题+副标题+上下分隔线) _print_section_footer() scripts/execute_tests.py 渲染章节底部封闭分隔线 detect_and_print_browsers() scripts/execute_tests.py 章节 1 实现(调用 detect_browsers.py) print_collected_tests() scripts/execute_tests.py 章节 2 实现(前置 + 主用例) format_nodeid() scripts/execute_tests.py nodeid → 文件名:类别:用例名 转换 行为保证 无论使用何种参数组合(包括 --list-only / --dry-run / 正式执行 / 带 --pre-run ), 这两个章节都会在 pytest 启动前打印 。用户无需任何额外参数即可获得这两份摘要。 --list-only 模式打印完这两章节后立即返回,不调用 pytest,可用于"只想看选了哪些用例、不实际执行"的场景。 下面 Step 0~7 是 Claude 在使用本技能时按顺序执行的协作步骤;标准化打印由 execute_tests.py 内部自动完成, 不需要 Claude 手动触发。 Step 0.5:Artifact 采集策略 核心约束 :所有 artifact 均在用例失败时生成(用户明确要求)。通过的用例不保留截图/录屏/Trace,节省磁盘与 CI 时间。 6 类 Artifact 总览 类型 采集机制 触发条件 输出路径 命名规则 screenshots conftest hook + pytest-playwright 原生 setup/call 失败 artifacts/screenshots/ <nodeid>-{viewport,fullpage}.png (conftest)/ test-failed-N.png (原生) videos pytest-playwright --video=retain-on-failure call 失败 artifacts/pytest-raw/<slug>/video.webm 由 pytest-playwright 自动命名 traces pytest-playwright --tracing=retain-on-failure call 失败 artifacts/pytest-raw/<slug>/trace.zip 由 pytest-playwright 自动命名 har 默认不生成真 .har ;用 Network 摘要替代(见下方说明) 失败 (写入 console-logs 的 ## Network 段) — console-logs conftest autouse fixture + hook setup/call 失败 artifacts/console-logs/<nodeid>.log 5 段:Page Errors / Console ERROR page-source conftest hook setup/call 失败 artifacts/page-source/<nodeid>.html HTML 快照 双层采集架构 pytest-playwright 原生(命令行参数控制) ├─ --screenshot=only-on-failure → test-failed-N.png ├─ --video=retain-on-failure → video.webm(失败保留,通过自动删除) └─ --tracing=retain-on-failure → trace.zip(失败保留,通过自动删除) conftest hook(项目 tests/conftest.py 提供,详见 assets/conftest_template.py) ├─ collect_console_and_errors (autouse) → 收集 console/pageerror/network 到 item._ui_collected ├─ pytest_runtest_makereport (hookwrapper) → 失败时触发 _collect_failure_artifacts └─ _collect_failure_artifacts → 写 screenshots / page-source / console-logs(5 段合并) HAR 等价方案 pytest-playwright 0.8.0 不支持 --har 命令行参数;在 browser_context_args 注入 record_har_path 会污染所有用例(包括 registered_user 等内部 context),违背"仅失败采集"约束。 务实方案 :conftest 的 collect_console_and_errors autouse fixture 注册 page.on("requestfinished") 收集 {method, url, status, resource_type} ,失败时 dump 到 console-logs/<nodeid>.log 的 ## Network 段,作为 HAR 等价物。覆盖 90% 的"接口请求追溯"场景,无需额外配置。 输出目录树 test-results/ ├── report.xml # JUnit XML(CI 标准) ├── report-pre.xml # 前置阶段 JUnit ├── artifacts/ │ ├── screenshots/ # 失败截图(视口 + 全页) │ │ └── tests-auth-test-login-py-...-test-login-with-valid-credentials-viewport.png │ ├── page-source/ # 失败时 HTML 快照 │ │ └── tests-auth-test-login-py-...-test-login-with-valid-credentials.html │ ├── console-logs/ # 失败时合并日志(5 段) │ │ └── tests-auth-test-login-py-...-test-login-with-valid-credentials.log │ ├── videos/ # (保留目录,原生 video 写在 pytest-raw/) │ ├── traces/ # (保留目录,原生 trace 写在 pytest-raw/) │ ├── har/ # (保留目录,默认空;Network 摘要替代) │ └── pytest-raw/ # pytest-playwright 原生产物 │ └── <nodeid-slug>/ │ ├── test-failed-1.png │ ├── video.webm │ └── trace.zip 关键命令行参数 参数 默认值 说明 --screenshot=only-on-failure 开 仅失败用例采集视口截图(pytest-playwright 原生) --video=retain-on-failure 开 失败用例保留 video.webm,通过用例自动删除
Agent 识别该技能的关键词,点击任意一个即可复制。
该技能未提供触发词。
下载的 .skill 包内含以下字段。
| 字段 | 说明 |
|---|---|
| format | 格式标识(skill/v1) |
| skill_id | 技能唯一 ID |
| name | 技能名称 |
| version | 版本号 |
| description | 技能描述 |
| category | 所属分类(数组) |
| trigger_words | 触发词列表 |
| tags | 标签列表 |
| source | 来源标识 |
| source_url | 来源链接(本页地址) |
| exported_at | 导出时间(每次下载生成) |
| system_prompt | 系统提示词正文 |
| model_config | 模型参数:provider / model / temperature / max_tokens / top_p |
| examples | 示例 |
| install_guide | 各平台导入说明(Coze / Dify / Claude / 自定义框架) |