跳转至

Web UI 使用

YuanTest Playwright 提供了强大的 Web Dashboard,让测试管理更加直观高效。

启动 Dashboard

# 默认端口 5274
yuantest ui

# 自定义端口
yuantest ui --port 8080

# 指定报告和数据目录
yuantest ui --port 5274 --output ./test-reports --data ./test-data

# 不自动打开浏览器
yuantest ui --no-open

启动后访问 http://localhost:5274 查看可视化界面。


Dashboard 功能介绍

1. 概览页面

Dashboard 首页展示关键指标:

  • 测试运行统计:总运行次数、通过率趋势
  • Flaky 测试统计:不稳定测试数量和占比,按分类(Flaky/Broken/Regression/Monitor)分布
  • 执行时间趋势:平均执行时间变化
  • 最近运行记录:快速查看最近的测试结果
  • 健康度评分:A/B/C/D/F 等级,4 维评分(稳定性/趋势/可恢复性/可预测性)

2. Test Runs(测试运行记录)

查看所有历史测试运行:

  • 运行列表:显示每次运行的详细信息
  • 筛选和搜索:按状态、时间筛选测试运行
  • 运行详情:点击查看完整的测试结果
  • 报告下载:下载 HTML 或 JSON 格式的报告
  • 测试重跑:支持重跑单个测试或批量重跑

3. Flaky Tests(不稳定用例管理)

智能管理不稳定用例,提供 6 种分类标签:

分类 含义
Flaky 真正的间歇性失败
Broken 持续失败的真实 Bug
Regression 新引入的回归
Monitor 需要关注,可能发展为 Flaky
Stable 基本稳定
Insufficient Data 数据不足,无法判定

功能:

  • 自动检测:基于加权失败率和 Wilson 置信区间自动识别 Flaky 测试
  • 分类标签:每个 Flaky 测试显示分类(Broken/Flaky/Regression/Monitor)
  • 加权失败率:展示时间衰减加权失败率,最近的运行权重更高
  • 根因分析:7 种根因类型(timing/data_race/environment/external_service/test_order/resource_leak/assertion_flaky)
  • 一键隔离:隔离不稳定的测试,支持 4 级隔离(none/monitor/soft_quarantine/hard_quarantine)
  • 释放测试:将隔离的测试重新加入测试套件
  • 趋势追踪:查看测试通过率趋势方向(improving/stable/degrading/volatile)

4. Failure Analysis(失败分析)

深度分析失败原因:

  • 自动分类:智能识别超时、断言失败、元素未找到、网络错误、Frame 错误、认证错误等 7 类
  • 失败统计:显示各类失败的数量和占比
  • 修复建议:提供针对性的失败修复建议
  • 历史趋势:追踪失败原因的变化趋势
  • AI 诊断:一键触发 AI 智能分析

5. 实时进度

测试执行时实时监控:

  • 进度条:显示测试执行进度
  • 实时日志:查看测试输出日志
  • 测试状态:实时更新通过、失败、跳过的测试数量
  • 当前测试:显示正在执行的测试
  • Flaky 检测推送:实时推送 Flaky 测试检测结果

6. Agent 代理面板

Agent 代理面板提供 AI 驱动的测试创建和修复能力:

  • 测试规划 - 输入功能描述生成结构化测试计划
  • 支持引用参考测试以保持代码风格一致
  • 支持引用 PRD 文档以对齐需求
  • 自动保存计划为 Markdown 文件
  • 测试生成 - 将测试计划转换为 Playwright TypeScript 代码
  • 使用现代定位器(getByRole、getByText 等)
  • 生成独立可运行的测试场景
  • 支持自定义输出目录
  • 测试修复 - 分析并修复失败测试
  • 多轮修复,逐步优化
  • 生成带置信度评分和统一 Diff 的补丁
  • 可选自动应用模式,即时修复
  • 安全:补丁仅应用于项目根目录内的文件
  • 修复历史 - 查看历史修复操作
  • 追踪修复成功/失败率
  • 显示补丁详情和应用状态
  • 项目上下文 - 自动检测的项目信息
  • 从 package.json 检测技术栈
  • 解析 Playwright 配置(baseURL、超时、视口)
  • 自动发现测试 Fixtures

Web UI 执行测试

通过界面执行测试

  1. 选择测试目录
  2. 在 Dashboard 左侧点击"设置"
  3. 输入测试目录路径
  4. 系统会自动扫描测试文件

  5. 选择测试文件

  6. 在测试列表中勾选要执行的测试
  7. 支持按文件、按描述块、按单个测试选择
  8. 支持搜索和筛选

  9. 配置执行参数

参数 说明 默认值
浏览器 选择 Chromium / Firefox / WebKit(多选) chromium
重试次数 设置失败重试次数 0
超时时间 设置测试超时时间(毫秒) 30000
Worker 数量 设置并行 Worker 数量 1
分片数量 设置测试分片数 1
Base URL 设置测试基础 URL
  1. 执行测试
  2. 点击"运行测试"按钮
  3. 实时查看测试进度
  4. 查看控制台输出

  5. 查看测试报告

  6. 测试完成后自动跳转到报告页面
  7. 查看详细的测试结果
  8. 查看失败测试的错误信息和堆栈
  9. 查看 Trace、截图、视频等附件

AI 诊断功能

单次诊断

  1. 在测试详情页面点击"AI 诊断"按钮
  2. 系统自动收集上下文信息(源代码、截图、控制台日志、堆栈跟踪、环境信息、历史数据)
  3. 匹配 Playwright 知识库中的已知错误模式
  4. LLM 进行分析并返回诊断结果
  5. 查看诊断摘要、根因、修复建议、置信度

流式诊断

  1. 点击"AI 诊断(流式)"按钮
  2. 实时查看 AI 推理过程
  3. 支持 Agent 多轮推理模式(LLM 可主动读取源码、查询历史)
  4. 查看推理步骤和工具调用

诊断结果

诊断结果包含:

字段 说明
摘要 失败原因概述
根因 根本原因分析
修复建议 可操作的修复步骤
置信度 校准后的置信度(0-1)
分类 timeout/selector/assertion/network/frame/auth/unknown
代码 Diff 建议的代码修改(unified diff 格式)
文档链接 关联的 Playwright 官方文档
推理步骤 Agent 推理过程(仅 Agent 模式)
关联失败 同根因的其他失败测试

批量聚类诊断

当同一次运行中有多个测试失败时:

  1. 系统自动识别相似错误模式
  2. 对代表性失败调用 LLM
  3. 其他失败引用同一诊断
  4. 标注"影响 N 个测试的共因失败"

错误模式管理

查看内置模式

系统内置 7 大类 30+ 个 Playwright 错误模式:

类别 典型模式
TimeoutError 元素未出现、导航超时、API 响应超时、内存溢出、并发冲突
SelectorError 元素不存在、选择器歧义、iframe 内选择器、Headless 环境差异
AssertionError 文本不匹配、可见性断言、属性断言、数据校验异常、状态不一致
NetworkError 请求失败、CORS、DNS 解析失败、环境配置错误、依赖缺失
FrameError Frame detached、跨 Frame 操作
AuthError Token 过期、未登录重定向
其他 竞态条件、环境配置差异、Headless 模式差异、并发执行冲突

添加自定义模式

  1. 在错误模式管理页面点击"添加模式"
  2. 填写模式名称、匹配正则、分类
  3. 保存后立即生效,后续诊断会匹配自定义模式
  4. 自定义模式标注 [custom] 标记

LLM 配置

配置 API Key

  1. 在 Dashboard 设置页面找到"LLM 配置"
  2. 填写以下信息:
配置项 说明 示例
API Key LLM 服务的 API Key sk-xxx
Base URL LLM 服务地址 https://api.openai.com/v1
Model 模型名称 gpt-4
Max Tokens 最大输出 Token 数 4096
Temperature 生成温度 0.3
  1. 点击"保存"

兼容的 LLM 服务

支持所有 OpenAI API 兼容接口:

  • OpenAI:GPT-4、GPT-3.5 等
  • Ollama:本地部署的开源模型
  • vLLM:高性能推理服务
  • Azure OpenAI:微软 Azure 托管的 OpenAI 服务

测试连接

  1. 配置完成后点击"测试连接"
  2. 系统发送测试请求验证配置
  3. 显示连接状态(绿色/黄色/红色)

参数配置面板

参数配置面板分为两个独立对话框,分别从对应的卡片右上角设置图标按钮打开。

不稳定用例判定参数

点击"不稳定用例"卡片右上角的 ⚙ 设置图标按钮,打开不稳定用例判定参数对话框,可调整以下参数:

参数 默认值 说明
最低运行次数 5 低于此数不判定
Flaky 阈值 0.3 加权失败率 ≥ 此值判定为 Flaky
Monitor 阈值 0.1 加权失败率 ≥ 此值判定为 Monitor
Stable 阈值 0.05 加权失败率 < 此值判定为 Stable
高风险阈值 0.5 加权失败率 ≥ 此值触发高优先级
连续失败阈值 5 连续失败次数 ≥ 此值判定为 Broken
回归窗口 5 回归检测窗口大小
时间衰减率 0.1 指数衰减率
置信水平 0.95 Wilson 置信区间置信水平
自动释放通过次数 3 软隔离自动释放所需连续通过次数

已隔离用例判定参数

点击"已隔离用例"卡片右上角的 ⚙ 设置图标按钮,打开已隔离用例判定参数对话框,可调整以下参数:

参数 默认值 说明
软隔离阈值 0.15 加权失败率 ≥ 此值进入软隔离
硬隔离阈值 0.4 加权失败率 ≥ 此值进入硬隔离
隔离预算比例 0.2 最多隔离 20% 的测试
硬隔离释放通过次数 5 硬隔离自动释放所需连续通过次数
隔离过期天数 30 隔离自动过期天数
过期后降级 true 隔离过期后自动降级而非释放

重置为默认值

每个对话框中均有"重置为默认值"按钮,点击后将对应配置节从 user-preferences.json 中移除,恢复使用默认值。


测试历史查看

  1. 在测试详情页面点击"历史记录"
  2. 查看该测试的完整运行历史
  3. 包含每次运行的:状态、持续时间、错误信息、截图
  4. 显示稳定性统计:通过率、总运行次数、最近通过/失败时间

健康度仪表盘

Dashboard 提供测试健康度概览:

  • 整体健康评分:A/B/C/D/F 等级
  • 4 维评分
  • 稳定性(权重 35%):基于加权失败率
  • 趋势(权重 25%):基于通过率趋势方向
  • 可恢复性(权重 20%):基于失败后恢复能力
  • 可预测性(权重 20%):基于预测模型准确度
  • Flaky 测试分布:按分类统计
  • 高风险测试列表:预测可能失败的测试

高级功能

Flaky 测试隔离

  1. 在 Flaky Tests 页面查看不稳定用例列表
  2. 点击测试旁边的"隔离"按钮
  3. 系统根据加权失败率自动选择隔离级别:
  4. Monitor:仅监控,不跳过
  5. Soft Quarantine:隔离但保留重试
  6. Hard Quarantine:完全跳过
  7. 被隔离的测试不会在后续运行中执行
  8. 可以在"已隔离用例"中查看和管理

失败分析

  1. 在 Test Runs 页面点击某次运行
  2. 切换到"失败分析"标签
  3. 查看失败原因分类和统计
  4. 查看每个失败测试的详细信息和建议

Trace 查看

  1. 在测试详情页面点击"Trace"按钮
  2. 自动打开 Playwright Trace Viewer
  3. 查看测试执行的完整时间线
  4. 查看每个步骤的截图和 DOM 快照

产物管理

  • 截图:自动收集失败测试的截图
  • 视频:自动收集失败测试的视频
  • Trace:自动收集测试执行轨迹
  • 统一存储:所有产物统一存储在 test-reports/ 目录

因果图

  1. 在 Dashboard 中查看因果图
  2. 展示测试之间的依赖关系和关联失败
  3. 识别根因节点(infrastructure/external_service/shared_state)
  4. 影响分析:查看修复某个测试会影响哪些其他测试

REST API

Dashboard 提供 RESTful API,方便与其他系统集成。完整的 API 文档请参考 DashboardServer API 参考

常用端点:

方法 路径 描述
GET /api/v1/health 健康检查
GET /api/v1/stats 整体统计
GET /api/v1/runs 运行列表
POST /api/v1/runs 启动测试运行
GET /api/v1/flaky Flaky 测试列表
POST /api/v1/diagnosis AI 诊断
POST /api/v1/diagnosis/stream AI 诊断(流式)
GET /api/v1/preferences 用户偏好
POST /api/v1/preferences 保存偏好