|
|
|
@ -290,7 +290,48 @@ npx playwright test e2e/smoke-iis.spec.ts --project=chromium
|
|
|
|
|
|
|
|
|
|
|
|
## 五、Playwright E2E测试断言标准
|
|
|
|
## 五、Playwright E2E测试断言标准
|
|
|
|
|
|
|
|
|
|
|
|
### 5.1 交互控件测试矩阵
|
|
|
|
> **强制要求:每次编写Playwright测试时,必须逐项对照以下维度清单。每个页面的每个维度都必须有对应测试用例覆盖,不允许遗漏。**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 5.0 测试维度总表(每个页面必查)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
以下20个维度是每个管理后台页面的**最低测试覆盖要求**。写任何页面的Playwright测试时,必须逐条确认是否有对应测试用例。如果某个维度不适用于当前页面(如该页面无下拉框),需在测试文件中用注释说明跳过原因。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| # | 维度 | 必须断言的内容 | 适用场景 | 禁止做法 |
|
|
|
|
|
|
|
|
|---|------|---------------|----------|----------|
|
|
|
|
|
|
|
|
| 1 | **页面加载** | URL正确 + 关键元素可见 | 所有页面 | 只goto不等待 |
|
|
|
|
|
|
|
|
| 2 | **默认数据** | 页面打开即有数据(表格行数>0 / 卡片有值) | 有数据展示的页面 | 打开页面不检查数据 |
|
|
|
|
|
|
|
|
| 3 | **汇总卡片数值** | 每个卡片的数值 ≠ 空 ≠ `-` ≠ `--` ≠ `undefined` ≠ `null` | 有统计卡片的页面 | 只检查卡片可见不检查数值 |
|
|
|
|
|
|
|
|
| 4 | **表格行数** | `.el-table__row` 数量 > 0 | 有表格的页面 | 只检查table可见 |
|
|
|
|
|
|
|
|
| 5 | **表格每列有值** | 第一行每列文本 ≠ 空(日期、名称、数值、时间、状态等逐列检查) | 有表格的页面 | 只检查前2-3列 |
|
|
|
|
|
|
|
|
| 6 | **运行时间/数值列** | 时间列有具体数值(非空非NULL) | 有时间/数值列的页面 | 跳过时间列验证 |
|
|
|
|
|
|
|
|
| 7 | **状态标签** | 标签文本为已知中文文案(正常/离线/缺失/告警等) | 有状态列的页面 | 不检查状态文本内容 |
|
|
|
|
|
|
|
|
| 8 | **下拉框展开** | 点击展开 → 选项数量 ≥ 1 → 每个选项文本非空非占位 | 有下拉框的页面 | 只检查select可见 |
|
|
|
|
|
|
|
|
| 9 | **下拉框选择** | 选择一项 → 输入框显示选中label | 有下拉框的页面 | 选择后不验证显示值 |
|
|
|
|
|
|
|
|
| 10 | **筛选生效** | 选择筛选条件 → 点查询 → 表格数据变化 | 有查询功能的页面 | 不验证筛选后数据是否真的变了 |
|
|
|
|
|
|
|
|
| 11 | **文本筛选** | 输入关键词 → 点查询 → 结果每行包含关键词 | 有文本搜索框的页面 | 不验证搜索结果匹配度 |
|
|
|
|
|
|
|
|
| 12 | **日期筛选** | 切换日期范围 → 查询 → 数据正确变化 | 有日期选择的页面 | 不验证日期筛选效果 |
|
|
|
|
|
|
|
|
| 13 | **重置按钮** | 重置后所有筛选恢复默认占位符 | 有重置按钮的页面 | 不验证重置是否清空 |
|
|
|
|
|
|
|
|
| 14 | **分页切换** | 切到第2页 → 页码高亮 + 表格第一行数据变化 | 有分页且数据>1页 | 只检查分页组件可见 |
|
|
|
|
|
|
|
|
| 15 | **弹窗打开** | 点击触发 → 弹窗可见 + 标题正确 + 表单有初始值 | 有弹窗的页面 | 不验证弹窗标题和内容 |
|
|
|
|
|
|
|
|
| 16 | **弹窗提交闭环** | 填写表单 → 提交 → 成功提示 → 列表刷新 → 数据已变更 | 有写操作弹窗的页面 | 只验证弹窗能打开不验证提交 |
|
|
|
|
|
|
|
|
| 17 | **API vs 页面对账** | 调API拿JSON → 对比页面卡片/表格显示值是否一致 | 有统计卡片的页面 | 不和API实际值对比 |
|
|
|
|
|
|
|
|
| 18 | **下拉框选项值有效性** | 每个选项的文本非空、value可选中 | 有下拉框的页面 | 不验证选项文本内容 |
|
|
|
|
|
|
|
|
| 19 | **空数据状态** | 选不可能的条件 → 表格行数为0 + 无"白屏/报错" | 有筛选功能的页面 | 不验证极端情况 |
|
|
|
|
|
|
|
|
| 20 | **错误处理** | 异常场景(如网络断开)→ 显示友好提示不白屏 | 所有页面 | 不考虑异常场景 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 5.1 维度适用性速查表
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
不同类型的页面,必须覆盖的维度子集不同。写测试前先确认页面类型:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 页面类型 | 必须覆盖的维度编号 |
|
|
|
|
|
|
|
|
|----------|-------------------|
|
|
|
|
|
|
|
|
| **列表页(带表格+筛选)** | 1,2,4,5,8,9,10,13,14,19 |
|
|
|
|
|
|
|
|
| **列表页(带统计卡片)** | 1,2,3,4,5,8,9,10,13,14,17,19 |
|
|
|
|
|
|
|
|
| **仪表盘/概览页** | 1,2,3 |
|
|
|
|
|
|
|
|
| **详情/表单页** | 1,15,16 |
|
|
|
|
|
|
|
|
| **所有页面通用** | 1,20 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 5.3 交互控件测试矩阵
|
|
|
|
|
|
|
|
|
|
|
|
每个页面的每个交互控件,都必须按此矩阵验证:
|
|
|
|
每个页面的每个交互控件,都必须按此矩阵验证:
|
|
|
|
|
|
|
|
|
|
|
|
@ -308,7 +349,7 @@ npx playwright test e2e/smoke-iis.spec.ts --project=chromium
|
|
|
|
| **弹窗-提交** | 填写并提交 | 返回成功提示,列表刷新 | 不验证提交后的状态 |
|
|
|
|
| **弹窗-提交** | 填写并提交 | 返回成功提示,列表刷新 | 不验证提交后的状态 |
|
|
|
|
| **导出** | 点击导出 | 触发下载或显示提示 | 不验证导出行为 |
|
|
|
|
| **导出** | 点击导出 | 触发下载或显示提示 | 不验证导出行为 |
|
|
|
|
|
|
|
|
|
|
|
|
### 5.2 数据展示验证矩阵
|
|
|
|
### 5.4 数据展示验证矩阵
|
|
|
|
|
|
|
|
|
|
|
|
| 展示元素 | 验证标准 | 非法值(不通过) |
|
|
|
|
| 展示元素 | 验证标准 | 非法值(不通过) |
|
|
|
|
|----------|----------|------------------|
|
|
|
|
|----------|----------|------------------|
|
|
|
|
@ -318,7 +359,7 @@ npx playwright test e2e/smoke-iis.spec.ts --project=chromium
|
|
|
|
| **时间列** | 有值且格式正确(`YYYY-MM-DD` 或 `HH:mm:ss`) | 空值、格式错误 |
|
|
|
|
| **时间列** | 有值且格式正确(`YYYY-MM-DD` 或 `HH:mm:ss`) | 空值、格式错误 |
|
|
|
|
| **空状态** | 无数据时显示"暂无数据"或类似提示 | 空白页面、报错 |
|
|
|
|
| **空状态** | 无数据时显示"暂无数据"或类似提示 | 空白页面、报错 |
|
|
|
|
|
|
|
|
|
|
|
|
### 5.3 断言红黑榜
|
|
|
|
### 5.5 断言红黑榜
|
|
|
|
|
|
|
|
|
|
|
|
#### ✅ 正确的断言(数据层面)
|
|
|
|
#### ✅ 正确的断言(数据层面)
|
|
|
|
|
|
|
|
|
|
|
|
@ -457,3 +498,6 @@ echo "数量: $($wr.data.items.Count)(应>0)"
|
|
|
|
| 8 | 前端凭假设绑定字段名 | 必须对照API实际返回值 |
|
|
|
|
| 8 | 前端凭假设绑定字段名 | 必须对照API实际返回值 |
|
|
|
|
| 9 | 硬编码配置值(serviceId、端口等) | 从配置文件读取或与实际部署保持一致 |
|
|
|
|
| 9 | 硬编码配置值(serviceId、端口等) | 从配置文件读取或与实际部署保持一致 |
|
|
|
|
| 10 | 不检查Element Plus组件库的日期/格式要求 | 查阅文档确认格式(如 dayjs 的 `YYYY-MM-DD`) |
|
|
|
|
| 10 | 不检查Element Plus组件库的日期/格式要求 | 查阅文档确认格式(如 dayjs 的 `YYYY-MM-DD`) |
|
|
|
|
|
|
|
|
| 11 | Playwright测试不按维度表逐项覆盖 | 必须对照5.0节维度总表,每个维度有测试用例或注释跳过原因 |
|
|
|
|
|
|
|
|
| 12 | 测试脚本只覆盖部分页面 | 每次改动涉及的页面都必须有测试覆盖 |
|
|
|
|
|
|
|
|
| 13 | 新增测试维度后不更新维度总表 | 维度总表是强制标准,任何新发现的问题必须补充为新维度 |
|
|
|
|
|