Commit b8b4c69c authored by liguangyu06's avatar liguangyu06
Browse files

新增产品管理全链路自动化资产,并修复详情层/树页/路径串页等稳定问题。

parent 297e887d
# 基础管理-产品管理-产品供应关系维护 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-产品管理-产品供应关系维护-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-产品管理-产品供应关系维护-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/goods/paltform/purchases/calatog`
**定位器 YAML**:`locators/spd/prodm-supply.locator.yaml`
**元素扫描**:`data/scan/prodm-supply-elements.json`(2537 项)
**关联规范**:`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-PRODM-005.md`
**版本**:2026-11-04
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/prodm-supply.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:正例账号 `test_1` + `storageState`;具备「基础设置 → 产品管理 → 产品供应关系维护」权限。
**页面约定**:整页渲染;定位在 `page` 上。
**隔离**:每用例独立 context(playwright-storage-state-isolation)。
**菜单导航**:菜单「基础设置 → 产品管理 → 产品供应关系维护」;`openPath('/spd/basic/goods/paltform/purchases/calatog')` 并断言 URL,勿误入兄弟页。
**写操作**:写操作仅打开弹层后取消或做必填拦截,不提交成功落库;导出/打印不校验文件内容。
**动态取数**:查询后从首行读取 `${sampleCode}`/`${sampleName}`;mock:`__NOT_EXIST_PRODM__99999`。
---
## 基础设置 · 产品管理
### 产品供应关系维护 · 左侧分类树
#### 功能验证点
##### 【P0】【TC-UI-PRODM-SUP-001】【TP_PRODM_SUP_005】树默认有选中或可展开节点
- 前置条件:已进入产品供应关系维护页
- 操作步骤:
1. 断言左侧分类树可见且有选中或可展开节点
2. 读取选中节点名称 `${sampleTreeNode}`
3. 断言右侧列表/表单与当前节点范围一致或为空态
- 自动化断言:规划与 CSV `PRODM-SUP-001` 及 `tests/spd/prodm-supply.spec.ts` 一致
###### 预期结果
树有选中;右侧不展示其它节点数据为成功态。
---
##### 【P0】【TC-UI-PRODM-SUP-002】【TP_PRODM_SUP_007】切换树节点刷新右侧
- 前置条件:已进入产品供应关系维护页
- 操作步骤:
1. 记录当前节点与右侧首行(若有)
2. 点选另一树节点(仅 1 个则 skip)
3. 断言右侧数据范围切换,不残留上一节点首行
- 自动化断言:规划与 CSV `PRODM-SUP-002` 及 `tests/spd/prodm-supply.spec.ts` 一致
###### 预期结果
切换节点后右侧刷新。
---
### 产品供应关系维护 · 快捷筛选查询
#### 功能验证点
##### 【P1】【TC-UI-PRODM-SUP-003】【TP_PRODM_SUP_011】快捷区重置恢复默认
- 前置条件:已进入产品供应关系维护页
- 操作步骤:
1. 任意填写快捷区可见字段后点击「重 置」
2. 断言条件恢复默认;列表是否刷新按产品规则(未定则记待评审)
- 自动化断言:规划与 CSV `PRODM-SUP-003` 及 `tests/spd/prodm-supply.spec.ts` 一致
###### 预期结果
重置后条件恢复默认;页面无报错。
---
##### 【P0】【TC-UI-PRODM-SUP-004】【TP_PRODM_SUP_012】全量可见条件组合查询
- 前置条件:默认查询至少 1 条,否则 skip
- 操作步骤:
1. 默认查询 → 从首行提取全量样本(只填当前结果里有值的条件)
2. 快捷区可见非空条件全部填入后查询
3. 抽样首行同时满足全部已填条件;无未捕获异常
- 自动化断言:规划与 CSV `PRODM-SUP-004` 及 `tests/spd/prodm-supply.spec.ts` 一致
###### 预期结果
查询正常无报错;查询结果与查询条件一致。
---
### 产品供应关系维护 · 列表
#### 功能验证点
##### 【P0】【TC-UI-PRODM-SUP-005】【TP_PRODM_SUP_022】列表核心列完整
- 前置条件:已进入产品供应关系维护页
- 操作步骤:
1. 断言表头含核心列(抽样):产品、供应商/销售商、供应关系字段(以现网为准)
2. 若有数据,抽样首行关键字段非空
- 自动化断言:规划与 CSV `PRODM-SUP-005` 及 `tests/spd/prodm-supply.spec.ts` 一致
###### 预期结果
核心列完整;列表结构正确。
---
### 产品供应关系维护 · 行内操作
#### 功能验证点
##### 【P0】【TC-UI-PRODM-SUP-006】【TP_PRODM_SUP_017】行内「详情」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「详情」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-SUP-006` 及 `tests/spd/prodm-supply.spec.ts` 一致
###### 预期结果
行内「详情」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-SUP-007】【TP_PRODM_SUP_018】行内「编辑」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「编辑」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-SUP-007` 及 `tests/spd/prodm-supply.spec.ts` 一致
###### 预期结果
行内「编辑」可达;关闭后回到列表。
---
### 产品供应关系维护 · 列表
#### 功能验证点
##### 【P2】【TC-UI-PRODM-SUP-008】【TP_PRODM_SUP_024】列设置隐藏后再恢复
- 前置条件:列表表头已加载
- 操作步骤:
1. 默认查询后点击表格工具栏列设置(齿轮)
2. 取消勾选一列非核心字段并关闭面板,断言表头隐藏
3. 再次打开列设置勾选恢复并关闭,断言表头恢复
- 自动化断言:规划与 CSV `PRODM-SUP-008` 及 `tests/spd/prodm-supply.spec.ts` 一致
###### 预期结果
勾选状态与表头一致。
---
##### 【P1】【TC-UI-PRODM-SUP-009】【TP_PRODM_SUP_023】销售商(自定义)列表列升序降序切换
- 前置条件:至少 2 条数据,否则 skip
- 操作步骤:
1. 默认查询后列表有数据
2. 横向滚动使「销售商(自定义)列表」列表头可见(宽表时)
3. 第一次点击该列排序控件并校验升序指示器
4. 第二次点击并校验降序指示器
- 自动化断言:规划与 CSV `PRODM-SUP-009` 及 `tests/spd/prodm-supply.spec.ts` 一致
###### 预期结果
排序指示器与方向一致;列表仍有数据。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-SUP-010】【TP_PRODM_SUP_026】横向滚动与列对齐
- 前置条件:列表有数据且列超出视口,否则 skip
- 操作步骤:
1. 宽表场景下横向滚动使远侧列进入视口
2. 断言表头列数与数据列数一致、对齐无重叠
- 自动化断言:规划与 CSV `PRODM-SUP-010` 及 `tests/spd/prodm-supply.spec.ts` 一致
###### 预期结果
远侧列可进入视口;表头与数据列对齐。
---
##### 【P1】【TC-UI-PRODM-SUP-011】【TP_PRODM_SUP_025】无匹配空态(mock反例)
- 前置条件:已进入产品供应关系维护页
- 操作步骤:
1. 名称/编号类关键字填入 `__NOT_EXIST_PRODM__99999` 后查询
2. 断言表头仍在,0 行或空态,分页总数为 0
- 自动化断言:规划与 CSV `PRODM-SUP-011` 及 `tests/spd/prodm-supply.spec.ts` 一致
###### 预期结果
无匹配不报错;不展示过期成功态数据。
---
### 产品供应关系维护 · 分页
#### 功能验证点
##### 【P0】【TC-UI-PRODM-SUP-012】【TP_PRODM_SUP_027】有数据时总条数
- 前置条件:已进入产品供应关系维护页
- 操作步骤:
1. 默认查询后读取「共 N 条」
2. 断言 N 与本次查询匹配条数规则一致(有数据或 0)
- 自动化断言:规划与 CSV `PRODM-SUP-012` 及 `tests/spd/prodm-supply.spec.ts` 一致
###### 预期结果
「共 N 条」与查询结果一致。
---
##### 【P0】【TC-UI-PRODM-SUP-013】【TP_PRODM_SUP_028】切换至第 2 页
- 前置条件:总条数大于一页,否则 skip
- 操作步骤:
1. 记录第 1 页首行关键字段
2. 点击页码「2」或「下一页」
3. 断言页码高亮正确,首行数据与第 1 页不同
- 自动化断言:规划与 CSV `PRODM-SUP-013` 及 `tests/spd/prodm-supply.spec.ts` 一致
###### 预期结果
翻页成功;数据更换。
---
##### 【P1】【TC-UI-PRODM-SUP-014】【TP_PRODM_SUP_029】切换20条每页页面正常且列表同步
- 前置条件:N>10 且切换前可见行数 > min(N,20),否则 skip(见 3.7)
- 操作步骤:
1. 记录「共 N 条」与当前页可见行数
2. 打开每页条数下拉,选择「20 条/页」
3. 断言分页器显示 20 条/页;N 不变;当前页行数=min(N,20) 且与切换前不同
- 自动化断言:规划与 CSV `PRODM-SUP-014` 及 `tests/spd/prodm-supply.spec.ts` 一致
###### 预期结果
每页条数切换生效;总数不变;列表同步。
---
### 产品供应关系维护 · 导出
#### 功能验证点
##### 【P0】【TC-UI-PRODM-SUP-015】【TP_PRODM_SUP_034】当前查询条件下导出
- 前置条件:已进入产品供应关系维护页
- 操作步骤:
1. 先执行一次查询
2. 点击「导 出」或「导出」或「导出Excel」
3. 断言无未捕获异常(不校验文件内容)
- 自动化断言:规划与 CSV `PRODM-SUP-015` 及 `tests/spd/prodm-supply.spec.ts` 一致
###### 预期结果
导出流程可启动。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 | **15** 条(P0=9 / P1=5 / P2=1) |
| 来源 | 从 39 条测试点选取可稳定自动化场景;H3 与测试点同名 |
| 未纳入自动化 | 会话过期、无菜单权限、菜单进入单条、未登录探针、接口失败注入、导出文件内容、写操作成功落库、弹窗全字段 |
| 列排序 | 测试点 1 条「各可排序列升序降序」;本 MD **每 sorter 列一条** `{列名}列升序降序切换`(3.6) |
| 每页条数 | 有 size-changer 时标题「切换20条每页…」,绑定 TP「切换每页条数」(3.7) |
| 单一职责 | 每条只断言一个核心业务结果 |
# 基础管理-产品管理-产品信息变更 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-产品管理-产品信息变更-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-产品管理-产品信息变更-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/goods/platform/product-info`
**定位器 YAML**:`locators/spd/prodm-info-change.locator.yaml`
**元素扫描**:`data/scan/prodm-info-change-elements.json`(185 项)
**关联规范**:`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-PRODM-014.md`
**版本**:2026-11-04
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/prodm-info-change.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:正例账号 `test_1` + `storageState`;具备「基础设置 → 产品管理 → 产品信息变更」权限。
**页面约定**:整页渲染;定位在 `page` 上。
**隔离**:每用例独立 context(playwright-storage-state-isolation)。
**菜单导航**:菜单「基础设置 → 产品管理 → 产品信息变更」;`openPath('/spd/basic/goods/platform/product-info')` 并断言 URL,勿误入兄弟页。
**写操作**:写操作仅打开弹层后取消或做必填拦截,不提交成功落库;导出/打印不校验文件内容。
**动态取数**:查询后从首行读取 `${sampleCode}`/`${sampleName}`;mock:`__NOT_EXIST_PRODM__99999`。
---
## 基础设置 · 产品管理
### 产品信息变更 · 快捷筛选查询
#### 功能验证点
##### 【P1】【TC-UI-PRODM-ICH-001】【TP_PRODM_ICH_005】快捷区重置恢复默认
- 前置条件:已进入产品信息变更页
- 操作步骤:
1. 任意填写快捷区可见字段后点击「重 置」
2. 断言条件恢复默认;列表是否刷新按产品规则(未定则记待评审)
- 自动化断言:规划与 CSV `PRODM-ICH-001` 及 `tests/spd/prodm-info-change.spec.ts` 一致
###### 预期结果
重置后条件恢复默认;页面无报错。
---
### 产品信息变更 · 高级筛选抽屉
#### 功能验证点
##### 【P0】【TC-UI-PRODM-ICH-002】【TP_PRODM_ICH_012】全量查询条件组合查询
- 前置条件:默认查询至少 1 条,否则 skip
- 操作步骤:
1. 默认查询 → 从首行提取全量样本(不写死业务数据,见 rules 3.4)
2. 快捷区填入样本中有值的可见字段
3. 高级筛选抽屉填入样本中所有非空字段(文本直接填、下拉选同值;禁用字段记录默认)
4. 「查询/筛选」后抽样首行;首行同时满足样本中全部已填字段
- 自动化断言:规划与 CSV `PRODM-ICH-002` 及 `tests/spd/prodm-info-change.spec.ts` 一致
###### 预期结果
查询正常无报错;查询条件写值正常;查询结果与查询条件一致。
---
##### 【P0】【TC-UI-PRODM-ICH-003】【TP_PRODM_ICH_010】点击高级筛选打开抽屉
- 前置条件:已进入产品信息变更页
- 操作步骤:
1. 点击「高级筛选」
2. 断言抽屉标题为「高级筛选」,关键字段可交互
3. 关闭抽屉,快捷区条件不被误清空(以现网为准)
- 自动化断言:规划与 CSV `PRODM-ICH-003` 及 `tests/spd/prodm-info-change.spec.ts` 一致
###### 预期结果
高级筛选抽屉可打开并关闭。
---
### 产品信息变更 · 列表
#### 功能验证点
##### 【P0】【TC-UI-PRODM-ICH-004】【TP_PRODM_ICH_020】列表核心列完整
- 前置条件:已进入产品信息变更页
- 操作步骤:
1. 断言表头含核心列(抽样):单号、制单时间、状态、变更摘要等(以现网为准)
2. 若有数据,抽样首行关键字段非空
- 自动化断言:规划与 CSV `PRODM-ICH-004` 及 `tests/spd/prodm-info-change.spec.ts` 一致
###### 预期结果
核心列完整;列表结构正确。
---
### 产品信息变更 · 行内操作
#### 功能验证点
##### 【P0】【TC-UI-PRODM-ICH-005】【TP_PRODM_ICH_014】行内「详情」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「详情」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-ICH-005` 及 `tests/spd/prodm-info-change.spec.ts` 一致
###### 预期结果
行内「详情」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-ICH-006】【TP_PRODM_ICH_015】行内「编辑」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「编辑」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-ICH-006` 及 `tests/spd/prodm-info-change.spec.ts` 一致
###### 预期结果
行内「编辑」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-ICH-007】【TP_PRODM_ICH_016】行内「日志」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「日志」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-ICH-007` 及 `tests/spd/prodm-info-change.spec.ts` 一致
###### 预期结果
行内「日志」可达;关闭后回到列表。
---
### 产品信息变更 · 列表
#### 功能验证点
##### 【P2】【TC-UI-PRODM-ICH-008】【TP_PRODM_ICH_021】列设置隐藏后再恢复
- 前置条件:列表表头已加载
- 操作步骤:
1. 默认查询后点击表格工具栏列设置(齿轮)
2. 取消勾选一列非核心字段并关闭面板,断言表头隐藏
3. 再次打开列设置勾选恢复并关闭,断言表头恢复
- 自动化断言:规划与 CSV `PRODM-ICH-008` 及 `tests/spd/prodm-info-change.spec.ts` 一致
###### 预期结果
勾选状态与表头一致。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-ICH-009】【TP_PRODM_ICH_023】横向滚动与列对齐
- 前置条件:列表有数据且列超出视口,否则 skip
- 操作步骤:
1. 宽表场景下横向滚动使远侧列进入视口
2. 断言表头列数与数据列数一致、对齐无重叠
- 自动化断言:规划与 CSV `PRODM-ICH-009` 及 `tests/spd/prodm-info-change.spec.ts` 一致
###### 预期结果
远侧列可进入视口;表头与数据列对齐。
---
##### 【P1】【TC-UI-PRODM-ICH-010】【TP_PRODM_ICH_022】无匹配空态(mock反例)
- 前置条件:已进入产品信息变更页
- 操作步骤:
1. 名称/编号类关键字填入 `__NOT_EXIST_PRODM__99999` 后查询
2. 断言表头仍在,0 行或空态,分页总数为 0
- 自动化断言:规划与 CSV `PRODM-ICH-010` 及 `tests/spd/prodm-info-change.spec.ts` 一致
###### 预期结果
无匹配不报错;不展示过期成功态数据。
---
### 产品信息变更 · 分页
#### 功能验证点
##### 【P0】【TC-UI-PRODM-ICH-011】【TP_PRODM_ICH_024】有数据时总条数
- 前置条件:已进入产品信息变更页
- 操作步骤:
1. 默认查询后读取「共 N 条」
2. 断言 N 与本次查询匹配条数规则一致(有数据或 0)
- 自动化断言:规划与 CSV `PRODM-ICH-011` 及 `tests/spd/prodm-info-change.spec.ts` 一致
###### 预期结果
「共 N 条」与查询结果一致。
---
##### 【P0】【TC-UI-PRODM-ICH-012】【TP_PRODM_ICH_025】切换至第 2 页
- 前置条件:总条数大于一页,否则 skip
- 操作步骤:
1. 记录第 1 页首行关键字段
2. 点击页码「2」或「下一页」
3. 断言页码高亮正确,首行数据与第 1 页不同
- 自动化断言:规划与 CSV `PRODM-ICH-012` 及 `tests/spd/prodm-info-change.spec.ts` 一致
###### 预期结果
翻页成功;数据更换。
---
##### 【P1】【TC-UI-PRODM-ICH-013】【TP_PRODM_ICH_026】切换20条每页页面正常且列表同步
- 前置条件:N>10 且切换前可见行数 > min(N,20),否则 skip(见 3.7)
- 操作步骤:
1. 记录「共 N 条」与当前页可见行数
2. 打开每页条数下拉,选择「20 条/页」
3. 断言分页器显示 20 条/页;N 不变;当前页行数=min(N,20) 且与切换前不同
- 自动化断言:规划与 CSV `PRODM-ICH-013` 及 `tests/spd/prodm-info-change.spec.ts` 一致
###### 预期结果
每页条数切换生效;总数不变;列表同步。
---
### 产品信息变更 · 打印
#### 功能验证点
##### 【P0】【TC-UI-PRODM-ICH-014】【TP_PRODM_ICH_031】按当前条件打印
- 前置条件:已进入产品信息变更页
- 操作步骤:
1. 点击「打 印」或「打印产品码」等页面级打印入口
2. 断言可拉起对话框/预览/toast,无 error
- 自动化断言:规划与 CSV `PRODM-ICH-014` 及 `tests/spd/prodm-info-change.spec.ts` 一致
###### 预期结果
打印流程可启动。
---
### 产品信息变更 · 新增
#### 功能验证点
##### 【P0】【TC-UI-PRODM-ICH-015】【TP_PRODM_ICH_032】打开「新增」对应弹窗/抽屉
- 前置条件:已进入产品信息变更页
- 操作步骤:
1. 点击「新增」或等价入口
2. 断言弹窗/抽屉/详情可见,关键字段可交互
3. 可见取消/关闭/返回
- 自动化断言:规划与 CSV `PRODM-ICH-015` 及 `tests/spd/prodm-info-change.spec.ts` 一致
###### 预期结果
「新增」层打开;关键控件可见。
---
##### 【P1】【TC-UI-PRODM-ICH-016】【TP_PRODM_ICH_033】「新增」取消不落库
- 前置条件:已进入产品信息变更页
- 操作步骤:
1. 打开「新增」,任意填写非空后点击「取 消」或关闭
2. 断言弹层关闭,列表行数与打开前一致(抽样)
- 自动化断言:规划与 CSV `PRODM-ICH-016` 及 `tests/spd/prodm-info-change.spec.ts` 一致
###### 预期结果
取消后列表无新增/无修改。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-ICH-017】【TP_PRODM_ICH_034】「新增」必填为空拦截
- 前置条件:该层存在必填提交,否则 skip
- 操作步骤:
1. 打开「新增」,必填项留空后点击「确 定」
2. 断言出现必填提示,弹层仍打开,列表不刷新为成功态
- 自动化断言:规划与 CSV `PRODM-ICH-017` 及 `tests/spd/prodm-info-change.spec.ts` 一致
###### 预期结果
确定被拦截;不落库。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 | **17** 条(P0=10 / P1=6 / P2=1) |
| 来源 | 从 41 条测试点选取可稳定自动化场景;H3 与测试点同名 |
| 未纳入自动化 | 会话过期、无菜单权限、菜单进入单条、未登录探针、接口失败注入、导出文件内容、写操作成功落库、弹窗全字段 |
| 列排序 | 测试点 1 条「各可排序列升序降序」;本 MD **每 sorter 列一条** `{列名}列升序降序切换`(3.6) |
| 每页条数 | 有 size-changer 时标题「切换20条每页…」,绑定 TP「切换每页条数」(3.7) |
| 单一职责 | 每条只断言一个核心业务结果 |
# 基础管理-产品管理-产品初审核对 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-产品管理-产品初审核对-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-产品管理-产品初审核对-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/goods/paltform/product/first`
**定位器 YAML**:`locators/spd/prodm-first-audit.locator.yaml`
**元素扫描**:`data/scan/prodm-first-audit-elements.json`(125 项)
**关联规范**:`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-PRODM-004.md`
**版本**:2026-11-04
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/prodm-first-audit.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:正例账号 `test_1` + `storageState`;具备「基础设置 → 产品管理 → 产品初审核对」权限。
**页面约定**:整页渲染;定位在 `page` 上。
**隔离**:每用例独立 context(playwright-storage-state-isolation)。
**菜单导航**:菜单「基础设置 → 产品管理 → 产品初审核对」;`openPath('/spd/basic/goods/paltform/product/first')` 并断言 URL,勿误入兄弟页。
**写操作**:写操作仅打开弹层后取消或做必填拦截,不提交成功落库;导出/打印不校验文件内容。
**动态取数**:查询后从首行读取 `${sampleCode}`/`${sampleName}`;mock:`__NOT_EXIST_PRODM__99999`。
---
## 基础设置 · 产品管理
### 产品初审核对 · 快捷筛选查询
#### 功能验证点
##### 【P1】【TC-UI-PRODM-FAU-001】【TP_PRODM_FAU_005】快捷区重置恢复默认
- 前置条件:已进入产品初审核对页
- 操作步骤:
1. 任意填写快捷区可见字段后点击「重 置」
2. 断言条件恢复默认;列表是否刷新按产品规则(未定则记待评审)
- 自动化断言:规划与 CSV `PRODM-FAU-001` 及 `tests/spd/prodm-first-audit.spec.ts` 一致
###### 预期结果
重置后条件恢复默认;页面无报错。
---
##### 【P0】【TC-UI-PRODM-FAU-002】【TP_PRODM_FAU_006】全量可见条件组合查询
- 前置条件:默认查询至少 1 条,否则 skip
- 操作步骤:
1. 默认查询 → 从首行提取全量样本(只填当前结果里有值的条件)
2. 快捷区可见非空条件全部填入后查询
3. 抽样首行同时满足全部已填条件;无未捕获异常
- 自动化断言:规划与 CSV `PRODM-FAU-002` 及 `tests/spd/prodm-first-audit.spec.ts` 一致
###### 预期结果
查询正常无报错;查询结果与查询条件一致。
---
### 产品初审核对 · 查询条件展开收起
#### 功能验证点
##### 【P1】【TC-UI-PRODM-FAU-003】【TP_PRODM_FAU_011】展开后更多条件可见
- 前置条件:已进入产品初审核对页
- 操作步骤:
1. 点击「展开」
2. 断言额外筛选字段进入可视区且可填写
3. 按钮文案变为「收起」
- 自动化断言:规划与 CSV `PRODM-FAU-003` 及 `tests/spd/prodm-first-audit.spec.ts` 一致
###### 预期结果
展开后更多条件可见并可交互。
---
### 产品初审核对 · 列表
#### 功能验证点
##### 【P0】【TC-UI-PRODM-FAU-004】【TP_PRODM_FAU_022】列表核心列完整
- 前置条件:已进入产品初审核对页
- 操作步骤:
1. 断言表头含核心列(抽样):物料编号、名称、规格、注册人、审核状态等(以现网为准)
2. 若有数据,抽样首行关键字段非空
- 自动化断言:规划与 CSV `PRODM-FAU-004` 及 `tests/spd/prodm-first-audit.spec.ts` 一致
###### 预期结果
核心列完整;列表结构正确。
---
### 产品初审核对 · 行内操作
#### 功能验证点
##### 【P0】【TC-UI-PRODM-FAU-005】【TP_PRODM_FAU_016】行内「详情」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「详情」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-FAU-005` 及 `tests/spd/prodm-first-audit.spec.ts` 一致
###### 预期结果
行内「详情」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-FAU-006】【TP_PRODM_FAU_017】行内「审核」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「审核」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-FAU-006` 及 `tests/spd/prodm-first-audit.spec.ts` 一致
###### 预期结果
行内「审核」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-FAU-007】【TP_PRODM_FAU_018】行内「编辑」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「编辑」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-FAU-007` 及 `tests/spd/prodm-first-audit.spec.ts` 一致
###### 预期结果
行内「编辑」可达;关闭后回到列表。
---
### 产品初审核对 · 列表
#### 边界验证点
##### 【P1】【TC-UI-PRODM-FAU-008】【TP_PRODM_FAU_023】无匹配空态(mock反例)
- 前置条件:已进入产品初审核对页
- 操作步骤:
1. 名称/编号类关键字填入 `__NOT_EXIST_PRODM__99999` 后查询
2. 断言表头仍在,0 行或空态,分页总数为 0
- 自动化断言:规划与 CSV `PRODM-FAU-008` 及 `tests/spd/prodm-first-audit.spec.ts` 一致
###### 预期结果
无匹配不报错;不展示过期成功态数据。
---
### 产品初审核对 · 分页
#### 功能验证点
##### 【P0】【TC-UI-PRODM-FAU-009】【TP_PRODM_FAU_024】有数据时总条数
- 前置条件:已进入产品初审核对页
- 操作步骤:
1. 默认查询后读取「共 N 条」
2. 断言 N 与本次查询匹配条数规则一致(有数据或 0)
- 自动化断言:规划与 CSV `PRODM-FAU-009` 及 `tests/spd/prodm-first-audit.spec.ts` 一致
###### 预期结果
「共 N 条」与查询结果一致。
---
##### 【P0】【TC-UI-PRODM-FAU-010】【TP_PRODM_FAU_025】切换至第 2 页
- 前置条件:总条数大于一页,否则 skip
- 操作步骤:
1. 记录第 1 页首行关键字段
2. 点击页码「2」或「下一页」
3. 断言页码高亮正确,首行数据与第 1 页不同
- 自动化断言:规划与 CSV `PRODM-FAU-010` 及 `tests/spd/prodm-first-audit.spec.ts` 一致
###### 预期结果
翻页成功;数据更换。
---
##### 【P1】【TC-UI-PRODM-FAU-011】【TP_PRODM_FAU_026】切换20条每页页面正常且列表同步
- 前置条件:N>10 且切换前可见行数 > min(N,20),否则 skip(见 3.7)
- 操作步骤:
1. 记录「共 N 条」与当前页可见行数
2. 打开每页条数下拉,选择「20 条/页」
3. 断言分页器显示 20 条/页;N 不变;当前页行数=min(N,20) 且与切换前不同
- 自动化断言:规划与 CSV `PRODM-FAU-011` 及 `tests/spd/prodm-first-audit.spec.ts` 一致
###### 预期结果
每页条数切换生效;总数不变;列表同步。
---
### 产品初审核对 · 导出
#### 功能验证点
##### 【P0】【TC-UI-PRODM-FAU-012】【TP_PRODM_FAU_031】当前查询条件下导出
- 前置条件:已进入产品初审核对页
- 操作步骤:
1. 先执行一次查询
2. 点击「导 出」或「导出」或「导出Excel」
3. 断言无未捕获异常(不校验文件内容)
- 自动化断言:规划与 CSV `PRODM-FAU-012` 及 `tests/spd/prodm-first-audit.spec.ts` 一致
###### 预期结果
导出流程可启动。
---
### 产品初审核对 · 产品初审核对
#### 功能验证点
##### 【P0】【TC-UI-PRODM-FAU-013】【TP_PRODM_FAU_033】打开「产品初审核对」对应弹窗/抽屉
- 前置条件:已进入产品初审核对页
- 操作步骤:
1. 点击「产品初审核对」或等价入口
2. 断言弹窗/抽屉/详情可见,关键字段可交互
3. 可见取消/关闭/返回
- 自动化断言:规划与 CSV `PRODM-FAU-013` 及 `tests/spd/prodm-first-audit.spec.ts` 一致
###### 预期结果
「产品初审核对」层打开;关键控件可见。
---
##### 【P1】【TC-UI-PRODM-FAU-014】【TP_PRODM_FAU_034】「产品初审核对」取消不落库
- 前置条件:已进入产品初审核对页
- 操作步骤:
1. 打开「产品初审核对」,任意填写非空后点击「取 消」或关闭
2. 断言弹层关闭,列表行数与打开前一致(抽样)
- 自动化断言:规划与 CSV `PRODM-FAU-014` 及 `tests/spd/prodm-first-audit.spec.ts` 一致
###### 预期结果
取消后列表无新增/无修改。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-FAU-015】【TP_PRODM_FAU_035】「产品初审核对」必填为空拦截
- 前置条件:该层存在必填提交,否则 skip
- 操作步骤:
1. 打开「产品初审核对」,必填项留空后点击「确 定」
2. 断言出现必填提示,弹层仍打开,列表不刷新为成功态
- 自动化断言:规划与 CSV `PRODM-FAU-015` 及 `tests/spd/prodm-first-audit.spec.ts` 一致
###### 预期结果
确定被拦截;不落库。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 | **15** 条(P0=9 / P1=6) |
| 来源 | 从 42 条测试点选取可稳定自动化场景;H3 与测试点同名 |
| 未纳入自动化 | 会话过期、无菜单权限、菜单进入单条、未登录探针、接口失败注入、导出文件内容、写操作成功落库、弹窗全字段 |
| 列排序 | 测试点 1 条「各可排序列升序降序」;本 MD **每 sorter 列一条** `{列名}列升序降序切换`(3.6) |
| 每页条数 | 有 size-changer 时标题「切换20条每页…」,绑定 TP「切换每页条数」(3.7) |
| 单一职责 | 每条只断言一个核心业务结果 |
# 基础管理-产品管理-产品核对重新发起 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-产品管理-产品核对重新发起-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-产品管理-产品核对重新发起-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/goods/paltform/product/check`
**定位器 YAML**:`locators/spd/prodm-check-reinit.locator.yaml`
**元素扫描**:`data/scan/prodm-check-reinit-elements.json`(102 项)
**关联规范**:`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-PRODM-001.md`
**版本**:2026-11-04
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/prodm-check-reinit.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:正例账号 `test_1` + `storageState`;具备「基础设置 → 产品管理 → 产品核对重新发起」权限。
**页面约定**:整页渲染;定位在 `page` 上。
**隔离**:每用例独立 context(playwright-storage-state-isolation)。
**菜单导航**:菜单「基础设置 → 产品管理 → 产品核对重新发起」;`openPath('/spd/basic/goods/paltform/product/check')` 并断言 URL,勿误入兄弟页。
**写操作**:写操作仅打开弹层后取消或做必填拦截,不提交成功落库;导出/打印不校验文件内容。
**动态取数**:查询后从首行读取 `${sampleCode}`/`${sampleName}`;mock:`__NOT_EXIST_PRODM__99999`。
---
## 基础设置 · 产品管理
### 产品核对重新发起 · 快捷筛选查询
#### 功能验证点
##### 【P1】【TC-UI-PRODM-CHK-001】【TP_PRODM_CHK_005】快捷区重置恢复默认
- 前置条件:已进入产品核对重新发起页
- 操作步骤:
1. 任意填写快捷区可见字段后点击「重 置」
2. 断言条件恢复默认;列表是否刷新按产品规则(未定则记待评审)
- 自动化断言:规划与 CSV `PRODM-CHK-001` 及 `tests/spd/prodm-check-reinit.spec.ts` 一致
###### 预期结果
重置后条件恢复默认;页面无报错。
---
##### 【P0】【TC-UI-PRODM-CHK-002】【TP_PRODM_CHK_006】全量可见条件组合查询
- 前置条件:默认查询至少 1 条,否则 skip
- 操作步骤:
1. 默认查询 → 从首行提取全量样本(只填当前结果里有值的条件)
2. 快捷区可见非空条件全部填入后查询
3. 抽样首行同时满足全部已填条件;无未捕获异常
- 自动化断言:规划与 CSV `PRODM-CHK-002` 及 `tests/spd/prodm-check-reinit.spec.ts` 一致
###### 预期结果
查询正常无报错;查询结果与查询条件一致。
---
### 产品核对重新发起 · 查询条件展开收起
#### 功能验证点
##### 【P1】【TC-UI-PRODM-CHK-003】【TP_PRODM_CHK_011】展开后更多条件可见
- 前置条件:已进入产品核对重新发起页
- 操作步骤:
1. 点击「展开」
2. 断言额外筛选字段进入可视区且可填写
3. 按钮文案变为「收起」
- 自动化断言:规划与 CSV `PRODM-CHK-003` 及 `tests/spd/prodm-check-reinit.spec.ts` 一致
###### 预期结果
展开后更多条件可见并可交互。
---
### 产品核对重新发起 · 状态 Tab
#### 功能验证点
##### 【P0】【TC-UI-PRODM-CHK-004】【TP_PRODM_CHK_016】状态 Tab 与列表一致
- 前置条件:已进入产品核对重新发起页
- 操作步骤:
1. 依次切换 Tab:全部、初审驳回、物价驳回(以现网为准)
2. 每次切换后断言列表状态列与 Tab 语义一致或为空态
- 自动化断言:规划与 CSV `PRODM-CHK-004` 及 `tests/spd/prodm-check-reinit.spec.ts` 一致
###### 预期结果
Tab 与列表一致;无报错。
---
### 产品核对重新发起 · 列表
#### 功能验证点
##### 【P0】【TC-UI-PRODM-CHK-005】【TP_PRODM_CHK_017】列表核心列完整
- 前置条件:已进入产品核对重新发起页
- 操作步骤:
1. 断言表头含核心列(抽样):物料编号、是否植入、物料名称、器械注册人、规格型号、单位、耗材类型、销售商等(以现网为准)
2. 若有数据,抽样首行关键字段非空
- 自动化断言:规划与 CSV `PRODM-CHK-005` 及 `tests/spd/prodm-check-reinit.spec.ts` 一致
###### 预期结果
核心列完整;列表结构正确。
---
#### 集成验证点
##### 【P0】【TC-UI-PRODM-CHK-006】【TP_PRODM_CHK_019】行内「编辑」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「编辑」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-CHK-006` 及 `tests/spd/prodm-check-reinit.spec.ts` 一致
###### 预期结果
行内操作可达;关闭后回到列表。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-CHK-007】【TP_PRODM_CHK_018】无匹配空态(mock反例)
- 前置条件:已进入产品核对重新发起页
- 操作步骤:
1. 名称/编号类关键字填入 `__NOT_EXIST_PRODM__99999` 后查询
2. 断言表头仍在,0 行或空态,分页总数为 0
- 自动化断言:规划与 CSV `PRODM-CHK-007` 及 `tests/spd/prodm-check-reinit.spec.ts` 一致
###### 预期结果
无匹配不报错;不展示过期成功态数据。
---
### 产品核对重新发起 · 分页
#### 功能验证点
##### 【P0】【TC-UI-PRODM-CHK-008】【TP_PRODM_CHK_020】有数据时总条数
- 前置条件:已进入产品核对重新发起页
- 操作步骤:
1. 默认查询后读取「共 N 条」
2. 断言 N 与本次查询匹配条数规则一致(有数据或 0)
- 自动化断言:规划与 CSV `PRODM-CHK-008` 及 `tests/spd/prodm-check-reinit.spec.ts` 一致
###### 预期结果
「共 N 条」与查询结果一致。
---
##### 【P0】【TC-UI-PRODM-CHK-009】【TP_PRODM_CHK_021】切换至第 2 页
- 前置条件:总条数大于一页,否则 skip
- 操作步骤:
1. 记录第 1 页首行关键字段
2. 点击页码「2」或「下一页」
3. 断言页码高亮正确,首行数据与第 1 页不同
- 自动化断言:规划与 CSV `PRODM-CHK-009` 及 `tests/spd/prodm-check-reinit.spec.ts` 一致
###### 预期结果
翻页成功;数据更换。
---
##### 【P1】【TC-UI-PRODM-CHK-010】【TP_PRODM_CHK_022】切换20条每页页面正常且列表同步
- 前置条件:N>10 且切换前可见行数 > min(N,20),否则 skip(见 3.7)
- 操作步骤:
1. 记录「共 N 条」与当前页可见行数
2. 打开每页条数下拉,选择「20 条/页」
3. 断言分页器显示 20 条/页;N 不变;当前页行数=min(N,20) 且与切换前不同
- 自动化断言:规划与 CSV `PRODM-CHK-010` 及 `tests/spd/prodm-check-reinit.spec.ts` 一致
###### 预期结果
每页条数切换生效;总数不变;列表同步。
---
### 产品核对重新发起 · 导出
#### 功能验证点
##### 【P0】【TC-UI-PRODM-CHK-011】【TP_PRODM_CHK_027】当前查询条件下导出
- 前置条件:已进入产品核对重新发起页
- 操作步骤:
1. 先执行一次查询
2. 点击「导 出」或「导出」或「导出Excel」
3. 断言无未捕获异常(不校验文件内容)
- 自动化断言:规划与 CSV `PRODM-CHK-011` 及 `tests/spd/prodm-check-reinit.spec.ts` 一致
###### 预期结果
导出流程可启动。
---
### 产品核对重新发起 · 重新发起审核
#### 功能验证点
##### 【P0】【TC-UI-PRODM-CHK-012】【TP_PRODM_CHK_029】打开「重新发起审核」对应弹窗/抽屉
- 前置条件:已进入产品核对重新发起页
- 操作步骤:
1. 点击「重新发起审核」或等价入口
2. 断言弹窗/抽屉/详情可见,关键字段可交互
3. 可见取消/关闭/返回
- 自动化断言:规划与 CSV `PRODM-CHK-012` 及 `tests/spd/prodm-check-reinit.spec.ts` 一致
###### 预期结果
「重新发起审核」层打开;关键控件可见。
---
##### 【P1】【TC-UI-PRODM-CHK-013】【TP_PRODM_CHK_030】「重新发起审核」取消不落库
- 前置条件:已进入产品核对重新发起页
- 操作步骤:
1. 打开「重新发起审核」,任意填写非空后点击「取 消」或关闭
2. 断言弹层关闭,列表行数与打开前一致(抽样)
- 自动化断言:规划与 CSV `PRODM-CHK-013` 及 `tests/spd/prodm-check-reinit.spec.ts` 一致
###### 预期结果
取消后列表无新增/无修改。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-CHK-014】【TP_PRODM_CHK_031】「重新发起审核」必填为空拦截
- 前置条件:该层存在必填提交,否则 skip
- 操作步骤:
1. 打开「重新发起审核」,必填项留空后点击「确 定」
2. 断言出现必填提示,弹层仍打开,列表不刷新为成功态
- 自动化断言:规划与 CSV `PRODM-CHK-014` 及 `tests/spd/prodm-check-reinit.spec.ts` 一致
###### 预期结果
确定被拦截;不落库。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 | **14** 条(P0=8 / P1=6) |
| 来源 | 从 38 条测试点选取可稳定自动化场景;H3 与测试点同名 |
| 未纳入自动化 | 会话过期、无菜单权限、菜单进入单条、未登录探针、接口失败注入、导出文件内容、写操作成功落库、弹窗全字段 |
| 列排序 | 测试点 1 条「各可排序列升序降序」;本 MD **每 sorter 列一条** `{列名}列升序降序切换`(3.6) |
| 每页条数 | 有 size-changer 时标题「切换20条每页…」,绑定 TP「切换每页条数」(3.7) |
| 单一职责 | 每条只断言一个核心业务结果 |
# 基础管理-产品管理-产品物价核对 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-产品管理-产品物价核对-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-产品管理-产品物价核对-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/goods/paltform/product/priceCheck`
**定位器 YAML**:`locators/spd/prodm-price-check.locator.yaml`
**元素扫描**:`data/scan/prodm-price-check-elements.json`(74 项)
**关联规范**:`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-PRODM-006.md`
**版本**:2026-11-04
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/prodm-price-check.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:正例账号 `test_1` + `storageState`;具备「基础设置 → 产品管理 → 产品物价核对」权限。
**页面约定**:整页渲染;定位在 `page` 上。
**隔离**:每用例独立 context(playwright-storage-state-isolation)。
**菜单导航**:菜单「基础设置 → 产品管理 → 产品物价核对」;`openPath('/spd/basic/goods/paltform/product/priceCheck')` 并断言 URL,勿误入兄弟页。
**写操作**:写操作仅打开弹层后取消或做必填拦截,不提交成功落库;导出/打印不校验文件内容。
**动态取数**:查询后从首行读取 `${sampleCode}`/`${sampleName}`;mock:`__NOT_EXIST_PRODM__99999`。
---
## 基础设置 · 产品管理
### 产品物价核对 · 快捷筛选查询
#### 功能验证点
##### 【P1】【TC-UI-PRODM-PRC-001】【TP_PRODM_PRC_005】快捷区重置恢复默认
- 前置条件:已进入产品物价核对页
- 操作步骤:
1. 任意填写快捷区可见字段后点击「重 置」
2. 断言条件恢复默认;列表是否刷新按产品规则(未定则记待评审)
- 自动化断言:规划与 CSV `PRODM-PRC-001` 及 `tests/spd/prodm-price-check.spec.ts` 一致
###### 预期结果
重置后条件恢复默认;页面无报错。
---
##### 【P0】【TC-UI-PRODM-PRC-002】【TP_PRODM_PRC_006】全量可见条件组合查询
- 前置条件:默认查询至少 1 条,否则 skip
- 操作步骤:
1. 默认查询 → 从首行提取全量样本(只填当前结果里有值的条件)
2. 快捷区可见非空条件全部填入后查询
3. 抽样首行同时满足全部已填条件;无未捕获异常
- 自动化断言:规划与 CSV `PRODM-PRC-002` 及 `tests/spd/prodm-price-check.spec.ts` 一致
###### 预期结果
查询正常无报错;查询结果与查询条件一致。
---
### 产品物价核对 · 查询条件展开收起
#### 功能验证点
##### 【P1】【TC-UI-PRODM-PRC-003】【TP_PRODM_PRC_011】展开后更多条件可见
- 前置条件:已进入产品物价核对页
- 操作步骤:
1. 点击「展开」
2. 断言额外筛选字段进入可视区且可填写
3. 按钮文案变为「收起」
- 自动化断言:规划与 CSV `PRODM-PRC-003` 及 `tests/spd/prodm-price-check.spec.ts` 一致
###### 预期结果
展开后更多条件可见并可交互。
---
### 产品物价核对 · 列表
#### 功能验证点
##### 【P0】【TC-UI-PRODM-PRC-004】【TP_PRODM_PRC_022】列表核心列完整
- 前置条件:已进入产品物价核对页
- 操作步骤:
1. 断言表头含核心列(抽样):物料、物价/收费相关列、审核状态等(以现网为准)
2. 若有数据,抽样首行关键字段非空
- 自动化断言:规划与 CSV `PRODM-PRC-004` 及 `tests/spd/prodm-price-check.spec.ts` 一致
###### 预期结果
核心列完整;列表结构正确。
---
### 产品物价核对 · 行内操作
#### 功能验证点
##### 【P0】【TC-UI-PRODM-PRC-005】【TP_PRODM_PRC_016】行内「详情」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「详情」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-PRC-005` 及 `tests/spd/prodm-price-check.spec.ts` 一致
###### 预期结果
行内「详情」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-PRC-006】【TP_PRODM_PRC_017】行内「审核」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「审核」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-PRC-006` 及 `tests/spd/prodm-price-check.spec.ts` 一致
###### 预期结果
行内「审核」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-PRC-007】【TP_PRODM_PRC_018】行内「编辑」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「编辑」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-PRC-007` 及 `tests/spd/prodm-price-check.spec.ts` 一致
###### 预期结果
行内「编辑」可达;关闭后回到列表。
---
### 产品物价核对 · 列表
#### 边界验证点
##### 【P1】【TC-UI-PRODM-PRC-008】【TP_PRODM_PRC_023】无匹配空态(mock反例)
- 前置条件:已进入产品物价核对页
- 操作步骤:
1. 名称/编号类关键字填入 `__NOT_EXIST_PRODM__99999` 后查询
2. 断言表头仍在,0 行或空态,分页总数为 0
- 自动化断言:规划与 CSV `PRODM-PRC-008` 及 `tests/spd/prodm-price-check.spec.ts` 一致
###### 预期结果
无匹配不报错;不展示过期成功态数据。
---
### 产品物价核对 · 分页
#### 功能验证点
##### 【P0】【TC-UI-PRODM-PRC-009】【TP_PRODM_PRC_024】有数据时总条数
- 前置条件:已进入产品物价核对页
- 操作步骤:
1. 默认查询后读取「共 N 条」
2. 断言 N 与本次查询匹配条数规则一致(有数据或 0)
- 自动化断言:规划与 CSV `PRODM-PRC-009` 及 `tests/spd/prodm-price-check.spec.ts` 一致
###### 预期结果
「共 N 条」与查询结果一致。
---
##### 【P0】【TC-UI-PRODM-PRC-010】【TP_PRODM_PRC_025】切换至第 2 页
- 前置条件:总条数大于一页,否则 skip
- 操作步骤:
1. 记录第 1 页首行关键字段
2. 点击页码「2」或「下一页」
3. 断言页码高亮正确,首行数据与第 1 页不同
- 自动化断言:规划与 CSV `PRODM-PRC-010` 及 `tests/spd/prodm-price-check.spec.ts` 一致
###### 预期结果
翻页成功;数据更换。
---
### 产品物价核对 · 导出
#### 功能验证点
##### 【P0】【TC-UI-PRODM-PRC-011】【TP_PRODM_PRC_030】当前查询条件下导出
- 前置条件:已进入产品物价核对页
- 操作步骤:
1. 先执行一次查询
2. 点击「导 出」或「导出」或「导出Excel」
3. 断言无未捕获异常(不校验文件内容)
- 自动化断言:规划与 CSV `PRODM-PRC-011` 及 `tests/spd/prodm-price-check.spec.ts` 一致
###### 预期结果
导出流程可启动。
---
### 产品物价核对 · 批量审核
#### 功能验证点
##### 【P0】【TC-UI-PRODM-PRC-012】【TP_PRODM_PRC_032】打开「批量审核」对应弹窗/抽屉
- 前置条件:已进入产品物价核对页
- 操作步骤:
1. 点击「批量审核」或等价入口
2. 断言弹窗/抽屉/详情可见,关键字段可交互
3. 可见取消/关闭/返回
- 自动化断言:规划与 CSV `PRODM-PRC-012` 及 `tests/spd/prodm-price-check.spec.ts` 一致
###### 预期结果
「批量审核」层打开;关键控件可见。
---
##### 【P1】【TC-UI-PRODM-PRC-013】【TP_PRODM_PRC_033】「批量审核」取消不落库
- 前置条件:已进入产品物价核对页
- 操作步骤:
1. 打开「批量审核」,任意填写非空后点击「取 消」或关闭
2. 断言弹层关闭,列表行数与打开前一致(抽样)
- 自动化断言:规划与 CSV `PRODM-PRC-013` 及 `tests/spd/prodm-price-check.spec.ts` 一致
###### 预期结果
取消后列表无新增/无修改。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-PRC-014】【TP_PRODM_PRC_034】「批量审核」必填为空拦截
- 前置条件:该层存在必填提交,否则 skip
- 操作步骤:
1. 打开「批量审核」,必填项留空后点击「确 定」
2. 断言出现必填提示,弹层仍打开,列表不刷新为成功态
- 自动化断言:规划与 CSV `PRODM-PRC-014` 及 `tests/spd/prodm-price-check.spec.ts` 一致
###### 预期结果
确定被拦截;不落库。
---
### 产品物价核对 · 批量是否收费
#### 功能验证点
##### 【P0】【TC-UI-PRODM-PRC-015】【TP_PRODM_PRC_038】打开「批量是否收费」对应弹窗/抽屉
- 前置条件:已进入产品物价核对页
- 操作步骤:
1. 点击「批量是否收费」或等价入口
2. 断言弹窗/抽屉/详情可见,关键字段可交互
3. 可见取消/关闭/返回
- 自动化断言:规划与 CSV `PRODM-PRC-015` 及 `tests/spd/prodm-price-check.spec.ts` 一致
###### 预期结果
「批量是否收费」层打开;关键控件可见。
---
##### 【P1】【TC-UI-PRODM-PRC-016】【TP_PRODM_PRC_039】「批量是否收费」取消不落库
- 前置条件:已进入产品物价核对页
- 操作步骤:
1. 打开「批量是否收费」,任意填写非空后点击「取 消」或关闭
2. 断言弹层关闭,列表行数与打开前一致(抽样)
- 自动化断言:规划与 CSV `PRODM-PRC-016` 及 `tests/spd/prodm-price-check.spec.ts` 一致
###### 预期结果
取消后列表无新增/无修改。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-PRC-017】【TP_PRODM_PRC_040】「批量是否收费」必填为空拦截
- 前置条件:该层存在必填提交,否则 skip
- 操作步骤:
1. 打开「批量是否收费」,必填项留空后点击「确 定」
2. 断言出现必填提示,弹层仍打开,列表不刷新为成功态
- 自动化断言:规划与 CSV `PRODM-PRC-017` 及 `tests/spd/prodm-price-check.spec.ts` 一致
###### 预期结果
确定被拦截;不落库。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 | **17** 条(P0=10 / P1=7) |
| 来源 | 从 47 条测试点选取可稳定自动化场景;H3 与测试点同名 |
| 未纳入自动化 | 会话过期、无菜单权限、菜单进入单条、未登录探针、接口失败注入、导出文件内容、写操作成功落库、弹窗全字段 |
| 列排序 | 测试点 1 条「各可排序列升序降序」;本 MD **每 sorter 列一条** `{列名}列升序降序切换`(3.6) |
| 每页条数 | 有 size-changer 时标题「切换20条每页…」,绑定 TP「切换每页条数」(3.7) |
| 单一职责 | 每条只断言一个核心业务结果 |
# 基础管理-产品管理-产品维护 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-产品管理-产品维护-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-产品管理-产品维护-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/goods/paltform/product/calatog`
**定位器 YAML**:`locators/spd/prodm-maintain.locator.yaml`
**元素扫描**:`data/scan/prodm-maintain-elements.json`(360 项)
**关联规范**:`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-PRODM-002.md`
**版本**:2026-11-04
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/prodm-maintain.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:正例账号 `test_1` + `storageState`;具备「基础设置 → 产品管理 → 产品维护」权限。
**页面约定**:整页渲染;定位在 `page` 上。
**隔离**:每用例独立 context(playwright-storage-state-isolation)。
**菜单导航**:菜单「基础设置 → 产品管理 → 产品维护」;`openPath('/spd/basic/goods/paltform/product/calatog')` 并断言 URL,勿误入兄弟页。
**写操作**:写操作仅打开弹层后取消或做必填拦截,不提交成功落库;导出/打印不校验文件内容。
**动态取数**:查询后从首行读取 `${sampleCode}`/`${sampleName}`;mock:`__NOT_EXIST_PRODM__99999`。
---
## 基础设置 · 产品管理
### 产品维护 · 左侧耗材分类树
#### 功能验证点
##### 【P0】【TC-UI-PRODM-MNT-001】【TP_PRODM_MNT_005】树默认有选中或可展开节点
- 前置条件:已进入产品维护页
- 操作步骤:
1. 断言左侧耗材分类树可见且有选中或可展开节点
2. 读取选中节点名称 `${sampleTreeNode}`
3. 断言右侧列表/表单与当前节点范围一致或为空态
- 自动化断言:规划与 CSV `PRODM-MNT-001` 及 `tests/spd/prodm-maintain.spec.ts` 一致
###### 预期结果
树有选中;右侧不展示其它节点数据为成功态。
---
##### 【P0】【TC-UI-PRODM-MNT-002】【TP_PRODM_MNT_007】切换树节点刷新右侧
- 前置条件:已进入产品维护页
- 操作步骤:
1. 记录当前节点与右侧首行(若有)
2. 点选另一树节点(仅 1 个则 skip)
3. 断言右侧数据范围切换,不残留上一节点首行
- 自动化断言:规划与 CSV `PRODM-MNT-002` 及 `tests/spd/prodm-maintain.spec.ts` 一致
###### 预期结果
切换节点后右侧刷新。
---
### 产品维护 · 快捷筛选查询
#### 功能验证点
##### 【P1】【TC-UI-PRODM-MNT-003】【TP_PRODM_MNT_011】快捷区重置恢复默认
- 前置条件:已进入产品维护页
- 操作步骤:
1. 任意填写快捷区可见字段后点击「重 置」
2. 断言条件恢复默认;列表是否刷新按产品规则(未定则记待评审)
- 自动化断言:规划与 CSV `PRODM-MNT-003` 及 `tests/spd/prodm-maintain.spec.ts` 一致
###### 预期结果
重置后条件恢复默认;页面无报错。
---
### 产品维护 · 高级筛选抽屉
#### 功能验证点
##### 【P0】【TC-UI-PRODM-MNT-004】【TP_PRODM_MNT_018】全量查询条件组合查询
- 前置条件:默认查询至少 1 条,否则 skip
- 操作步骤:
1. 默认查询 → 从首行提取全量样本(不写死业务数据,见 rules 3.4)
2. 快捷区填入样本中有值的可见字段
3. 高级筛选抽屉填入样本中所有非空字段(文本直接填、下拉选同值;禁用字段记录默认)
4. 「查询/筛选」后抽样首行;首行同时满足样本中全部已填字段
- 自动化断言:规划与 CSV `PRODM-MNT-004` 及 `tests/spd/prodm-maintain.spec.ts` 一致
###### 预期结果
查询正常无报错;查询条件写值正常;查询结果与查询条件一致。
---
##### 【P0】【TC-UI-PRODM-MNT-005】【TP_PRODM_MNT_016】点击高级筛选打开抽屉
- 前置条件:已进入产品维护页
- 操作步骤:
1. 点击「高级筛选」
2. 断言抽屉标题为「高级筛选」,关键字段可交互
3. 关闭抽屉,快捷区条件不被误清空(以现网为准)
- 自动化断言:规划与 CSV `PRODM-MNT-005` 及 `tests/spd/prodm-maintain.spec.ts` 一致
###### 预期结果
高级筛选抽屉可打开并关闭。
---
### 产品维护 · 列表
#### 功能验证点
##### 【P0】【TC-UI-PRODM-MNT-006】【TP_PRODM_MNT_020】列表核心列完整
- 前置条件:已进入产品维护页
- 操作步骤:
1. 断言表头含核心列(抽样):HIS编码、阳采ID、规格型号、器械注册人、单位、耗材类型、品牌、器械注册证号等
2. 若有数据,抽样首行关键字段非空
- 自动化断言:规划与 CSV `PRODM-MNT-006` 及 `tests/spd/prodm-maintain.spec.ts` 一致
###### 预期结果
核心列完整;列表结构正确。
---
#### 集成验证点
##### 【P0】【TC-UI-PRODM-MNT-007】【TP_PRODM_MNT_025】行内「详情」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「详情」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-MNT-007` 及 `tests/spd/prodm-maintain.spec.ts` 一致
###### 预期结果
行内操作可达;关闭后回到列表。
---
#### 功能验证点
##### 【P2】【TC-UI-PRODM-MNT-008】【TP_PRODM_MNT_022】列设置隐藏后再恢复
- 前置条件:列表表头已加载
- 操作步骤:
1. 默认查询后点击表格工具栏列设置(齿轮)
2. 取消勾选一列非核心字段并关闭面板,断言表头隐藏
3. 再次打开列设置勾选恢复并关闭,断言表头恢复
- 自动化断言:规划与 CSV `PRODM-MNT-008` 及 `tests/spd/prodm-maintain.spec.ts` 一致
###### 预期结果
勾选状态与表头一致。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-MNT-009】【TP_PRODM_MNT_024】横向滚动与列对齐
- 前置条件:列表有数据且列超出视口,否则 skip
- 操作步骤:
1. 宽表场景下横向滚动使远侧列进入视口
2. 断言表头列数与数据列数一致、对齐无重叠
- 自动化断言:规划与 CSV `PRODM-MNT-009` 及 `tests/spd/prodm-maintain.spec.ts` 一致
###### 预期结果
远侧列可进入视口;表头与数据列对齐。
---
##### 【P1】【TC-UI-PRODM-MNT-010】【TP_PRODM_MNT_023】无匹配空态(mock反例)
- 前置条件:已进入产品维护页
- 操作步骤:
1. 名称/编号类关键字填入 `__NOT_EXIST_PRODM__99999` 后查询
2. 断言表头仍在,0 行或空态,分页总数为 0
- 自动化断言:规划与 CSV `PRODM-MNT-010` 及 `tests/spd/prodm-maintain.spec.ts` 一致
###### 预期结果
无匹配不报错;不展示过期成功态数据。
---
### 产品维护 · 分页
#### 功能验证点
##### 【P0】【TC-UI-PRODM-MNT-011】【TP_PRODM_MNT_026】有数据时总条数
- 前置条件:已进入产品维护页
- 操作步骤:
1. 默认查询后读取「共 N 条」
2. 断言 N 与本次查询匹配条数规则一致(有数据或 0)
- 自动化断言:规划与 CSV `PRODM-MNT-011` 及 `tests/spd/prodm-maintain.spec.ts` 一致
###### 预期结果
「共 N 条」与查询结果一致。
---
##### 【P0】【TC-UI-PRODM-MNT-012】【TP_PRODM_MNT_027】切换至第 2 页
- 前置条件:总条数大于一页,否则 skip
- 操作步骤:
1. 记录第 1 页首行关键字段
2. 点击页码「2」或「下一页」
3. 断言页码高亮正确,首行数据与第 1 页不同
- 自动化断言:规划与 CSV `PRODM-MNT-012` 及 `tests/spd/prodm-maintain.spec.ts` 一致
###### 预期结果
翻页成功;数据更换。
---
##### 【P1】【TC-UI-PRODM-MNT-013】【TP_PRODM_MNT_028】切换20条每页页面正常且列表同步
- 前置条件:N>10 且切换前可见行数 > min(N,20),否则 skip(见 3.7)
- 操作步骤:
1. 记录「共 N 条」与当前页可见行数
2. 打开每页条数下拉,选择「20 条/页」
3. 断言分页器显示 20 条/页;N 不变;当前页行数=min(N,20) 且与切换前不同
- 自动化断言:规划与 CSV `PRODM-MNT-013` 及 `tests/spd/prodm-maintain.spec.ts` 一致
###### 预期结果
每页条数切换生效;总数不变;列表同步。
---
### 产品维护 · 导出
#### 功能验证点
##### 【P0】【TC-UI-PRODM-MNT-014】【TP_PRODM_MNT_033】当前查询条件下导出
- 前置条件:已进入产品维护页
- 操作步骤:
1. 先执行一次查询
2. 点击「导 出」或「导出」或「导出Excel」
3. 断言无未捕获异常(不校验文件内容)
- 自动化断言:规划与 CSV `PRODM-MNT-014` 及 `tests/spd/prodm-maintain.spec.ts` 一致
###### 预期结果
导出流程可启动。
---
### 产品维护 · 分类维护
#### 功能验证点
##### 【P0】【TC-UI-PRODM-MNT-015】【TP_PRODM_MNT_035】打开「分类维护」对应弹窗/抽屉
- 前置条件:已进入产品维护页
- 操作步骤:
1. 点击「分类维护」或等价入口
2. 断言弹窗/抽屉/详情可见,关键字段可交互
3. 可见取消/关闭/返回
- 自动化断言:规划与 CSV `PRODM-MNT-015` 及 `tests/spd/prodm-maintain.spec.ts` 一致
###### 预期结果
「分类维护」层打开;关键控件可见。
---
##### 【P1】【TC-UI-PRODM-MNT-016】【TP_PRODM_MNT_036】「分类维护」取消不落库
- 前置条件:已进入产品维护页
- 操作步骤:
1. 打开「分类维护」,任意填写非空后点击「取 消」或关闭
2. 断言弹层关闭,列表行数与打开前一致(抽样)
- 自动化断言:规划与 CSV `PRODM-MNT-016` 及 `tests/spd/prodm-maintain.spec.ts` 一致
###### 预期结果
取消后列表无新增/无修改。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-MNT-017】【TP_PRODM_MNT_037】「分类维护」必填为空拦截
- 前置条件:该层存在必填提交,否则 skip
- 操作步骤:
1. 打开「分类维护」,必填项留空后点击「确 定」
2. 断言出现必填提示,弹层仍打开,列表不刷新为成功态
- 自动化断言:规划与 CSV `PRODM-MNT-017` 及 `tests/spd/prodm-maintain.spec.ts` 一致
###### 预期结果
确定被拦截;不落库。
---
### 产品维护 · 添加
#### 功能验证点
##### 【P0】【TC-UI-PRODM-MNT-018】【TP_PRODM_MNT_041】打开「添加」对应弹窗/抽屉
- 前置条件:已进入产品维护页
- 操作步骤:
1. 点击「添加」或等价入口
2. 断言弹窗/抽屉/详情可见,关键字段可交互
3. 可见取消/关闭/返回
- 自动化断言:规划与 CSV `PRODM-MNT-018` 及 `tests/spd/prodm-maintain.spec.ts` 一致
###### 预期结果
「添加」层打开;关键控件可见。
---
##### 【P1】【TC-UI-PRODM-MNT-019】【TP_PRODM_MNT_042】「添加」取消不落库
- 前置条件:已进入产品维护页
- 操作步骤:
1. 打开「添加」,任意填写非空后点击「取 消」或关闭
2. 断言弹层关闭,列表行数与打开前一致(抽样)
- 自动化断言:规划与 CSV `PRODM-MNT-019` 及 `tests/spd/prodm-maintain.spec.ts` 一致
###### 预期结果
取消后列表无新增/无修改。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-MNT-020】【TP_PRODM_MNT_043】「添加」必填为空拦截
- 前置条件:该层存在必填提交,否则 skip
- 操作步骤:
1. 打开「添加」,必填项留空后点击「确 定」
2. 断言出现必填提示,弹层仍打开,列表不刷新为成功态
- 自动化断言:规划与 CSV `PRODM-MNT-020` 及 `tests/spd/prodm-maintain.spec.ts` 一致
###### 预期结果
确定被拦截;不落库。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 | **20** 条(P0=11 / P1=8 / P2=1) |
| 来源 | 从 50 条测试点选取可稳定自动化场景;H3 与测试点同名 |
| 未纳入自动化 | 会话过期、无菜单权限、菜单进入单条、未登录探针、接口失败注入、导出文件内容、写操作成功落库、弹窗全字段 |
| 列排序 | 测试点 1 条「各可排序列升序降序」;本 MD **每 sorter 列一条** `{列名}列升序降序切换`(3.6) |
| 每页条数 | 有 size-changer 时标题「切换20条每页…」,绑定 TP「切换每页条数」(3.7) |
| 单一职责 | 每条只断言一个核心业务结果 |
# 基础管理-产品管理-产品资质一览 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-产品管理-产品资质一览-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-产品管理-产品资质一览-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/goods/product/overview`
**定位器 YAML**:`locators/spd/prodm-qual-overview.locator.yaml`
**元素扫描**:`data/scan/prodm-qual-overview-elements.json`(169 项)
**关联规范**:`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-PRODM-025.md`
**版本**:2026-11-04
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/prodm-qual-overview.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:正例账号 `test_1` + `storageState`;具备「基础设置 → 产品管理 → 产品资质一览」权限。
**页面约定**:整页渲染;定位在 `page` 上。
**隔离**:每用例独立 context(playwright-storage-state-isolation)。
**菜单导航**:菜单「基础设置 → 产品管理 → 产品资质一览」;`openPath('/spd/basic/goods/product/overview')` 并断言 URL,勿误入兄弟页。
**写操作**:写操作仅打开弹层后取消或做必填拦截,不提交成功落库;导出/打印不校验文件内容。
**动态取数**:查询后从首行读取 `${sampleCode}`/`${sampleName}`;mock:`__NOT_EXIST_PRODM__99999`。
---
## 基础设置 · 产品管理
### 产品资质一览 · 快捷筛选查询
#### 功能验证点
##### 【P1】【TC-UI-PRODM-QOV-001】【TP_PRODM_QOV_005】快捷区重置恢复默认
- 前置条件:已进入产品资质一览页
- 操作步骤:
1. 任意填写快捷区可见字段后点击「重 置」
2. 断言条件恢复默认;列表是否刷新按产品规则(未定则记待评审)
- 自动化断言:规划与 CSV `PRODM-QOV-001` 及 `tests/spd/prodm-qual-overview.spec.ts` 一致
###### 预期结果
重置后条件恢复默认;页面无报错。
---
##### 【P0】【TC-UI-PRODM-QOV-002】【TP_PRODM_QOV_006】全量可见条件组合查询
- 前置条件:默认查询至少 1 条,否则 skip
- 操作步骤:
1. 默认查询 → 从首行提取全量样本(只填当前结果里有值的条件)
2. 快捷区可见非空条件全部填入后查询
3. 抽样首行同时满足全部已填条件;无未捕获异常
- 自动化断言:规划与 CSV `PRODM-QOV-002` 及 `tests/spd/prodm-qual-overview.spec.ts` 一致
###### 预期结果
查询正常无报错;查询结果与查询条件一致。
---
### 产品资质一览 · 列表
#### 功能验证点
##### 【P0】【TC-UI-PRODM-QOV-003】【TP_PRODM_QOV_016】列表核心列完整
- 前置条件:已进入产品资质一览页
- 操作步骤:
1. 断言表头含核心列(抽样):产品、资质齐全状态、证照相关列(以现网为准)
2. 若有数据,抽样首行关键字段非空
- 自动化断言:规划与 CSV `PRODM-QOV-003` 及 `tests/spd/prodm-qual-overview.spec.ts` 一致
###### 预期结果
核心列完整;列表结构正确。
---
### 产品资质一览 · 行内操作
#### 功能验证点
##### 【P0】【TC-UI-PRODM-QOV-004】【TP_PRODM_QOV_011】行内「详情」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「详情」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-QOV-004` 及 `tests/spd/prodm-qual-overview.spec.ts` 一致
###### 预期结果
行内「详情」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-QOV-005】【TP_PRODM_QOV_012】行内「查看」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「查看」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-QOV-005` 及 `tests/spd/prodm-qual-overview.spec.ts` 一致
###### 预期结果
行内「查看」可达;关闭后回到列表。
---
### 产品资质一览 · 列表
#### 边界验证点
##### 【P1】【TC-UI-PRODM-QOV-006】【TP_PRODM_QOV_017】无匹配空态(mock反例)
- 前置条件:已进入产品资质一览页
- 操作步骤:
1. 名称/编号类关键字填入 `__NOT_EXIST_PRODM__99999` 后查询
2. 断言表头仍在,0 行或空态,分页总数为 0
- 自动化断言:规划与 CSV `PRODM-QOV-006` 及 `tests/spd/prodm-qual-overview.spec.ts` 一致
###### 预期结果
无匹配不报错;不展示过期成功态数据。
---
### 产品资质一览 · 分页
#### 功能验证点
##### 【P0】【TC-UI-PRODM-QOV-007】【TP_PRODM_QOV_018】有数据时总条数
- 前置条件:已进入产品资质一览页
- 操作步骤:
1. 默认查询后读取「共 N 条」
2. 断言 N 与本次查询匹配条数规则一致(有数据或 0)
- 自动化断言:规划与 CSV `PRODM-QOV-007` 及 `tests/spd/prodm-qual-overview.spec.ts` 一致
###### 预期结果
「共 N 条」与查询结果一致。
---
##### 【P0】【TC-UI-PRODM-QOV-008】【TP_PRODM_QOV_019】切换至第 2 页
- 前置条件:总条数大于一页,否则 skip
- 操作步骤:
1. 记录第 1 页首行关键字段
2. 点击页码「2」或「下一页」
3. 断言页码高亮正确,首行数据与第 1 页不同
- 自动化断言:规划与 CSV `PRODM-QOV-008` 及 `tests/spd/prodm-qual-overview.spec.ts` 一致
###### 预期结果
翻页成功;数据更换。
---
##### 【P1】【TC-UI-PRODM-QOV-009】【TP_PRODM_QOV_020】切换20条每页页面正常且列表同步
- 前置条件:N>10 且切换前可见行数 > min(N,20),否则 skip(见 3.7)
- 操作步骤:
1. 记录「共 N 条」与当前页可见行数
2. 打开每页条数下拉,选择「20 条/页」
3. 断言分页器显示 20 条/页;N 不变;当前页行数=min(N,20) 且与切换前不同
- 自动化断言:规划与 CSV `PRODM-QOV-009` 及 `tests/spd/prodm-qual-overview.spec.ts` 一致
###### 预期结果
每页条数切换生效;总数不变;列表同步。
---
### 产品资质一览 · 导出
#### 功能验证点
##### 【P0】【TC-UI-PRODM-QOV-010】【TP_PRODM_QOV_025】当前查询条件下导出
- 前置条件:已进入产品资质一览页
- 操作步骤:
1. 先执行一次查询
2. 点击「导 出」或「导出」或「导出Excel」
3. 断言无未捕获异常(不校验文件内容)
- 自动化断言:规划与 CSV `PRODM-QOV-010` 及 `tests/spd/prodm-qual-overview.spec.ts` 一致
###### 预期结果
导出流程可启动。
---
### 产品资质一览 · 资质判断结果
#### 功能验证点
##### 【P0】【TC-UI-PRODM-QOV-011】【TP_PRODM_QOV_027】打开「资质判断结果」对应弹窗/抽屉
- 前置条件:已进入产品资质一览页
- 操作步骤:
1. 点击「资质判断结果」或等价入口
2. 断言弹窗/抽屉/详情可见,关键字段可交互
3. 可见取消/关闭/返回
- 自动化断言:规划与 CSV `PRODM-QOV-011` 及 `tests/spd/prodm-qual-overview.spec.ts` 一致
###### 预期结果
「资质判断结果」层打开;关键控件可见。
---
##### 【P1】【TC-UI-PRODM-QOV-012】【TP_PRODM_QOV_028】「资质判断结果」取消不落库
- 前置条件:已进入产品资质一览页
- 操作步骤:
1. 打开「资质判断结果」,任意填写非空后点击「取 消」或关闭
2. 断言弹层关闭,列表行数与打开前一致(抽样)
- 自动化断言:规划与 CSV `PRODM-QOV-012` 及 `tests/spd/prodm-qual-overview.spec.ts` 一致
###### 预期结果
取消后列表无新增/无修改。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-QOV-013】【TP_PRODM_QOV_029】「资质判断结果」必填为空拦截
- 前置条件:该层存在必填提交,否则 skip
- 操作步骤:
1. 打开「资质判断结果」,必填项留空后点击「确 定」
2. 断言出现必填提示,弹层仍打开,列表不刷新为成功态
- 自动化断言:规划与 CSV `PRODM-QOV-013` 及 `tests/spd/prodm-qual-overview.spec.ts` 一致
###### 预期结果
确定被拦截;不落库。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 | **13** 条(P0=8 / P1=5) |
| 来源 | 从 36 条测试点选取可稳定自动化场景;H3 与测试点同名 |
| 未纳入自动化 | 会话过期、无菜单权限、菜单进入单条、未登录探针、接口失败注入、导出文件内容、写操作成功落库、弹窗全字段 |
| 列排序 | 测试点 1 条「各可排序列升序降序」;本 MD **每 sorter 列一条** `{列名}列升序降序切换`(3.6) |
| 每页条数 | 有 size-changer 时标题「切换20条每页…」,绑定 TP「切换每页条数」(3.7) |
| 单一职责 | 每条只断言一个核心业务结果 |
# 基础管理-产品管理-产品资质齐全规则 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-产品管理-产品资质齐全规则-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-产品管理-产品资质齐全规则-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/goods/product/rules`
**定位器 YAML**:`locators/spd/prodm-qual-rule.locator.yaml`
**元素扫描**:`data/scan/prodm-qual-rule-elements.json`(70 项)
**关联规范**:`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-PRODM-024.md`
**版本**:2026-11-04
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/prodm-qual-rule.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:正例账号 `test_1` + `storageState`;具备「基础设置 → 产品管理 → 产品资质齐全规则」权限。
**页面约定**:整页渲染;定位在 `page` 上。
**隔离**:每用例独立 context(playwright-storage-state-isolation)。
**菜单导航**:菜单「基础设置 → 产品管理 → 产品资质齐全规则」;`openPath('/spd/basic/goods/product/rules')` 并断言 URL,勿误入兄弟页。
**写操作**:写操作仅打开弹层后取消或做必填拦截,不提交成功落库;导出/打印不校验文件内容。
**动态取数**:查询后从首行读取 `${sampleCode}`/`${sampleName}`;mock:`__NOT_EXIST_PRODM__99999`。
---
## 基础设置 · 产品管理
### 产品资质齐全规则 · 快捷筛选查询
#### 功能验证点
##### 【P1】【TC-UI-PRODM-QRL-001】【TP_PRODM_QRL_005】快捷区重置恢复默认
- 前置条件:已进入产品资质齐全规则页
- 操作步骤:
1. 任意填写快捷区可见字段后点击「重 置」
2. 断言条件恢复默认;列表是否刷新按产品规则(未定则记待评审)
- 自动化断言:规划与 CSV `PRODM-QRL-001` 及 `tests/spd/prodm-qual-rule.spec.ts` 一致
###### 预期结果
重置后条件恢复默认;页面无报错。
---
##### 【P0】【TC-UI-PRODM-QRL-002】【TP_PRODM_QRL_006】全量可见条件组合查询
- 前置条件:默认查询至少 1 条,否则 skip
- 操作步骤:
1. 默认查询 → 从首行提取全量样本(只填当前结果里有值的条件)
2. 快捷区可见非空条件全部填入后查询
3. 抽样首行同时满足全部已填条件;无未捕获异常
- 自动化断言:规划与 CSV `PRODM-QRL-002` 及 `tests/spd/prodm-qual-rule.spec.ts` 一致
###### 预期结果
查询正常无报错;查询结果与查询条件一致。
---
### 产品资质齐全规则 · 列表
#### 功能验证点
##### 【P0】【TC-UI-PRODM-QRL-003】【TP_PRODM_QRL_017】列表核心列完整
- 前置条件:已进入产品资质齐全规则页
- 操作步骤:
1. 断言表头含核心列(抽样):规则名称、适用范围、齐全判定条件等(以现网为准)
2. 若有数据,抽样首行关键字段非空
- 自动化断言:规划与 CSV `PRODM-QRL-003` 及 `tests/spd/prodm-qual-rule.spec.ts` 一致
###### 预期结果
核心列完整;列表结构正确。
---
### 产品资质齐全规则 · 行内操作
#### 功能验证点
##### 【P0】【TC-UI-PRODM-QRL-004】【TP_PRODM_QRL_011】行内「详情」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「详情」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-QRL-004` 及 `tests/spd/prodm-qual-rule.spec.ts` 一致
###### 预期结果
行内「详情」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-QRL-005】【TP_PRODM_QRL_012】行内「编辑」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「编辑」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-QRL-005` 及 `tests/spd/prodm-qual-rule.spec.ts` 一致
###### 预期结果
行内「编辑」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-QRL-006】【TP_PRODM_QRL_013】行内「日志」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「日志」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-QRL-006` 及 `tests/spd/prodm-qual-rule.spec.ts` 一致
###### 预期结果
行内「日志」可达;关闭后回到列表。
---
### 产品资质齐全规则 · 列表
#### 边界验证点
##### 【P1】【TC-UI-PRODM-QRL-007】【TP_PRODM_QRL_018】无匹配空态(mock反例)
- 前置条件:已进入产品资质齐全规则页
- 操作步骤:
1. 名称/编号类关键字填入 `__NOT_EXIST_PRODM__99999` 后查询
2. 断言表头仍在,0 行或空态,分页总数为 0
- 自动化断言:规划与 CSV `PRODM-QRL-007` 及 `tests/spd/prodm-qual-rule.spec.ts` 一致
###### 预期结果
无匹配不报错;不展示过期成功态数据。
---
### 产品资质齐全规则 · 分页
#### 功能验证点
##### 【P0】【TC-UI-PRODM-QRL-008】【TP_PRODM_QRL_019】有数据时总条数
- 前置条件:已进入产品资质齐全规则页
- 操作步骤:
1. 默认查询后读取「共 N 条」
2. 断言 N 与本次查询匹配条数规则一致(有数据或 0)
- 自动化断言:规划与 CSV `PRODM-QRL-008` 及 `tests/spd/prodm-qual-rule.spec.ts` 一致
###### 预期结果
「共 N 条」与查询结果一致。
---
##### 【P0】【TC-UI-PRODM-QRL-009】【TP_PRODM_QRL_020】切换至第 2 页
- 前置条件:总条数大于一页,否则 skip
- 操作步骤:
1. 记录第 1 页首行关键字段
2. 点击页码「2」或「下一页」
3. 断言页码高亮正确,首行数据与第 1 页不同
- 自动化断言:规划与 CSV `PRODM-QRL-009` 及 `tests/spd/prodm-qual-rule.spec.ts` 一致
###### 预期结果
翻页成功;数据更换。
---
##### 【P1】【TC-UI-PRODM-QRL-010】【TP_PRODM_QRL_021】切换20条每页页面正常且列表同步
- 前置条件:N>10 且切换前可见行数 > min(N,20),否则 skip(见 3.7)
- 操作步骤:
1. 记录「共 N 条」与当前页可见行数
2. 打开每页条数下拉,选择「20 条/页」
3. 断言分页器显示 20 条/页;N 不变;当前页行数=min(N,20) 且与切换前不同
- 自动化断言:规划与 CSV `PRODM-QRL-010` 及 `tests/spd/prodm-qual-rule.spec.ts` 一致
###### 预期结果
每页条数切换生效;总数不变;列表同步。
---
### 产品资质齐全规则 · 新增
#### 功能验证点
##### 【P0】【TC-UI-PRODM-QRL-011】【TP_PRODM_QRL_026】打开「新增」对应弹窗/抽屉
- 前置条件:已进入产品资质齐全规则页
- 操作步骤:
1. 点击「新增」或等价入口
2. 断言弹窗/抽屉/详情可见,关键字段可交互
3. 可见取消/关闭/返回
- 自动化断言:规划与 CSV `PRODM-QRL-011` 及 `tests/spd/prodm-qual-rule.spec.ts` 一致
###### 预期结果
「新增」层打开;关键控件可见。
---
##### 【P1】【TC-UI-PRODM-QRL-012】【TP_PRODM_QRL_027】「新增」取消不落库
- 前置条件:已进入产品资质齐全规则页
- 操作步骤:
1. 打开「新增」,任意填写非空后点击「取 消」或关闭
2. 断言弹层关闭,列表行数与打开前一致(抽样)
- 自动化断言:规划与 CSV `PRODM-QRL-012` 及 `tests/spd/prodm-qual-rule.spec.ts` 一致
###### 预期结果
取消后列表无新增/无修改。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-QRL-013】【TP_PRODM_QRL_028】「新增」必填为空拦截
- 前置条件:该层存在必填提交,否则 skip
- 操作步骤:
1. 打开「新增」,必填项留空后点击「确 定」
2. 断言出现必填提示,弹层仍打开,列表不刷新为成功态
- 自动化断言:规划与 CSV `PRODM-QRL-013` 及 `tests/spd/prodm-qual-rule.spec.ts` 一致
###### 预期结果
确定被拦截;不落库。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 | **13** 条(P0=8 / P1=5) |
| 来源 | 从 35 条测试点选取可稳定自动化场景;H3 与测试点同名 |
| 未纳入自动化 | 会话过期、无菜单权限、菜单进入单条、未登录探针、接口失败注入、导出文件内容、写操作成功落库、弹窗全字段 |
| 列排序 | 测试点 1 条「各可排序列升序降序」;本 MD **每 sorter 列一条** `{列名}列升序降序切换`(3.6) |
| 每页条数 | 有 size-changer 时标题「切换20条每页…」,绑定 TP「切换每页条数」(3.7) |
| 单一职责 | 每条只断言一个核心业务结果 |
# 基础管理-产品管理-变更单明细查询 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-产品管理-变更单明细查询-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-产品管理-变更单明细查询-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/goods/platform/change`
**定位器 YAML**:`locators/spd/prodm-change-detail.locator.yaml`
**元素扫描**:`data/scan/prodm-change-detail-elements.json`(106 项)
**关联规范**:`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-PRODM-015.md`
**版本**:2026-11-04
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/prodm-change-detail.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:正例账号 `test_1` + `storageState`;具备「基础设置 → 产品管理 → 变更单明细查询」权限。
**页面约定**:整页渲染;定位在 `page` 上。
**隔离**:每用例独立 context(playwright-storage-state-isolation)。
**菜单导航**:菜单「基础设置 → 产品管理 → 变更单明细查询」;`openPath('/spd/basic/goods/platform/change')` 并断言 URL,勿误入兄弟页。
**写操作**:写操作仅打开弹层后取消或做必填拦截,不提交成功落库;导出/打印不校验文件内容。
**动态取数**:查询后从首行读取 `${sampleCode}`/`${sampleName}`;mock:`__NOT_EXIST_PRODM__99999`。
---
## 基础设置 · 产品管理
### 变更单明细查询 · 快捷筛选查询
#### 功能验证点
##### 【P1】【TC-UI-PRODM-CHD-001】【TP_PRODM_CHD_005】快捷区重置恢复默认
- 前置条件:已进入变更单明细查询页
- 操作步骤:
1. 任意填写快捷区可见字段后点击「重 置」
2. 断言条件恢复默认;列表是否刷新按产品规则(未定则记待评审)
- 自动化断言:规划与 CSV `PRODM-CHD-001` 及 `tests/spd/prodm-change-detail.spec.ts` 一致
###### 预期结果
重置后条件恢复默认;页面无报错。
---
##### 【P0】【TC-UI-PRODM-CHD-002】【TP_PRODM_CHD_006】全量可见条件组合查询
- 前置条件:默认查询至少 1 条,否则 skip
- 操作步骤:
1. 默认查询 → 从首行提取全量样本(只填当前结果里有值的条件)
2. 快捷区可见非空条件全部填入后查询
3. 抽样首行同时满足全部已填条件;无未捕获异常
- 自动化断言:规划与 CSV `PRODM-CHD-002` 及 `tests/spd/prodm-change-detail.spec.ts` 一致
###### 预期结果
查询正常无报错;查询结果与查询条件一致。
---
### 变更单明细查询 · 查询条件展开收起
#### 功能验证点
##### 【P1】【TC-UI-PRODM-CHD-003】【TP_PRODM_CHD_011】展开后更多条件可见
- 前置条件:已进入变更单明细查询页
- 操作步骤:
1. 点击「展开」
2. 断言额外筛选字段进入可视区且可填写
3. 按钮文案变为「收起」
- 自动化断言:规划与 CSV `PRODM-CHD-003` 及 `tests/spd/prodm-change-detail.spec.ts` 一致
###### 预期结果
展开后更多条件可见并可交互。
---
### 变更单明细查询 · 列表
#### 功能验证点
##### 【P0】【TC-UI-PRODM-CHD-004】【TP_PRODM_CHD_021】列表核心列完整
- 前置条件:已进入变更单明细查询页
- 操作步骤:
1. 断言表头含核心列(抽样):变更单号、产品、变更字段、时间等(以现网为准)
2. 若有数据,抽样首行关键字段非空
- 自动化断言:规划与 CSV `PRODM-CHD-004` 及 `tests/spd/prodm-change-detail.spec.ts` 一致
###### 预期结果
核心列完整;列表结构正确。
---
##### 【P1】【TC-UI-PRODM-CHD-005】【TP_PRODM_CHD_022】物料名称列升序降序切换
- 前置条件:至少 2 条数据,否则 skip
- 操作步骤:
1. 默认查询后列表有数据
2. 横向滚动使「物料名称」列表头可见(宽表时)
3. 第一次点击该列排序控件并校验升序指示器
4. 第二次点击并校验降序指示器
- 自动化断言:规划与 CSV `PRODM-CHD-005` 及 `tests/spd/prodm-change-detail.spec.ts` 一致
###### 预期结果
排序指示器与方向一致;列表仍有数据。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-CHD-006】【TP_PRODM_CHD_023】无匹配空态(mock反例)
- 前置条件:已进入变更单明细查询页
- 操作步骤:
1. 名称/编号类关键字填入 `__NOT_EXIST_PRODM__99999` 后查询
2. 断言表头仍在,0 行或空态,分页总数为 0
- 自动化断言:规划与 CSV `PRODM-CHD-006` 及 `tests/spd/prodm-change-detail.spec.ts` 一致
###### 预期结果
无匹配不报错;不展示过期成功态数据。
---
### 变更单明细查询 · 分页
#### 功能验证点
##### 【P0】【TC-UI-PRODM-CHD-007】【TP_PRODM_CHD_024】有数据时总条数
- 前置条件:已进入变更单明细查询页
- 操作步骤:
1. 默认查询后读取「共 N 条」
2. 断言 N 与本次查询匹配条数规则一致(有数据或 0)
- 自动化断言:规划与 CSV `PRODM-CHD-007` 及 `tests/spd/prodm-change-detail.spec.ts` 一致
###### 预期结果
「共 N 条」与查询结果一致。
---
##### 【P0】【TC-UI-PRODM-CHD-008】【TP_PRODM_CHD_025】切换至第 2 页
- 前置条件:总条数大于一页,否则 skip
- 操作步骤:
1. 记录第 1 页首行关键字段
2. 点击页码「2」或「下一页」
3. 断言页码高亮正确,首行数据与第 1 页不同
- 自动化断言:规划与 CSV `PRODM-CHD-008` 及 `tests/spd/prodm-change-detail.spec.ts` 一致
###### 预期结果
翻页成功;数据更换。
---
##### 【P1】【TC-UI-PRODM-CHD-009】【TP_PRODM_CHD_026】切换20条每页页面正常且列表同步
- 前置条件:N>10 且切换前可见行数 > min(N,20),否则 skip(见 3.7)
- 操作步骤:
1. 记录「共 N 条」与当前页可见行数
2. 打开每页条数下拉,选择「20 条/页」
3. 断言分页器显示 20 条/页;N 不变;当前页行数=min(N,20) 且与切换前不同
- 自动化断言:规划与 CSV `PRODM-CHD-009` 及 `tests/spd/prodm-change-detail.spec.ts` 一致
###### 预期结果
每页条数切换生效;总数不变;列表同步。
---
### 变更单明细查询 · 导出
#### 功能验证点
##### 【P0】【TC-UI-PRODM-CHD-010】【TP_PRODM_CHD_031】当前查询条件下导出
- 前置条件:已进入变更单明细查询页
- 操作步骤:
1. 先执行一次查询
2. 点击「导 出」或「导出」或「导出Excel」
3. 断言无未捕获异常(不校验文件内容)
- 自动化断言:规划与 CSV `PRODM-CHD-010` 及 `tests/spd/prodm-change-detail.spec.ts` 一致
###### 预期结果
导出流程可启动。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 | **10** 条(P0=5 / P1=5) |
| 来源 | 从 36 条测试点选取可稳定自动化场景;H3 与测试点同名 |
| 未纳入自动化 | 会话过期、无菜单权限、菜单进入单条、未登录探针、接口失败注入、导出文件内容、写操作成功落库、弹窗全字段 |
| 列排序 | 测试点 1 条「各可排序列升序降序」;本 MD **每 sorter 列一条** `{列名}列升序降序切换`(3.6) |
| 每页条数 | 有 size-changer 时标题「切换20条每页…」,绑定 TP「切换每页条数」(3.7) |
| 单一职责 | 每条只断言一个核心业务结果 |
# 基础管理-产品管理-外围系统产品变更管理 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-产品管理-外围系统产品变更管理-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-产品管理-外围系统产品变更管理-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/goods/interface/peripheralChange`
**定位器 YAML**:`locators/spd/prodm-peripheral-chg.locator.yaml`
**元素扫描**:`data/scan/prodm-peripheral-chg-elements.json`(76 项)
**关联规范**:`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-PRODM-017.md`
**版本**:2026-11-04
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/prodm-peripheral-chg.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:正例账号 `test_1` + `storageState`;具备「基础设置 → 产品管理 → 外围系统产品变更管理」权限。
**页面约定**:整页渲染;定位在 `page` 上。
**隔离**:每用例独立 context(playwright-storage-state-isolation)。
**菜单导航**:菜单「基础设置 → 产品管理 → 外围系统产品变更管理」;`openPath('/spd/basic/goods/interface/peripheralChange')` 并断言 URL,勿误入兄弟页。
**写操作**:写操作仅打开弹层后取消或做必填拦截,不提交成功落库;导出/打印不校验文件内容。
**动态取数**:查询后从首行读取 `${sampleCode}`/`${sampleName}`;mock:`__NOT_EXIST_PRODM__99999`。
---
## 基础设置 · 产品管理
### 外围系统产品变更管理 · 快捷筛选查询
#### 功能验证点
##### 【P1】【TC-UI-PRODM-PPC-001】【TP_PRODM_PPC_005】快捷区重置恢复默认
- 前置条件:已进入外围系统产品变更管理页
- 操作步骤:
1. 任意填写快捷区可见字段后点击「重 置」
2. 断言条件恢复默认;列表是否刷新按产品规则(未定则记待评审)
- 自动化断言:规划与 CSV `PRODM-PPC-001` 及 `tests/spd/prodm-peripheral-chg.spec.ts` 一致
###### 预期结果
重置后条件恢复默认;页面无报错。
---
##### 【P0】【TC-UI-PRODM-PPC-002】【TP_PRODM_PPC_006】全量可见条件组合查询
- 前置条件:默认查询至少 1 条,否则 skip
- 操作步骤:
1. 默认查询 → 从首行提取全量样本(只填当前结果里有值的条件)
2. 快捷区可见非空条件全部填入后查询
3. 抽样首行同时满足全部已填条件;无未捕获异常
- 自动化断言:规划与 CSV `PRODM-PPC-002` 及 `tests/spd/prodm-peripheral-chg.spec.ts` 一致
###### 预期结果
查询正常无报错;查询结果与查询条件一致。
---
### 外围系统产品变更管理 · 查询条件展开收起
#### 功能验证点
##### 【P1】【TC-UI-PRODM-PPC-003】【TP_PRODM_PPC_011】展开后更多条件可见
- 前置条件:已进入外围系统产品变更管理页
- 操作步骤:
1. 点击「展开」
2. 断言额外筛选字段进入可视区且可填写
3. 按钮文案变为「收起」
- 自动化断言:规划与 CSV `PRODM-PPC-003` 及 `tests/spd/prodm-peripheral-chg.spec.ts` 一致
###### 预期结果
展开后更多条件可见并可交互。
---
### 外围系统产品变更管理 · 列表
#### 功能验证点
##### 【P0】【TC-UI-PRODM-PPC-004】【TP_PRODM_PPC_021】列表核心列完整
- 前置条件:已进入外围系统产品变更管理页
- 操作步骤:
1. 断言表头含核心列(抽样):变更类型、产品、外围字段等(以现网为准)
2. 若有数据,抽样首行关键字段非空
- 自动化断言:规划与 CSV `PRODM-PPC-004` 及 `tests/spd/prodm-peripheral-chg.spec.ts` 一致
###### 预期结果
核心列完整;列表结构正确。
---
### 外围系统产品变更管理 · 行内操作
#### 功能验证点
##### 【P0】【TC-UI-PRODM-PPC-005】【TP_PRODM_PPC_016】行内「详情」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「详情」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-PPC-005` 及 `tests/spd/prodm-peripheral-chg.spec.ts` 一致
###### 预期结果
行内「详情」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-PPC-006】【TP_PRODM_PPC_017】行内「编辑」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「编辑」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-PPC-006` 及 `tests/spd/prodm-peripheral-chg.spec.ts` 一致
###### 预期结果
行内「编辑」可达;关闭后回到列表。
---
### 外围系统产品变更管理 · 列表
#### 边界验证点
##### 【P1】【TC-UI-PRODM-PPC-007】【TP_PRODM_PPC_022】无匹配空态(mock反例)
- 前置条件:已进入外围系统产品变更管理页
- 操作步骤:
1. 名称/编号类关键字填入 `__NOT_EXIST_PRODM__99999` 后查询
2. 断言表头仍在,0 行或空态,分页总数为 0
- 自动化断言:规划与 CSV `PRODM-PPC-007` 及 `tests/spd/prodm-peripheral-chg.spec.ts` 一致
###### 预期结果
无匹配不报错;不展示过期成功态数据。
---
### 外围系统产品变更管理 · 分页
#### 功能验证点
##### 【P0】【TC-UI-PRODM-PPC-008】【TP_PRODM_PPC_023】有数据时总条数
- 前置条件:已进入外围系统产品变更管理页
- 操作步骤:
1. 默认查询后读取「共 N 条」
2. 断言 N 与本次查询匹配条数规则一致(有数据或 0)
- 自动化断言:规划与 CSV `PRODM-PPC-008` 及 `tests/spd/prodm-peripheral-chg.spec.ts` 一致
###### 预期结果
「共 N 条」与查询结果一致。
---
##### 【P0】【TC-UI-PRODM-PPC-009】【TP_PRODM_PPC_024】切换至第 2 页
- 前置条件:总条数大于一页,否则 skip
- 操作步骤:
1. 记录第 1 页首行关键字段
2. 点击页码「2」或「下一页」
3. 断言页码高亮正确,首行数据与第 1 页不同
- 自动化断言:规划与 CSV `PRODM-PPC-009` 及 `tests/spd/prodm-peripheral-chg.spec.ts` 一致
###### 预期结果
翻页成功;数据更换。
---
##### 【P1】【TC-UI-PRODM-PPC-010】【TP_PRODM_PPC_025】切换20条每页页面正常且列表同步
- 前置条件:N>10 且切换前可见行数 > min(N,20),否则 skip(见 3.7)
- 操作步骤:
1. 记录「共 N 条」与当前页可见行数
2. 打开每页条数下拉,选择「20 条/页」
3. 断言分页器显示 20 条/页;N 不变;当前页行数=min(N,20) 且与切换前不同
- 自动化断言:规划与 CSV `PRODM-PPC-010` 及 `tests/spd/prodm-peripheral-chg.spec.ts` 一致
###### 预期结果
每页条数切换生效;总数不变;列表同步。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 | **10** 条(P0=6 / P1=4) |
| 来源 | 从 33 条测试点选取可稳定自动化场景;H3 与测试点同名 |
| 未纳入自动化 | 会话过期、无菜单权限、菜单进入单条、未登录探针、接口失败注入、导出文件内容、写操作成功落库、弹窗全字段 |
| 列排序 | 测试点 1 条「各可排序列升序降序」;本 MD **每 sorter 列一条** `{列名}列升序降序切换`(3.6) |
| 每页条数 | 有 size-changer 时标题「切换20条每页…」,绑定 TP「切换每页条数」(3.7) |
| 单一职责 | 每条只断言一个核心业务结果 |
# 基础管理-产品管理-外围系统产品新增 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-产品管理-外围系统产品新增-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-产品管理-外围系统产品新增-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/goods/interface/peripheralSystem`
**定位器 YAML**:`locators/spd/prodm-peripheral-add.locator.yaml`
**元素扫描**:`data/scan/prodm-peripheral-add-elements.json`(94 项)
**关联规范**:`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-PRODM-016.md`
**版本**:2026-11-04
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/prodm-peripheral-add.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:正例账号 `test_1` + `storageState`;具备「基础设置 → 产品管理 → 外围系统产品新增」权限。
**页面约定**:整页渲染;定位在 `page` 上。
**隔离**:每用例独立 context(playwright-storage-state-isolation)。
**菜单导航**:菜单「基础设置 → 产品管理 → 外围系统产品新增」;`openPath('/spd/basic/goods/interface/peripheralSystem')` 并断言 URL,勿误入兄弟页。
**写操作**:写操作仅打开弹层后取消或做必填拦截,不提交成功落库;导出/打印不校验文件内容。
**动态取数**:查询后从首行读取 `${sampleCode}`/`${sampleName}`;mock:`__NOT_EXIST_PRODM__99999`。
---
## 基础设置 · 产品管理
### 外围系统产品新增 · 快捷筛选查询
#### 功能验证点
##### 【P1】【TC-UI-PRODM-PPA-001】【TP_PRODM_PPA_005】快捷区重置恢复默认
- 前置条件:已进入外围系统产品新增页
- 操作步骤:
1. 任意填写快捷区可见字段后点击「重 置」
2. 断言条件恢复默认;列表是否刷新按产品规则(未定则记待评审)
- 自动化断言:规划与 CSV `PRODM-PPA-001` 及 `tests/spd/prodm-peripheral-add.spec.ts` 一致
###### 预期结果
重置后条件恢复默认;页面无报错。
---
##### 【P0】【TC-UI-PRODM-PPA-002】【TP_PRODM_PPA_006】全量可见条件组合查询
- 前置条件:默认查询至少 1 条,否则 skip
- 操作步骤:
1. 默认查询 → 从首行提取全量样本(只填当前结果里有值的条件)
2. 快捷区可见非空条件全部填入后查询
3. 抽样首行同时满足全部已填条件;无未捕获异常
- 自动化断言:规划与 CSV `PRODM-PPA-002` 及 `tests/spd/prodm-peripheral-add.spec.ts` 一致
###### 预期结果
查询正常无报错;查询结果与查询条件一致。
---
### 外围系统产品新增 · 查询条件展开收起
#### 功能验证点
##### 【P1】【TC-UI-PRODM-PPA-003】【TP_PRODM_PPA_011】展开后更多条件可见
- 前置条件:已进入外围系统产品新增页
- 操作步骤:
1. 点击「展开」
2. 断言额外筛选字段进入可视区且可填写
3. 按钮文案变为「收起」
- 自动化断言:规划与 CSV `PRODM-PPA-003` 及 `tests/spd/prodm-peripheral-add.spec.ts` 一致
###### 预期结果
展开后更多条件可见并可交互。
---
### 外围系统产品新增 · 列表
#### 功能验证点
##### 【P0】【TC-UI-PRODM-PPA-004】【TP_PRODM_PPA_016】列表核心列完整
- 前置条件:已进入外围系统产品新增页
- 操作步骤:
1. 断言表头含核心列(抽样):外围系统产品、推送状态等(以现网为准)
2. 若有数据,抽样首行关键字段非空
- 自动化断言:规划与 CSV `PRODM-PPA-004` 及 `tests/spd/prodm-peripheral-add.spec.ts` 一致
###### 预期结果
核心列完整;列表结构正确。
---
#### 集成验证点
##### 【P0】【TC-UI-PRODM-PPA-005】【TP_PRODM_PPA_018】行内「详情」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「详情」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-PPA-005` 及 `tests/spd/prodm-peripheral-add.spec.ts` 一致
###### 预期结果
行内操作可达;关闭后回到列表。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-PPA-006】【TP_PRODM_PPA_017】无匹配空态(mock反例)
- 前置条件:已进入外围系统产品新增页
- 操作步骤:
1. 名称/编号类关键字填入 `__NOT_EXIST_PRODM__99999` 后查询
2. 断言表头仍在,0 行或空态,分页总数为 0
- 自动化断言:规划与 CSV `PRODM-PPA-006` 及 `tests/spd/prodm-peripheral-add.spec.ts` 一致
###### 预期结果
无匹配不报错;不展示过期成功态数据。
---
### 外围系统产品新增 · 分页
#### 功能验证点
##### 【P0】【TC-UI-PRODM-PPA-007】【TP_PRODM_PPA_019】有数据时总条数
- 前置条件:已进入外围系统产品新增页
- 操作步骤:
1. 默认查询后读取「共 N 条」
2. 断言 N 与本次查询匹配条数规则一致(有数据或 0)
- 自动化断言:规划与 CSV `PRODM-PPA-007` 及 `tests/spd/prodm-peripheral-add.spec.ts` 一致
###### 预期结果
「共 N 条」与查询结果一致。
---
##### 【P0】【TC-UI-PRODM-PPA-008】【TP_PRODM_PPA_020】切换至第 2 页
- 前置条件:总条数大于一页,否则 skip
- 操作步骤:
1. 记录第 1 页首行关键字段
2. 点击页码「2」或「下一页」
3. 断言页码高亮正确,首行数据与第 1 页不同
- 自动化断言:规划与 CSV `PRODM-PPA-008` 及 `tests/spd/prodm-peripheral-add.spec.ts` 一致
###### 预期结果
翻页成功;数据更换。
---
##### 【P1】【TC-UI-PRODM-PPA-009】【TP_PRODM_PPA_021】切换20条每页页面正常且列表同步
- 前置条件:N>10 且切换前可见行数 > min(N,20),否则 skip(见 3.7)
- 操作步骤:
1. 记录「共 N 条」与当前页可见行数
2. 打开每页条数下拉,选择「20 条/页」
3. 断言分页器显示 20 条/页;N 不变;当前页行数=min(N,20) 且与切换前不同
- 自动化断言:规划与 CSV `PRODM-PPA-009` 及 `tests/spd/prodm-peripheral-add.spec.ts` 一致
###### 预期结果
每页条数切换生效;总数不变;列表同步。
---
### 外围系统产品新增 · 导出
#### 功能验证点
##### 【P0】【TC-UI-PRODM-PPA-010】【TP_PRODM_PPA_026】当前查询条件下导出
- 前置条件:已进入外围系统产品新增页
- 操作步骤:
1. 先执行一次查询
2. 点击「导 出」或「导出」或「导出Excel」
3. 断言无未捕获异常(不校验文件内容)
- 自动化断言:规划与 CSV `PRODM-PPA-010` 及 `tests/spd/prodm-peripheral-add.spec.ts` 一致
###### 预期结果
导出流程可启动。
---
### 外围系统产品新增 · 批量推送
#### 功能验证点
##### 【P0】【TC-UI-PRODM-PPA-011】【TP_PRODM_PPA_028】打开「批量推送」对应弹窗/抽屉
- 前置条件:已进入外围系统产品新增页
- 操作步骤:
1. 点击「批量推送」或等价入口
2. 断言弹窗/抽屉/详情可见,关键字段可交互
3. 可见取消/关闭/返回
- 自动化断言:规划与 CSV `PRODM-PPA-011` 及 `tests/spd/prodm-peripheral-add.spec.ts` 一致
###### 预期结果
「批量推送」层打开;关键控件可见。
---
##### 【P1】【TC-UI-PRODM-PPA-012】【TP_PRODM_PPA_029】「批量推送」取消不落库
- 前置条件:已进入外围系统产品新增页
- 操作步骤:
1. 打开「批量推送」,任意填写非空后点击「取 消」或关闭
2. 断言弹层关闭,列表行数与打开前一致(抽样)
- 自动化断言:规划与 CSV `PRODM-PPA-012` 及 `tests/spd/prodm-peripheral-add.spec.ts` 一致
###### 预期结果
取消后列表无新增/无修改。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-PPA-013】【TP_PRODM_PPA_030】「批量推送」必填为空拦截
- 前置条件:该层存在必填提交,否则 skip
- 操作步骤:
1. 打开「批量推送」,必填项留空后点击「确 定」
2. 断言出现必填提示,弹层仍打开,列表不刷新为成功态
- 自动化断言:规划与 CSV `PRODM-PPA-013` 及 `tests/spd/prodm-peripheral-add.spec.ts` 一致
###### 预期结果
确定被拦截;不落库。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 | **13** 条(P0=7 / P1=6) |
| 来源 | 从 37 条测试点选取可稳定自动化场景;H3 与测试点同名 |
| 未纳入自动化 | 会话过期、无菜单权限、菜单进入单条、未登录探针、接口失败注入、导出文件内容、写操作成功落库、弹窗全字段 |
| 列排序 | 测试点 1 条「各可排序列升序降序」;本 MD **每 sorter 列一条** `{列名}列升序降序切换`(3.6) |
| 每页条数 | 有 size-changer 时标题「切换20条每页…」,绑定 TP「切换每页条数」(3.7) |
| 单一职责 | 每条只断言一个核心业务结果 |
# 基础管理-产品管理-物料信息变更 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-产品管理-物料信息变更-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-产品管理-物料信息变更-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/goods/platform/zr-product-info`
**定位器 YAML**:`locators/spd/prodm-material-chg.locator.yaml`
**元素扫描**:`data/scan/prodm-material-chg-elements.json`(184 项)
**关联规范**:`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-PRODM-022.md`
**版本**:2026-11-04
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/prodm-material-chg.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:正例账号 `test_1` + `storageState`;具备「基础设置 → 产品管理 → 物料信息变更」权限。
**页面约定**:整页渲染;定位在 `page` 上。
**隔离**:每用例独立 context(playwright-storage-state-isolation)。
**菜单导航**:菜单「基础设置 → 产品管理 → 物料信息变更」;`openPath('/spd/basic/goods/platform/zr-product-info')` 并断言 URL,勿误入兄弟页。
**写操作**:写操作仅打开弹层后取消或做必填拦截,不提交成功落库;导出/打印不校验文件内容。
**动态取数**:查询后从首行读取 `${sampleCode}`/`${sampleName}`;mock:`__NOT_EXIST_PRODM__99999`。
---
## 基础设置 · 产品管理
### 物料信息变更 · 快捷筛选查询
#### 功能验证点
##### 【P1】【TC-UI-PRODM-MCH-001】【TP_PRODM_MCH_005】快捷区重置恢复默认
- 前置条件:已进入物料信息变更页
- 操作步骤:
1. 任意填写快捷区可见字段后点击「重 置」
2. 断言条件恢复默认;列表是否刷新按产品规则(未定则记待评审)
- 自动化断言:规划与 CSV `PRODM-MCH-001` 及 `tests/spd/prodm-material-chg.spec.ts` 一致
###### 预期结果
重置后条件恢复默认;页面无报错。
---
### 物料信息变更 · 高级筛选抽屉
#### 功能验证点
##### 【P0】【TC-UI-PRODM-MCH-002】【TP_PRODM_MCH_012】全量查询条件组合查询
- 前置条件:默认查询至少 1 条,否则 skip
- 操作步骤:
1. 默认查询 → 从首行提取全量样本(不写死业务数据,见 rules 3.4)
2. 快捷区填入样本中有值的可见字段
3. 高级筛选抽屉填入样本中所有非空字段(文本直接填、下拉选同值;禁用字段记录默认)
4. 「查询/筛选」后抽样首行;首行同时满足样本中全部已填字段
- 自动化断言:规划与 CSV `PRODM-MCH-002` 及 `tests/spd/prodm-material-chg.spec.ts` 一致
###### 预期结果
查询正常无报错;查询条件写值正常;查询结果与查询条件一致。
---
##### 【P0】【TC-UI-PRODM-MCH-003】【TP_PRODM_MCH_010】点击高级筛选打开抽屉
- 前置条件:已进入物料信息变更页
- 操作步骤:
1. 点击「高级筛选」
2. 断言抽屉标题为「高级筛选」,关键字段可交互
3. 关闭抽屉,快捷区条件不被误清空(以现网为准)
- 自动化断言:规划与 CSV `PRODM-MCH-003` 及 `tests/spd/prodm-material-chg.spec.ts` 一致
###### 预期结果
高级筛选抽屉可打开并关闭。
---
### 物料信息变更 · 列表
#### 功能验证点
##### 【P0】【TC-UI-PRODM-MCH-004】【TP_PRODM_MCH_020】列表核心列完整
- 前置条件:已进入物料信息变更页
- 操作步骤:
1. 断言表头含核心列(抽样):单号、制单时间、状态、物料变更摘要等(以现网为准)
2. 若有数据,抽样首行关键字段非空
- 自动化断言:规划与 CSV `PRODM-MCH-004` 及 `tests/spd/prodm-material-chg.spec.ts` 一致
###### 预期结果
核心列完整;列表结构正确。
---
### 物料信息变更 · 行内操作
#### 功能验证点
##### 【P0】【TC-UI-PRODM-MCH-005】【TP_PRODM_MCH_014】行内「详情」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「详情」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-MCH-005` 及 `tests/spd/prodm-material-chg.spec.ts` 一致
###### 预期结果
行内「详情」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-MCH-006】【TP_PRODM_MCH_015】行内「编辑」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「编辑」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-MCH-006` 及 `tests/spd/prodm-material-chg.spec.ts` 一致
###### 预期结果
行内「编辑」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-MCH-007】【TP_PRODM_MCH_016】行内「日志」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「日志」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-MCH-007` 及 `tests/spd/prodm-material-chg.spec.ts` 一致
###### 预期结果
行内「日志」可达;关闭后回到列表。
---
### 物料信息变更 · 列表
#### 功能验证点
##### 【P2】【TC-UI-PRODM-MCH-008】【TP_PRODM_MCH_021】列设置隐藏后再恢复
- 前置条件:列表表头已加载
- 操作步骤:
1. 默认查询后点击表格工具栏列设置(齿轮)
2. 取消勾选一列非核心字段并关闭面板,断言表头隐藏
3. 再次打开列设置勾选恢复并关闭,断言表头恢复
- 自动化断言:规划与 CSV `PRODM-MCH-008` 及 `tests/spd/prodm-material-chg.spec.ts` 一致
###### 预期结果
勾选状态与表头一致。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-MCH-009】【TP_PRODM_MCH_023】横向滚动与列对齐
- 前置条件:列表有数据且列超出视口,否则 skip
- 操作步骤:
1. 宽表场景下横向滚动使远侧列进入视口
2. 断言表头列数与数据列数一致、对齐无重叠
- 自动化断言:规划与 CSV `PRODM-MCH-009` 及 `tests/spd/prodm-material-chg.spec.ts` 一致
###### 预期结果
远侧列可进入视口;表头与数据列对齐。
---
##### 【P1】【TC-UI-PRODM-MCH-010】【TP_PRODM_MCH_022】无匹配空态(mock反例)
- 前置条件:已进入物料信息变更页
- 操作步骤:
1. 名称/编号类关键字填入 `__NOT_EXIST_PRODM__99999` 后查询
2. 断言表头仍在,0 行或空态,分页总数为 0
- 自动化断言:规划与 CSV `PRODM-MCH-010` 及 `tests/spd/prodm-material-chg.spec.ts` 一致
###### 预期结果
无匹配不报错;不展示过期成功态数据。
---
### 物料信息变更 · 分页
#### 功能验证点
##### 【P0】【TC-UI-PRODM-MCH-011】【TP_PRODM_MCH_024】有数据时总条数
- 前置条件:已进入物料信息变更页
- 操作步骤:
1. 默认查询后读取「共 N 条」
2. 断言 N 与本次查询匹配条数规则一致(有数据或 0)
- 自动化断言:规划与 CSV `PRODM-MCH-011` 及 `tests/spd/prodm-material-chg.spec.ts` 一致
###### 预期结果
「共 N 条」与查询结果一致。
---
##### 【P0】【TC-UI-PRODM-MCH-012】【TP_PRODM_MCH_025】切换至第 2 页
- 前置条件:总条数大于一页,否则 skip
- 操作步骤:
1. 记录第 1 页首行关键字段
2. 点击页码「2」或「下一页」
3. 断言页码高亮正确,首行数据与第 1 页不同
- 自动化断言:规划与 CSV `PRODM-MCH-012` 及 `tests/spd/prodm-material-chg.spec.ts` 一致
###### 预期结果
翻页成功;数据更换。
---
##### 【P1】【TC-UI-PRODM-MCH-013】【TP_PRODM_MCH_026】切换20条每页页面正常且列表同步
- 前置条件:N>10 且切换前可见行数 > min(N,20),否则 skip(见 3.7)
- 操作步骤:
1. 记录「共 N 条」与当前页可见行数
2. 打开每页条数下拉,选择「20 条/页」
3. 断言分页器显示 20 条/页;N 不变;当前页行数=min(N,20) 且与切换前不同
- 自动化断言:规划与 CSV `PRODM-MCH-013` 及 `tests/spd/prodm-material-chg.spec.ts` 一致
###### 预期结果
每页条数切换生效;总数不变;列表同步。
---
### 物料信息变更 · 打印
#### 功能验证点
##### 【P0】【TC-UI-PRODM-MCH-014】【TP_PRODM_MCH_031】按当前条件打印
- 前置条件:已进入物料信息变更页
- 操作步骤:
1. 点击「打 印」或「打印产品码」等页面级打印入口
2. 断言可拉起对话框/预览/toast,无 error
- 自动化断言:规划与 CSV `PRODM-MCH-014` 及 `tests/spd/prodm-material-chg.spec.ts` 一致
###### 预期结果
打印流程可启动。
---
### 物料信息变更 · 新增
#### 功能验证点
##### 【P0】【TC-UI-PRODM-MCH-015】【TP_PRODM_MCH_032】打开「新增」对应弹窗/抽屉
- 前置条件:已进入物料信息变更页
- 操作步骤:
1. 点击「新增」或等价入口
2. 断言弹窗/抽屉/详情可见,关键字段可交互
3. 可见取消/关闭/返回
- 自动化断言:规划与 CSV `PRODM-MCH-015` 及 `tests/spd/prodm-material-chg.spec.ts` 一致
###### 预期结果
「新增」层打开;关键控件可见。
---
##### 【P1】【TC-UI-PRODM-MCH-016】【TP_PRODM_MCH_033】「新增」取消不落库
- 前置条件:已进入物料信息变更页
- 操作步骤:
1. 打开「新增」,任意填写非空后点击「取 消」或关闭
2. 断言弹层关闭,列表行数与打开前一致(抽样)
- 自动化断言:规划与 CSV `PRODM-MCH-016` 及 `tests/spd/prodm-material-chg.spec.ts` 一致
###### 预期结果
取消后列表无新增/无修改。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-MCH-017】【TP_PRODM_MCH_034】「新增」必填为空拦截
- 前置条件:该层存在必填提交,否则 skip
- 操作步骤:
1. 打开「新增」,必填项留空后点击「确 定」
2. 断言出现必填提示,弹层仍打开,列表不刷新为成功态
- 自动化断言:规划与 CSV `PRODM-MCH-017` 及 `tests/spd/prodm-material-chg.spec.ts` 一致
###### 预期结果
确定被拦截;不落库。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 | **17** 条(P0=10 / P1=6 / P2=1) |
| 来源 | 从 41 条测试点选取可稳定自动化场景;H3 与测试点同名 |
| 未纳入自动化 | 会话过期、无菜单权限、菜单进入单条、未登录探针、接口失败注入、导出文件内容、写操作成功落库、弹窗全字段 |
| 列排序 | 测试点 1 条「各可排序列升序降序」;本 MD **每 sorter 列一条** `{列名}列升序降序切换`(3.6) |
| 每页条数 | 有 size-changer 时标题「切换20条每页…」,绑定 TP「切换每页条数」(3.7) |
| 单一职责 | 每条只断言一个核心业务结果 |
# 基础管理-产品管理-物料信息管理 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-产品管理-物料信息管理-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-产品管理-物料信息管理-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/goods/paltform/product/zrcalatog`
**定位器 YAML**:`locators/spd/prodm-material.locator.yaml`
**元素扫描**:`data/scan/prodm-material-elements.json`(384 项)
**关联规范**:`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-PRODM-003.md`
**版本**:2026-11-04
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/prodm-material.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:正例账号 `test_1` + `storageState`;具备「基础设置 → 产品管理 → 物料信息管理」权限。
**页面约定**:整页渲染;定位在 `page` 上。
**隔离**:每用例独立 context(playwright-storage-state-isolation)。
**菜单导航**:菜单「基础设置 → 产品管理 → 物料信息管理」;`openPath('/spd/basic/goods/paltform/product/zrcalatog')` 并断言 URL,勿误入兄弟页。
**写操作**:写操作仅打开弹层后取消或做必填拦截,不提交成功落库;导出/打印不校验文件内容。
**动态取数**:查询后从首行读取 `${sampleCode}`/`${sampleName}`;mock:`__NOT_EXIST_PRODM__99999`。
---
## 基础设置 · 产品管理
### 物料信息管理 · 左侧耗材分类树
#### 功能验证点
##### 【P0】【TC-UI-PRODM-MAT-001】【TP_PRODM_MAT_005】树默认有选中或可展开节点
- 前置条件:已进入物料信息管理页
- 操作步骤:
1. 断言左侧耗材分类树可见且有选中或可展开节点
2. 读取选中节点名称 `${sampleTreeNode}`
3. 断言右侧列表/表单与当前节点范围一致或为空态
- 自动化断言:规划与 CSV `PRODM-MAT-001` 及 `tests/spd/prodm-material.spec.ts` 一致
###### 预期结果
树有选中;右侧不展示其它节点数据为成功态。
---
##### 【P0】【TC-UI-PRODM-MAT-002】【TP_PRODM_MAT_007】切换树节点刷新右侧
- 前置条件:已进入物料信息管理页
- 操作步骤:
1. 记录当前节点与右侧首行(若有)
2. 点选另一树节点(仅 1 个则 skip)
3. 断言右侧数据范围切换,不残留上一节点首行
- 自动化断言:规划与 CSV `PRODM-MAT-002` 及 `tests/spd/prodm-material.spec.ts` 一致
###### 预期结果
切换节点后右侧刷新。
---
### 物料信息管理 · 快捷筛选查询
#### 功能验证点
##### 【P1】【TC-UI-PRODM-MAT-003】【TP_PRODM_MAT_011】快捷区重置恢复默认
- 前置条件:已进入物料信息管理页
- 操作步骤:
1. 任意填写快捷区可见字段后点击「重 置」
2. 断言条件恢复默认;列表是否刷新按产品规则(未定则记待评审)
- 自动化断言:规划与 CSV `PRODM-MAT-003` 及 `tests/spd/prodm-material.spec.ts` 一致
###### 预期结果
重置后条件恢复默认;页面无报错。
---
### 物料信息管理 · 高级筛选抽屉
#### 功能验证点
##### 【P0】【TC-UI-PRODM-MAT-004】【TP_PRODM_MAT_018】全量查询条件组合查询
- 前置条件:默认查询至少 1 条,否则 skip
- 操作步骤:
1. 默认查询 → 从首行提取全量样本(不写死业务数据,见 rules 3.4)
2. 快捷区填入样本中有值的可见字段
3. 高级筛选抽屉填入样本中所有非空字段(文本直接填、下拉选同值;禁用字段记录默认)
4. 「查询/筛选」后抽样首行;首行同时满足样本中全部已填字段
- 自动化断言:规划与 CSV `PRODM-MAT-004` 及 `tests/spd/prodm-material.spec.ts` 一致
###### 预期结果
查询正常无报错;查询条件写值正常;查询结果与查询条件一致。
---
##### 【P0】【TC-UI-PRODM-MAT-005】【TP_PRODM_MAT_016】点击高级筛选打开抽屉
- 前置条件:已进入物料信息管理页
- 操作步骤:
1. 点击「高级筛选」
2. 断言抽屉标题为「高级筛选」,关键字段可交互
3. 关闭抽屉,快捷区条件不被误清空(以现网为准)
- 自动化断言:规划与 CSV `PRODM-MAT-005` 及 `tests/spd/prodm-material.spec.ts` 一致
###### 预期结果
高级筛选抽屉可打开并关闭。
---
### 物料信息管理 · 列表
#### 功能验证点
##### 【P0】【TC-UI-PRODM-MAT-006】【TP_PRODM_MAT_020】列表核心列完整
- 前置条件:已进入物料信息管理页
- 操作步骤:
1. 断言表头含核心列(抽样):HIS编码、阳采ID、规格型号、单位、耗材类型、品牌、医保相关编码等
2. 若有数据,抽样首行关键字段非空
- 自动化断言:规划与 CSV `PRODM-MAT-006` 及 `tests/spd/prodm-material.spec.ts` 一致
###### 预期结果
核心列完整;列表结构正确。
---
#### 集成验证点
##### 【P0】【TC-UI-PRODM-MAT-007】【TP_PRODM_MAT_025】行内「详情」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「详情」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-MAT-007` 及 `tests/spd/prodm-material.spec.ts` 一致
###### 预期结果
行内操作可达;关闭后回到列表。
---
#### 功能验证点
##### 【P2】【TC-UI-PRODM-MAT-008】【TP_PRODM_MAT_022】列设置隐藏后再恢复
- 前置条件:列表表头已加载
- 操作步骤:
1. 默认查询后点击表格工具栏列设置(齿轮)
2. 取消勾选一列非核心字段并关闭面板,断言表头隐藏
3. 再次打开列设置勾选恢复并关闭,断言表头恢复
- 自动化断言:规划与 CSV `PRODM-MAT-008` 及 `tests/spd/prodm-material.spec.ts` 一致
###### 预期结果
勾选状态与表头一致。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-MAT-009】【TP_PRODM_MAT_024】横向滚动与列对齐
- 前置条件:列表有数据且列超出视口,否则 skip
- 操作步骤:
1. 宽表场景下横向滚动使远侧列进入视口
2. 断言表头列数与数据列数一致、对齐无重叠
- 自动化断言:规划与 CSV `PRODM-MAT-009` 及 `tests/spd/prodm-material.spec.ts` 一致
###### 预期结果
远侧列可进入视口;表头与数据列对齐。
---
##### 【P1】【TC-UI-PRODM-MAT-010】【TP_PRODM_MAT_023】无匹配空态(mock反例)
- 前置条件:已进入物料信息管理页
- 操作步骤:
1. 名称/编号类关键字填入 `__NOT_EXIST_PRODM__99999` 后查询
2. 断言表头仍在,0 行或空态,分页总数为 0
- 自动化断言:规划与 CSV `PRODM-MAT-010` 及 `tests/spd/prodm-material.spec.ts` 一致
###### 预期结果
无匹配不报错;不展示过期成功态数据。
---
### 物料信息管理 · 分页
#### 功能验证点
##### 【P0】【TC-UI-PRODM-MAT-011】【TP_PRODM_MAT_026】有数据时总条数
- 前置条件:已进入物料信息管理页
- 操作步骤:
1. 默认查询后读取「共 N 条」
2. 断言 N 与本次查询匹配条数规则一致(有数据或 0)
- 自动化断言:规划与 CSV `PRODM-MAT-011` 及 `tests/spd/prodm-material.spec.ts` 一致
###### 预期结果
「共 N 条」与查询结果一致。
---
##### 【P0】【TC-UI-PRODM-MAT-012】【TP_PRODM_MAT_027】切换至第 2 页
- 前置条件:总条数大于一页,否则 skip
- 操作步骤:
1. 记录第 1 页首行关键字段
2. 点击页码「2」或「下一页」
3. 断言页码高亮正确,首行数据与第 1 页不同
- 自动化断言:规划与 CSV `PRODM-MAT-012` 及 `tests/spd/prodm-material.spec.ts` 一致
###### 预期结果
翻页成功;数据更换。
---
##### 【P1】【TC-UI-PRODM-MAT-013】【TP_PRODM_MAT_028】切换20条每页页面正常且列表同步
- 前置条件:N>10 且切换前可见行数 > min(N,20),否则 skip(见 3.7)
- 操作步骤:
1. 记录「共 N 条」与当前页可见行数
2. 打开每页条数下拉,选择「20 条/页」
3. 断言分页器显示 20 条/页;N 不变;当前页行数=min(N,20) 且与切换前不同
- 自动化断言:规划与 CSV `PRODM-MAT-013` 及 `tests/spd/prodm-material.spec.ts` 一致
###### 预期结果
每页条数切换生效;总数不变;列表同步。
---
### 物料信息管理 · 导出
#### 功能验证点
##### 【P0】【TC-UI-PRODM-MAT-014】【TP_PRODM_MAT_033】当前查询条件下导出
- 前置条件:已进入物料信息管理页
- 操作步骤:
1. 先执行一次查询
2. 点击「导 出」或「导出」或「导出Excel」
3. 断言无未捕获异常(不校验文件内容)
- 自动化断言:规划与 CSV `PRODM-MAT-014` 及 `tests/spd/prodm-material.spec.ts` 一致
###### 预期结果
导出流程可启动。
---
### 物料信息管理 · 添加
#### 功能验证点
##### 【P0】【TC-UI-PRODM-MAT-015】【TP_PRODM_MAT_035】打开「添加」对应弹窗/抽屉
- 前置条件:已进入物料信息管理页
- 操作步骤:
1. 点击「添加」或等价入口
2. 断言弹窗/抽屉/详情可见,关键字段可交互
3. 可见取消/关闭/返回
- 自动化断言:规划与 CSV `PRODM-MAT-015` 及 `tests/spd/prodm-material.spec.ts` 一致
###### 预期结果
「添加」层打开;关键控件可见。
---
##### 【P1】【TC-UI-PRODM-MAT-016】【TP_PRODM_MAT_036】「添加」取消不落库
- 前置条件:已进入物料信息管理页
- 操作步骤:
1. 打开「添加」,任意填写非空后点击「取 消」或关闭
2. 断言弹层关闭,列表行数与打开前一致(抽样)
- 自动化断言:规划与 CSV `PRODM-MAT-016` 及 `tests/spd/prodm-material.spec.ts` 一致
###### 预期结果
取消后列表无新增/无修改。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-MAT-017】【TP_PRODM_MAT_037】「添加」必填为空拦截
- 前置条件:该层存在必填提交,否则 skip
- 操作步骤:
1. 打开「添加」,必填项留空后点击「确 定」
2. 断言出现必填提示,弹层仍打开,列表不刷新为成功态
- 自动化断言:规划与 CSV `PRODM-MAT-017` 及 `tests/spd/prodm-material.spec.ts` 一致
###### 预期结果
确定被拦截;不落库。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 | **17** 条(P0=10 / P1=6 / P2=1) |
| 来源 | 从 44 条测试点选取可稳定自动化场景;H3 与测试点同名 |
| 未纳入自动化 | 会话过期、无菜单权限、菜单进入单条、未登录探针、接口失败注入、导出文件内容、写操作成功落库、弹窗全字段 |
| 列排序 | 测试点 1 条「各可排序列升序降序」;本 MD **每 sorter 列一条** `{列名}列升序降序切换`(3.6) |
| 每页条数 | 有 size-changer 时标题「切换20条每页…」,绑定 TP「切换每页条数」(3.7) |
| 单一职责 | 每条只断言一个核心业务结果 |
# 基础管理-产品管理-物料变更单明细查询 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-产品管理-物料变更单明细查询-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-产品管理-物料变更单明细查询-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/goods/platform/zrchange`
**定位器 YAML**:`locators/spd/prodm-material-chg-detail.locator.yaml`
**元素扫描**:`data/scan/prodm-material-chg-detail-elements.json`(105 项)
**关联规范**:`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-PRODM-026.md`
**版本**:2026-11-04
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/prodm-material-chg-detail.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:正例账号 `test_1` + `storageState`;具备「基础设置 → 产品管理 → 物料变更单明细查询」权限。
**页面约定**:整页渲染;定位在 `page` 上。
**隔离**:每用例独立 context(playwright-storage-state-isolation)。
**菜单导航**:菜单「基础设置 → 产品管理 → 物料变更单明细查询」;`openPath('/spd/basic/goods/platform/zrchange')` 并断言 URL,勿误入兄弟页。
**写操作**:写操作仅打开弹层后取消或做必填拦截,不提交成功落库;导出/打印不校验文件内容。
**动态取数**:查询后从首行读取 `${sampleCode}`/`${sampleName}`;mock:`__NOT_EXIST_PRODM__99999`。
---
## 基础设置 · 产品管理
### 物料变更单明细查询 · 快捷筛选查询
#### 功能验证点
##### 【P1】【TC-UI-PRODM-MCD-001】【TP_PRODM_MCD_005】快捷区重置恢复默认
- 前置条件:已进入物料变更单明细查询页
- 操作步骤:
1. 任意填写快捷区可见字段后点击「重 置」
2. 断言条件恢复默认;列表是否刷新按产品规则(未定则记待评审)
- 自动化断言:规划与 CSV `PRODM-MCD-001` 及 `tests/spd/prodm-material-chg-detail.spec.ts` 一致
###### 预期结果
重置后条件恢复默认;页面无报错。
---
##### 【P0】【TC-UI-PRODM-MCD-002】【TP_PRODM_MCD_006】全量可见条件组合查询
- 前置条件:默认查询至少 1 条,否则 skip
- 操作步骤:
1. 默认查询 → 从首行提取全量样本(只填当前结果里有值的条件)
2. 快捷区可见非空条件全部填入后查询
3. 抽样首行同时满足全部已填条件;无未捕获异常
- 自动化断言:规划与 CSV `PRODM-MCD-002` 及 `tests/spd/prodm-material-chg-detail.spec.ts` 一致
###### 预期结果
查询正常无报错;查询结果与查询条件一致。
---
### 物料变更单明细查询 · 查询条件展开收起
#### 功能验证点
##### 【P1】【TC-UI-PRODM-MCD-003】【TP_PRODM_MCD_011】展开后更多条件可见
- 前置条件:已进入物料变更单明细查询页
- 操作步骤:
1. 点击「展开」
2. 断言额外筛选字段进入可视区且可填写
3. 按钮文案变为「收起」
- 自动化断言:规划与 CSV `PRODM-MCD-003` 及 `tests/spd/prodm-material-chg-detail.spec.ts` 一致
###### 预期结果
展开后更多条件可见并可交互。
---
### 物料变更单明细查询 · 列表
#### 功能验证点
##### 【P0】【TC-UI-PRODM-MCD-004】【TP_PRODM_MCD_021】列表核心列完整
- 前置条件:已进入物料变更单明细查询页
- 操作步骤:
1. 断言表头含核心列(抽样):变更单号、物料、变更字段、时间等(以现网为准)
2. 若有数据,抽样首行关键字段非空
- 自动化断言:规划与 CSV `PRODM-MCD-004` 及 `tests/spd/prodm-material-chg-detail.spec.ts` 一致
###### 预期结果
核心列完整;列表结构正确。
---
##### 【P1】【TC-UI-PRODM-MCD-005】【TP_PRODM_MCD_022】物料编号列升序降序切换
- 前置条件:至少 2 条数据,否则 skip
- 操作步骤:
1. 默认查询后列表有数据
2. 横向滚动使「物料编号」列表头可见(宽表时)
3. 第一次点击该列排序控件并校验升序指示器
4. 第二次点击并校验降序指示器
- 自动化断言:规划与 CSV `PRODM-MCD-005` 及 `tests/spd/prodm-material-chg-detail.spec.ts` 一致
###### 预期结果
排序指示器与方向一致;列表仍有数据。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-MCD-006】【TP_PRODM_MCD_023】无匹配空态(mock反例)
- 前置条件:已进入物料变更单明细查询页
- 操作步骤:
1. 名称/编号类关键字填入 `__NOT_EXIST_PRODM__99999` 后查询
2. 断言表头仍在,0 行或空态,分页总数为 0
- 自动化断言:规划与 CSV `PRODM-MCD-006` 及 `tests/spd/prodm-material-chg-detail.spec.ts` 一致
###### 预期结果
无匹配不报错;不展示过期成功态数据。
---
### 物料变更单明细查询 · 分页
#### 功能验证点
##### 【P0】【TC-UI-PRODM-MCD-007】【TP_PRODM_MCD_024】有数据时总条数
- 前置条件:已进入物料变更单明细查询页
- 操作步骤:
1. 默认查询后读取「共 N 条」
2. 断言 N 与本次查询匹配条数规则一致(有数据或 0)
- 自动化断言:规划与 CSV `PRODM-MCD-007` 及 `tests/spd/prodm-material-chg-detail.spec.ts` 一致
###### 预期结果
「共 N 条」与查询结果一致。
---
##### 【P0】【TC-UI-PRODM-MCD-008】【TP_PRODM_MCD_025】切换至第 2 页
- 前置条件:总条数大于一页,否则 skip
- 操作步骤:
1. 记录第 1 页首行关键字段
2. 点击页码「2」或「下一页」
3. 断言页码高亮正确,首行数据与第 1 页不同
- 自动化断言:规划与 CSV `PRODM-MCD-008` 及 `tests/spd/prodm-material-chg-detail.spec.ts` 一致
###### 预期结果
翻页成功;数据更换。
---
##### 【P1】【TC-UI-PRODM-MCD-009】【TP_PRODM_MCD_026】切换20条每页页面正常且列表同步
- 前置条件:N>10 且切换前可见行数 > min(N,20),否则 skip(见 3.7)
- 操作步骤:
1. 记录「共 N 条」与当前页可见行数
2. 打开每页条数下拉,选择「20 条/页」
3. 断言分页器显示 20 条/页;N 不变;当前页行数=min(N,20) 且与切换前不同
- 自动化断言:规划与 CSV `PRODM-MCD-009` 及 `tests/spd/prodm-material-chg-detail.spec.ts` 一致
###### 预期结果
每页条数切换生效;总数不变;列表同步。
---
### 物料变更单明细查询 · 导出
#### 功能验证点
##### 【P0】【TC-UI-PRODM-MCD-010】【TP_PRODM_MCD_031】当前查询条件下导出
- 前置条件:已进入物料变更单明细查询页
- 操作步骤:
1. 先执行一次查询
2. 点击「导 出」或「导出」或「导出Excel」
3. 断言无未捕获异常(不校验文件内容)
- 自动化断言:规划与 CSV `PRODM-MCD-010` 及 `tests/spd/prodm-material-chg-detail.spec.ts` 一致
###### 预期结果
导出流程可启动。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 | **10** 条(P0=5 / P1=5) |
| 来源 | 从 36 条测试点选取可稳定自动化场景;H3 与测试点同名 |
| 未纳入自动化 | 会话过期、无菜单权限、菜单进入单条、未登录探针、接口失败注入、导出文件内容、写操作成功落库、弹窗全字段 |
| 列排序 | 测试点 1 条「各可排序列升序降序」;本 MD **每 sorter 列一条** `{列名}列升序降序切换`(3.6) |
| 每页条数 | 有 size-changer 时标题「切换20条每页…」,绑定 TP「切换每页条数」(3.7) |
| 单一职责 | 每条只断言一个核心业务结果 |
# 基础管理-产品管理-结算点设置 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-产品管理-结算点设置-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-产品管理-结算点设置-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/goods/platform/settle/rules`
**定位器 YAML**:`locators/spd/prodm-settle.locator.yaml`
**元素扫描**:`data/scan/prodm-settle-elements.json`(206 项)
**关联规范**:`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-PRODM-012.md`
**版本**:2026-11-04
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/prodm-settle.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:正例账号 `test_1` + `storageState`;具备「基础设置 → 产品管理 → 结算点设置」权限。
**页面约定**:整页渲染;定位在 `page` 上。
**隔离**:每用例独立 context(playwright-storage-state-isolation)。
**菜单导航**:菜单「基础设置 → 产品管理 → 结算点设置」;`openPath('/spd/basic/goods/platform/settle/rules')` 并断言 URL,勿误入兄弟页。
**写操作**:写操作仅打开弹层后取消或做必填拦截,不提交成功落库;导出/打印不校验文件内容。
**动态取数**:查询后从首行读取 `${sampleCode}`/`${sampleName}`;mock:`__NOT_EXIST_PRODM__99999`。
---
## 基础设置 · 产品管理
### 结算点设置 · 左侧规则目录树
#### 功能验证点
##### 【P0】【TC-UI-PRODM-STL-001】【TP_PRODM_STL_005】树默认有选中或可展开节点
- 前置条件:已进入结算点设置页
- 操作步骤:
1. 断言左侧规则目录树可见且有选中或可展开节点
2. 读取选中节点名称 `${sampleTreeNode}`
3. 断言右侧列表/表单与当前节点范围一致或为空态
- 自动化断言:规划与 CSV `PRODM-STL-001` 及 `tests/spd/prodm-settle.spec.ts` 一致
###### 预期结果
树有选中;右侧不展示其它节点数据为成功态。
---
##### 【P0】【TC-UI-PRODM-STL-002】【TP_PRODM_STL_007】切换树节点刷新右侧
- 前置条件:已进入结算点设置页
- 操作步骤:
1. 记录当前节点与右侧首行(若有)
2. 点选另一树节点(仅 1 个则 skip)
3. 断言右侧数据范围切换,不残留上一节点首行
- 自动化断言:规划与 CSV `PRODM-STL-002` 及 `tests/spd/prodm-settle.spec.ts` 一致
###### 预期结果
切换节点后右侧刷新。
---
### 结算点设置 · 快捷筛选查询
#### 功能验证点
##### 【P1】【TC-UI-PRODM-STL-003】【TP_PRODM_STL_011】快捷区重置恢复默认
- 前置条件:已进入结算点设置页
- 操作步骤:
1. 任意填写快捷区可见字段后点击「重 置」
2. 断言条件恢复默认;列表是否刷新按产品规则(未定则记待评审)
- 自动化断言:规划与 CSV `PRODM-STL-003` 及 `tests/spd/prodm-settle.spec.ts` 一致
###### 预期结果
重置后条件恢复默认;页面无报错。
---
### 结算点设置 · 高级筛选抽屉
#### 功能验证点
##### 【P0】【TC-UI-PRODM-STL-004】【TP_PRODM_STL_018】全量查询条件组合查询
- 前置条件:默认查询至少 1 条,否则 skip
- 操作步骤:
1. 默认查询 → 从首行提取全量样本(不写死业务数据,见 rules 3.4)
2. 快捷区填入样本中有值的可见字段
3. 高级筛选抽屉填入样本中所有非空字段(文本直接填、下拉选同值;禁用字段记录默认)
4. 「查询/筛选」后抽样首行;首行同时满足样本中全部已填字段
- 自动化断言:规划与 CSV `PRODM-STL-004` 及 `tests/spd/prodm-settle.spec.ts` 一致
###### 预期结果
查询正常无报错;查询条件写值正常;查询结果与查询条件一致。
---
##### 【P0】【TC-UI-PRODM-STL-005】【TP_PRODM_STL_016】点击高级筛选打开抽屉
- 前置条件:已进入结算点设置页
- 操作步骤:
1. 点击「高级筛选」
2. 断言抽屉标题为「高级筛选」,关键字段可交互
3. 关闭抽屉,快捷区条件不被误清空(以现网为准)
- 自动化断言:规划与 CSV `PRODM-STL-005` 及 `tests/spd/prodm-settle.spec.ts` 一致
###### 预期结果
高级筛选抽屉可打开并关闭。
---
### 结算点设置 · 列表
#### 功能验证点
##### 【P0】【TC-UI-PRODM-STL-006】【TP_PRODM_STL_026】列表核心列完整
- 前置条件:已进入结算点设置页
- 操作步骤:
1. 断言表头含核心列(抽样):结算点规则、院区/产品范围等(以现网为准)
2. 若有数据,抽样首行关键字段非空
- 自动化断言:规划与 CSV `PRODM-STL-006` 及 `tests/spd/prodm-settle.spec.ts` 一致
###### 预期结果
核心列完整;列表结构正确。
---
### 结算点设置 · 行内操作
#### 功能验证点
##### 【P0】【TC-UI-PRODM-STL-007】【TP_PRODM_STL_020】行内「详情」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「详情」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-STL-007` 及 `tests/spd/prodm-settle.spec.ts` 一致
###### 预期结果
行内「详情」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-STL-008】【TP_PRODM_STL_021】行内「编辑」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「编辑」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-STL-008` 及 `tests/spd/prodm-settle.spec.ts` 一致
###### 预期结果
行内「编辑」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-STL-009】【TP_PRODM_STL_022】行内「日志」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「日志」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-STL-009` 及 `tests/spd/prodm-settle.spec.ts` 一致
###### 预期结果
行内「日志」可达;关闭后回到列表。
---
### 结算点设置 · 列表
#### 功能验证点
##### 【P2】【TC-UI-PRODM-STL-010】【TP_PRODM_STL_028】列设置隐藏后再恢复
- 前置条件:列表表头已加载
- 操作步骤:
1. 默认查询后点击表格工具栏列设置(齿轮)
2. 取消勾选一列非核心字段并关闭面板,断言表头隐藏
3. 再次打开列设置勾选恢复并关闭,断言表头恢复
- 自动化断言:规划与 CSV `PRODM-STL-010` 及 `tests/spd/prodm-settle.spec.ts` 一致
###### 预期结果
勾选状态与表头一致。
---
##### 【P1】【TC-UI-PRODM-STL-011】【TP_PRODM_STL_027】结算规则列升序降序切换
- 前置条件:至少 2 条数据,否则 skip
- 操作步骤:
1. 默认查询后列表有数据
2. 横向滚动使「结算规则」列表头可见(宽表时)
3. 第一次点击该列排序控件并校验升序指示器
4. 第二次点击并校验降序指示器
- 自动化断言:规划与 CSV `PRODM-STL-011` 及 `tests/spd/prodm-settle.spec.ts` 一致
###### 预期结果
排序指示器与方向一致;列表仍有数据。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-STL-012】【TP_PRODM_STL_030】横向滚动与列对齐
- 前置条件:列表有数据且列超出视口,否则 skip
- 操作步骤:
1. 宽表场景下横向滚动使远侧列进入视口
2. 断言表头列数与数据列数一致、对齐无重叠
- 自动化断言:规划与 CSV `PRODM-STL-012` 及 `tests/spd/prodm-settle.spec.ts` 一致
###### 预期结果
远侧列可进入视口;表头与数据列对齐。
---
##### 【P1】【TC-UI-PRODM-STL-013】【TP_PRODM_STL_029】无匹配空态(mock反例)
- 前置条件:已进入结算点设置页
- 操作步骤:
1. 名称/编号类关键字填入 `__NOT_EXIST_PRODM__99999` 后查询
2. 断言表头仍在,0 行或空态,分页总数为 0
- 自动化断言:规划与 CSV `PRODM-STL-013` 及 `tests/spd/prodm-settle.spec.ts` 一致
###### 预期结果
无匹配不报错;不展示过期成功态数据。
---
### 结算点设置 · 分页
#### 功能验证点
##### 【P0】【TC-UI-PRODM-STL-014】【TP_PRODM_STL_031】有数据时总条数
- 前置条件:已进入结算点设置页
- 操作步骤:
1. 默认查询后读取「共 N 条」
2. 断言 N 与本次查询匹配条数规则一致(有数据或 0)
- 自动化断言:规划与 CSV `PRODM-STL-014` 及 `tests/spd/prodm-settle.spec.ts` 一致
###### 预期结果
「共 N 条」与查询结果一致。
---
##### 【P0】【TC-UI-PRODM-STL-015】【TP_PRODM_STL_032】切换至第 2 页
- 前置条件:总条数大于一页,否则 skip
- 操作步骤:
1. 记录第 1 页首行关键字段
2. 点击页码「2」或「下一页」
3. 断言页码高亮正确,首行数据与第 1 页不同
- 自动化断言:规划与 CSV `PRODM-STL-015` 及 `tests/spd/prodm-settle.spec.ts` 一致
###### 预期结果
翻页成功;数据更换。
---
##### 【P1】【TC-UI-PRODM-STL-016】【TP_PRODM_STL_033】切换20条每页页面正常且列表同步
- 前置条件:N>10 且切换前可见行数 > min(N,20),否则 skip(见 3.7)
- 操作步骤:
1. 记录「共 N 条」与当前页可见行数
2. 打开每页条数下拉,选择「20 条/页」
3. 断言分页器显示 20 条/页;N 不变;当前页行数=min(N,20) 且与切换前不同
- 自动化断言:规划与 CSV `PRODM-STL-016` 及 `tests/spd/prodm-settle.spec.ts` 一致
###### 预期结果
每页条数切换生效;总数不变;列表同步。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 | **16** 条(P0=10 / P1=5 / P2=1) |
| 来源 | 从 41 条测试点选取可稳定自动化场景;H3 与测试点同名 |
| 未纳入自动化 | 会话过期、无菜单权限、菜单进入单条、未登录探针、接口失败注入、导出文件内容、写操作成功落库、弹窗全字段 |
| 列排序 | 测试点 1 条「各可排序列升序降序」;本 MD **每 sorter 列一条** `{列名}列升序降序切换`(3.6) |
| 每页条数 | 有 size-changer 时标题「切换20条每页…」,绑定 TP「切换每页条数」(3.7) |
| 单一职责 | 每条只断言一个核心业务结果 |
# 基础管理-产品管理-缺货目录明细 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-产品管理-缺货目录明细-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-产品管理-缺货目录明细-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/goods/paltform/stockoutList`
**定位器 YAML**:`locators/spd/prodm-stockout-detail.locator.yaml`
**元素扫描**:`data/scan/prodm-stockout-detail-elements.json`(133 项)
**关联规范**:`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-PRODM-021.md`
**版本**:2026-11-04
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/prodm-stockout-detail.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:正例账号 `test_1` + `storageState`;具备「基础设置 → 产品管理 → 缺货目录明细」权限。
**页面约定**:整页渲染;定位在 `page` 上。
**隔离**:每用例独立 context(playwright-storage-state-isolation)。
**菜单导航**:菜单「基础设置 → 产品管理 → 缺货目录明细」;`openPath('/spd/basic/goods/paltform/stockoutList')` 并断言 URL,勿误入兄弟页。
**写操作**:写操作仅打开弹层后取消或做必填拦截,不提交成功落库;导出/打印不校验文件内容。
**动态取数**:查询后从首行读取 `${sampleCode}`/`${sampleName}`;mock:`__NOT_EXIST_PRODM__99999`。
---
## 基础设置 · 产品管理
### 缺货目录明细 · 快捷筛选查询
#### 功能验证点
##### 【P1】【TC-UI-PRODM-STD-001】【TP_PRODM_STD_005】快捷区重置恢复默认
- 前置条件:已进入缺货目录明细页
- 操作步骤:
1. 任意填写快捷区可见字段后点击「重 置」
2. 断言条件恢复默认;列表是否刷新按产品规则(未定则记待评审)
- 自动化断言:规划与 CSV `PRODM-STD-001` 及 `tests/spd/prodm-stockout-detail.spec.ts` 一致
###### 预期结果
重置后条件恢复默认;页面无报错。
---
##### 【P0】【TC-UI-PRODM-STD-002】【TP_PRODM_STD_006】全量可见条件组合查询
- 前置条件:默认查询至少 1 条,否则 skip
- 操作步骤:
1. 默认查询 → 从首行提取全量样本(只填当前结果里有值的条件)
2. 快捷区可见非空条件全部填入后查询
3. 抽样首行同时满足全部已填条件;无未捕获异常
- 自动化断言:规划与 CSV `PRODM-STD-002` 及 `tests/spd/prodm-stockout-detail.spec.ts` 一致
###### 预期结果
查询正常无报错;查询结果与查询条件一致。
---
### 缺货目录明细 · 查询条件展开收起
#### 功能验证点
##### 【P1】【TC-UI-PRODM-STD-003】【TP_PRODM_STD_011】展开后更多条件可见
- 前置条件:已进入缺货目录明细页
- 操作步骤:
1. 点击「展开」
2. 断言额外筛选字段进入可视区且可填写
3. 按钮文案变为「收起」
- 自动化断言:规划与 CSV `PRODM-STD-003` 及 `tests/spd/prodm-stockout-detail.spec.ts` 一致
###### 预期结果
展开后更多条件可见并可交互。
---
### 缺货目录明细 · 列表
#### 功能验证点
##### 【P0】【TC-UI-PRODM-STD-004】【TP_PRODM_STD_021】列表核心列完整
- 前置条件:已进入缺货目录明细页
- 操作步骤:
1. 断言表头含核心列(抽样):缺货明细、替代产品相关列(以现网为准)
2. 若有数据,抽样首行关键字段非空
- 自动化断言:规划与 CSV `PRODM-STD-004` 及 `tests/spd/prodm-stockout-detail.spec.ts` 一致
###### 预期结果
核心列完整;列表结构正确。
---
### 缺货目录明细 · 行内操作
#### 功能验证点
##### 【P0】【TC-UI-PRODM-STD-005】【TP_PRODM_STD_016】行内「详情」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「详情」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-STD-005` 及 `tests/spd/prodm-stockout-detail.spec.ts` 一致
###### 预期结果
行内「详情」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-STD-006】【TP_PRODM_STD_017】行内「查看」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「查看」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-STD-006` 及 `tests/spd/prodm-stockout-detail.spec.ts` 一致
###### 预期结果
行内「查看」可达;关闭后回到列表。
---
### 缺货目录明细 · 列表
#### 边界验证点
##### 【P1】【TC-UI-PRODM-STD-007】【TP_PRODM_STD_022】无匹配空态(mock反例)
- 前置条件:已进入缺货目录明细页
- 操作步骤:
1. 名称/编号类关键字填入 `__NOT_EXIST_PRODM__99999` 后查询
2. 断言表头仍在,0 行或空态,分页总数为 0
- 自动化断言:规划与 CSV `PRODM-STD-007` 及 `tests/spd/prodm-stockout-detail.spec.ts` 一致
###### 预期结果
无匹配不报错;不展示过期成功态数据。
---
### 缺货目录明细 · 分页
#### 功能验证点
##### 【P0】【TC-UI-PRODM-STD-008】【TP_PRODM_STD_023】有数据时总条数
- 前置条件:已进入缺货目录明细页
- 操作步骤:
1. 默认查询后读取「共 N 条」
2. 断言 N 与本次查询匹配条数规则一致(有数据或 0)
- 自动化断言:规划与 CSV `PRODM-STD-008` 及 `tests/spd/prodm-stockout-detail.spec.ts` 一致
###### 预期结果
「共 N 条」与查询结果一致。
---
##### 【P0】【TC-UI-PRODM-STD-009】【TP_PRODM_STD_024】切换至第 2 页
- 前置条件:总条数大于一页,否则 skip
- 操作步骤:
1. 记录第 1 页首行关键字段
2. 点击页码「2」或「下一页」
3. 断言页码高亮正确,首行数据与第 1 页不同
- 自动化断言:规划与 CSV `PRODM-STD-009` 及 `tests/spd/prodm-stockout-detail.spec.ts` 一致
###### 预期结果
翻页成功;数据更换。
---
##### 【P1】【TC-UI-PRODM-STD-010】【TP_PRODM_STD_025】切换20条每页页面正常且列表同步
- 前置条件:N>10 且切换前可见行数 > min(N,20),否则 skip(见 3.7)
- 操作步骤:
1. 记录「共 N 条」与当前页可见行数
2. 打开每页条数下拉,选择「20 条/页」
3. 断言分页器显示 20 条/页;N 不变;当前页行数=min(N,20) 且与切换前不同
- 自动化断言:规划与 CSV `PRODM-STD-010` 及 `tests/spd/prodm-stockout-detail.spec.ts` 一致
###### 预期结果
每页条数切换生效;总数不变;列表同步。
---
### 缺货目录明细 · 导出
#### 功能验证点
##### 【P0】【TC-UI-PRODM-STD-011】【TP_PRODM_STD_030】当前查询条件下导出
- 前置条件:已进入缺货目录明细页
- 操作步骤:
1. 先执行一次查询
2. 点击「导 出」或「导出」或「导出Excel」
3. 断言无未捕获异常(不校验文件内容)
- 自动化断言:规划与 CSV `PRODM-STD-011` 及 `tests/spd/prodm-stockout-detail.spec.ts` 一致
###### 预期结果
导出流程可启动。
---
### 缺货目录明细 · 打印
#### 功能验证点
##### 【P0】【TC-UI-PRODM-STD-012】【TP_PRODM_STD_032】按当前条件打印
- 前置条件:已进入缺货目录明细页
- 操作步骤:
1. 点击「打 印」或「打印产品码」等页面级打印入口
2. 断言可拉起对话框/预览/toast,无 error
- 自动化断言:规划与 CSV `PRODM-STD-012` 及 `tests/spd/prodm-stockout-detail.spec.ts` 一致
###### 预期结果
打印流程可启动。
---
### 缺货目录明细 · 替代产品
#### 功能验证点
##### 【P0】【TC-UI-PRODM-STD-013】【TP_PRODM_STD_033】打开「替代产品」对应弹窗/抽屉
- 前置条件:已进入缺货目录明细页
- 操作步骤:
1. 点击「替代产品」或等价入口
2. 断言弹窗/抽屉/详情可见,关键字段可交互
3. 可见取消/关闭/返回
- 自动化断言:规划与 CSV `PRODM-STD-013` 及 `tests/spd/prodm-stockout-detail.spec.ts` 一致
###### 预期结果
「替代产品」层打开;关键控件可见。
---
##### 【P1】【TC-UI-PRODM-STD-014】【TP_PRODM_STD_034】「替代产品」取消不落库
- 前置条件:已进入缺货目录明细页
- 操作步骤:
1. 打开「替代产品」,任意填写非空后点击「取 消」或关闭
2. 断言弹层关闭,列表行数与打开前一致(抽样)
- 自动化断言:规划与 CSV `PRODM-STD-014` 及 `tests/spd/prodm-stockout-detail.spec.ts` 一致
###### 预期结果
取消后列表无新增/无修改。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-STD-015】【TP_PRODM_STD_035】「替代产品」必填为空拦截
- 前置条件:该层存在必填提交,否则 skip
- 操作步骤:
1. 打开「替代产品」,必填项留空后点击「确 定」
2. 断言出现必填提示,弹层仍打开,列表不刷新为成功态
- 自动化断言:规划与 CSV `PRODM-STD-015` 及 `tests/spd/prodm-stockout-detail.spec.ts` 一致
###### 预期结果
确定被拦截;不落库。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 | **15** 条(P0=9 / P1=6) |
| 来源 | 从 42 条测试点选取可稳定自动化场景;H3 与测试点同名 |
| 未纳入自动化 | 会话过期、无菜单权限、菜单进入单条、未登录探针、接口失败注入、导出文件内容、写操作成功落库、弹窗全字段 |
| 列排序 | 测试点 1 条「各可排序列升序降序」;本 MD **每 sorter 列一条** `{列名}列升序降序切换`(3.6) |
| 每页条数 | 有 size-changer 时标题「切换20条每页…」,绑定 TP「切换每页条数」(3.7) |
| 单一职责 | 每条只断言一个核心业务结果 |
# 基础管理-产品管理-缺货目录维护 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-产品管理-缺货目录维护-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-产品管理-缺货目录维护-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/goods/paltform/stockoutManagement`
**定位器 YAML**:`locators/spd/prodm-stockout.locator.yaml`
**元素扫描**:`data/scan/prodm-stockout-elements.json`(162 项)
**关联规范**:`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-PRODM-019.md`
**版本**:2026-11-04
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/prodm-stockout.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:正例账号 `test_1` + `storageState`;具备「基础设置 → 产品管理 → 缺货目录维护」权限。
**页面约定**:整页渲染;定位在 `page` 上。
**隔离**:每用例独立 context(playwright-storage-state-isolation)。
**菜单导航**:菜单「基础设置 → 产品管理 → 缺货目录维护」;`openPath('/spd/basic/goods/paltform/stockoutManagement')` 并断言 URL,勿误入兄弟页。
**写操作**:写操作仅打开弹层后取消或做必填拦截,不提交成功落库;导出/打印不校验文件内容。
**动态取数**:查询后从首行读取 `${sampleCode}`/`${sampleName}`;mock:`__NOT_EXIST_PRODM__99999`。
---
## 基础设置 · 产品管理
### 缺货目录维护 · 快捷筛选查询
#### 功能验证点
##### 【P1】【TC-UI-PRODM-STO-001】【TP_PRODM_STO_005】快捷区重置恢复默认
- 前置条件:已进入缺货目录维护页
- 操作步骤:
1. 任意填写快捷区可见字段后点击「重 置」
2. 断言条件恢复默认;列表是否刷新按产品规则(未定则记待评审)
- 自动化断言:规划与 CSV `PRODM-STO-001` 及 `tests/spd/prodm-stockout.spec.ts` 一致
###### 预期结果
重置后条件恢复默认;页面无报错。
---
##### 【P0】【TC-UI-PRODM-STO-002】【TP_PRODM_STO_006】全量可见条件组合查询
- 前置条件:默认查询至少 1 条,否则 skip
- 操作步骤:
1. 默认查询 → 从首行提取全量样本(只填当前结果里有值的条件)
2. 快捷区可见非空条件全部填入后查询
3. 抽样首行同时满足全部已填条件;无未捕获异常
- 自动化断言:规划与 CSV `PRODM-STO-002` 及 `tests/spd/prodm-stockout.spec.ts` 一致
###### 预期结果
查询正常无报错;查询结果与查询条件一致。
---
### 缺货目录维护 · 列表
#### 功能验证点
##### 【P0】【TC-UI-PRODM-STO-003】【TP_PRODM_STO_016】列表核心列完整
- 前置条件:已进入缺货目录维护页
- 操作步骤:
1. 断言表头含核心列(抽样):缺货产品、维护状态、替代品等(以现网为准)
2. 若有数据,抽样首行关键字段非空
- 自动化断言:规划与 CSV `PRODM-STO-003` 及 `tests/spd/prodm-stockout.spec.ts` 一致
###### 预期结果
核心列完整;列表结构正确。
---
### 缺货目录维护 · 行内操作
#### 功能验证点
##### 【P0】【TC-UI-PRODM-STO-004】【TP_PRODM_STO_011】行内「详情」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「详情」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-STO-004` 及 `tests/spd/prodm-stockout.spec.ts` 一致
###### 预期结果
行内「详情」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-STO-005】【TP_PRODM_STO_012】行内「编辑」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「编辑」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-STO-005` 及 `tests/spd/prodm-stockout.spec.ts` 一致
###### 预期结果
行内「编辑」可达;关闭后回到列表。
---
### 缺货目录维护 · 列表
#### 边界验证点
##### 【P1】【TC-UI-PRODM-STO-006】【TP_PRODM_STO_017】无匹配空态(mock反例)
- 前置条件:已进入缺货目录维护页
- 操作步骤:
1. 名称/编号类关键字填入 `__NOT_EXIST_PRODM__99999` 后查询
2. 断言表头仍在,0 行或空态,分页总数为 0
- 自动化断言:规划与 CSV `PRODM-STO-006` 及 `tests/spd/prodm-stockout.spec.ts` 一致
###### 预期结果
无匹配不报错;不展示过期成功态数据。
---
### 缺货目录维护 · 分页
#### 功能验证点
##### 【P0】【TC-UI-PRODM-STO-007】【TP_PRODM_STO_018】有数据时总条数
- 前置条件:已进入缺货目录维护页
- 操作步骤:
1. 默认查询后读取「共 N 条」
2. 断言 N 与本次查询匹配条数规则一致(有数据或 0)
- 自动化断言:规划与 CSV `PRODM-STO-007` 及 `tests/spd/prodm-stockout.spec.ts` 一致
###### 预期结果
「共 N 条」与查询结果一致。
---
##### 【P0】【TC-UI-PRODM-STO-008】【TP_PRODM_STO_019】切换至第 2 页
- 前置条件:总条数大于一页,否则 skip
- 操作步骤:
1. 记录第 1 页首行关键字段
2. 点击页码「2」或「下一页」
3. 断言页码高亮正确,首行数据与第 1 页不同
- 自动化断言:规划与 CSV `PRODM-STO-008` 及 `tests/spd/prodm-stockout.spec.ts` 一致
###### 预期结果
翻页成功;数据更换。
---
##### 【P1】【TC-UI-PRODM-STO-009】【TP_PRODM_STO_020】切换20条每页页面正常且列表同步
- 前置条件:N>10 且切换前可见行数 > min(N,20),否则 skip(见 3.7)
- 操作步骤:
1. 记录「共 N 条」与当前页可见行数
2. 打开每页条数下拉,选择「20 条/页」
3. 断言分页器显示 20 条/页;N 不变;当前页行数=min(N,20) 且与切换前不同
- 自动化断言:规划与 CSV `PRODM-STO-009` 及 `tests/spd/prodm-stockout.spec.ts` 一致
###### 预期结果
每页条数切换生效;总数不变;列表同步。
---
### 缺货目录维护 · 导出
#### 功能验证点
##### 【P0】【TC-UI-PRODM-STO-010】【TP_PRODM_STO_025】当前查询条件下导出
- 前置条件:已进入缺货目录维护页
- 操作步骤:
1. 先执行一次查询
2. 点击「导 出」或「导出」或「导出Excel」
3. 断言无未捕获异常(不校验文件内容)
- 自动化断言:规划与 CSV `PRODM-STO-010` 及 `tests/spd/prodm-stockout.spec.ts` 一致
###### 预期结果
导出流程可启动。
---
### 缺货目录维护 · 缺货信息维护
#### 功能验证点
##### 【P0】【TC-UI-PRODM-STO-011】【TP_PRODM_STO_027】打开「缺货信息维护」对应弹窗/抽屉
- 前置条件:已进入缺货目录维护页
- 操作步骤:
1. 点击「缺货信息维护」或等价入口
2. 断言弹窗/抽屉/详情可见,关键字段可交互
3. 可见取消/关闭/返回
- 自动化断言:规划与 CSV `PRODM-STO-011` 及 `tests/spd/prodm-stockout.spec.ts` 一致
###### 预期结果
「缺货信息维护」层打开;关键控件可见。
---
##### 【P1】【TC-UI-PRODM-STO-012】【TP_PRODM_STO_028】「缺货信息维护」取消不落库
- 前置条件:已进入缺货目录维护页
- 操作步骤:
1. 打开「缺货信息维护」,任意填写非空后点击「取 消」或关闭
2. 断言弹层关闭,列表行数与打开前一致(抽样)
- 自动化断言:规划与 CSV `PRODM-STO-012` 及 `tests/spd/prodm-stockout.spec.ts` 一致
###### 预期结果
取消后列表无新增/无修改。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-STO-013】【TP_PRODM_STO_029】「缺货信息维护」必填为空拦截
- 前置条件:该层存在必填提交,否则 skip
- 操作步骤:
1. 打开「缺货信息维护」,必填项留空后点击「确 定」
2. 断言出现必填提示,弹层仍打开,列表不刷新为成功态
- 自动化断言:规划与 CSV `PRODM-STO-013` 及 `tests/spd/prodm-stockout.spec.ts` 一致
###### 预期结果
确定被拦截;不落库。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 | **13** 条(P0=8 / P1=5) |
| 来源 | 从 36 条测试点选取可稳定自动化场景;H3 与测试点同名 |
| 未纳入自动化 | 会话过期、无菜单权限、菜单进入单条、未登录探针、接口失败注入、导出文件内容、写操作成功落库、弹窗全字段 |
| 列排序 | 测试点 1 条「各可排序列升序降序」;本 MD **每 sorter 列一条** `{列名}列升序降序切换`(3.6) |
| 每页条数 | 有 size-changer 时标题「切换20条每页…」,绑定 TP「切换每页条数」(3.7) |
| 单一职责 | 每条只断言一个核心业务结果 |
# 基础管理-产品管理-请领出库渠道设置 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-产品管理-请领出库渠道设置-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-产品管理-请领出库渠道设置-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/goods/platform/apply/rules`
**定位器 YAML**:`locators/spd/prodm-req-channel.locator.yaml`
**元素扫描**:`data/scan/prodm-req-channel-elements.json`(165 项)
**关联规范**:`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-PRODM-010.md`
**版本**:2026-11-04
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/prodm-req-channel.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:正例账号 `test_1` + `storageState`;具备「基础设置 → 产品管理 → 请领出库渠道设置」权限。
**页面约定**:整页渲染;定位在 `page` 上。
**隔离**:每用例独立 context(playwright-storage-state-isolation)。
**菜单导航**:菜单「基础设置 → 产品管理 → 请领出库渠道设置」;`openPath('/spd/basic/goods/platform/apply/rules')` 并断言 URL,勿误入兄弟页。
**写操作**:写操作仅打开弹层后取消或做必填拦截,不提交成功落库;导出/打印不校验文件内容。
**动态取数**:查询后从首行读取 `${sampleCode}`/`${sampleName}`;mock:`__NOT_EXIST_PRODM__99999`。
---
## 基础设置 · 产品管理
### 请领出库渠道设置 · 左侧规则目录树
#### 功能验证点
##### 【P0】【TC-UI-PRODM-RCH-001】【TP_PRODM_RCH_005】树默认有选中或可展开节点
- 前置条件:已进入请领出库渠道设置页
- 操作步骤:
1. 断言左侧规则目录树可见且有选中或可展开节点
2. 读取选中节点名称 `${sampleTreeNode}`
3. 断言右侧列表/表单与当前节点范围一致或为空态
- 自动化断言:规划与 CSV `PRODM-RCH-001` 及 `tests/spd/prodm-req-channel.spec.ts` 一致
###### 预期结果
树有选中;右侧不展示其它节点数据为成功态。
---
##### 【P0】【TC-UI-PRODM-RCH-002】【TP_PRODM_RCH_007】切换树节点刷新右侧
- 前置条件:已进入请领出库渠道设置页
- 操作步骤:
1. 记录当前节点与右侧首行(若有)
2. 点选另一树节点(仅 1 个则 skip)
3. 断言右侧数据范围切换,不残留上一节点首行
- 自动化断言:规划与 CSV `PRODM-RCH-002` 及 `tests/spd/prodm-req-channel.spec.ts` 一致
###### 预期结果
切换节点后右侧刷新。
---
### 请领出库渠道设置 · 快捷筛选查询
#### 功能验证点
##### 【P1】【TC-UI-PRODM-RCH-003】【TP_PRODM_RCH_011】快捷区重置恢复默认
- 前置条件:已进入请领出库渠道设置页
- 操作步骤:
1. 任意填写快捷区可见字段后点击「重 置」
2. 断言条件恢复默认;列表是否刷新按产品规则(未定则记待评审)
- 自动化断言:规划与 CSV `PRODM-RCH-003` 及 `tests/spd/prodm-req-channel.spec.ts` 一致
###### 预期结果
重置后条件恢复默认;页面无报错。
---
##### 【P0】【TC-UI-PRODM-RCH-004】【TP_PRODM_RCH_012】全量可见条件组合查询
- 前置条件:默认查询至少 1 条,否则 skip
- 操作步骤:
1. 默认查询 → 从首行提取全量样本(只填当前结果里有值的条件)
2. 快捷区可见非空条件全部填入后查询
3. 抽样首行同时满足全部已填条件;无未捕获异常
- 自动化断言:规划与 CSV `PRODM-RCH-004` 及 `tests/spd/prodm-req-channel.spec.ts` 一致
###### 预期结果
查询正常无报错;查询结果与查询条件一致。
---
### 请领出库渠道设置 · 列表
#### 功能验证点
##### 【P0】【TC-UI-PRODM-RCH-005】【TP_PRODM_RCH_023】列表核心列完整
- 前置条件:已进入请领出库渠道设置页
- 操作步骤:
1. 断言表头含核心列(抽样):渠道规则、院区/库区、产品范围等(以现网为准)
2. 若有数据,抽样首行关键字段非空
- 自动化断言:规划与 CSV `PRODM-RCH-005` 及 `tests/spd/prodm-req-channel.spec.ts` 一致
###### 预期结果
核心列完整;列表结构正确。
---
### 请领出库渠道设置 · 行内操作
#### 功能验证点
##### 【P0】【TC-UI-PRODM-RCH-006】【TP_PRODM_RCH_017】行内「详情」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「详情」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-RCH-006` 及 `tests/spd/prodm-req-channel.spec.ts` 一致
###### 预期结果
行内「详情」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-RCH-007】【TP_PRODM_RCH_018】行内「编辑」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「编辑」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-RCH-007` 及 `tests/spd/prodm-req-channel.spec.ts` 一致
###### 预期结果
行内「编辑」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-RCH-008】【TP_PRODM_RCH_019】行内「日志」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「日志」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-RCH-008` 及 `tests/spd/prodm-req-channel.spec.ts` 一致
###### 预期结果
行内「日志」可达;关闭后回到列表。
---
### 请领出库渠道设置 · 列表
#### 功能验证点
##### 【P2】【TC-UI-PRODM-RCH-009】【TP_PRODM_RCH_024】列设置隐藏后再恢复
- 前置条件:列表表头已加载
- 操作步骤:
1. 默认查询后点击表格工具栏列设置(齿轮)
2. 取消勾选一列非核心字段并关闭面板,断言表头隐藏
3. 再次打开列设置勾选恢复并关闭,断言表头恢复
- 自动化断言:规划与 CSV `PRODM-RCH-009` 及 `tests/spd/prodm-req-channel.spec.ts` 一致
###### 预期结果
勾选状态与表头一致。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-RCH-010】【TP_PRODM_RCH_026】横向滚动与列对齐
- 前置条件:列表有数据且列超出视口,否则 skip
- 操作步骤:
1. 宽表场景下横向滚动使远侧列进入视口
2. 断言表头列数与数据列数一致、对齐无重叠
- 自动化断言:规划与 CSV `PRODM-RCH-010` 及 `tests/spd/prodm-req-channel.spec.ts` 一致
###### 预期结果
远侧列可进入视口;表头与数据列对齐。
---
##### 【P1】【TC-UI-PRODM-RCH-011】【TP_PRODM_RCH_025】无匹配空态(mock反例)
- 前置条件:已进入请领出库渠道设置页
- 操作步骤:
1. 名称/编号类关键字填入 `__NOT_EXIST_PRODM__99999` 后查询
2. 断言表头仍在,0 行或空态,分页总数为 0
- 自动化断言:规划与 CSV `PRODM-RCH-011` 及 `tests/spd/prodm-req-channel.spec.ts` 一致
###### 预期结果
无匹配不报错;不展示过期成功态数据。
---
### 请领出库渠道设置 · 分页
#### 功能验证点
##### 【P0】【TC-UI-PRODM-RCH-012】【TP_PRODM_RCH_027】有数据时总条数
- 前置条件:已进入请领出库渠道设置页
- 操作步骤:
1. 默认查询后读取「共 N 条」
2. 断言 N 与本次查询匹配条数规则一致(有数据或 0)
- 自动化断言:规划与 CSV `PRODM-RCH-012` 及 `tests/spd/prodm-req-channel.spec.ts` 一致
###### 预期结果
「共 N 条」与查询结果一致。
---
##### 【P0】【TC-UI-PRODM-RCH-013】【TP_PRODM_RCH_028】切换至第 2 页
- 前置条件:总条数大于一页,否则 skip
- 操作步骤:
1. 记录第 1 页首行关键字段
2. 点击页码「2」或「下一页」
3. 断言页码高亮正确,首行数据与第 1 页不同
- 自动化断言:规划与 CSV `PRODM-RCH-013` 及 `tests/spd/prodm-req-channel.spec.ts` 一致
###### 预期结果
翻页成功;数据更换。
---
##### 【P1】【TC-UI-PRODM-RCH-014】【TP_PRODM_RCH_029】切换20条每页页面正常且列表同步
- 前置条件:N>10 且切换前可见行数 > min(N,20),否则 skip(见 3.7)
- 操作步骤:
1. 记录「共 N 条」与当前页可见行数
2. 打开每页条数下拉,选择「20 条/页」
3. 断言分页器显示 20 条/页;N 不变;当前页行数=min(N,20) 且与切换前不同
- 自动化断言:规划与 CSV `PRODM-RCH-014` 及 `tests/spd/prodm-req-channel.spec.ts` 一致
###### 预期结果
每页条数切换生效;总数不变;列表同步。
---
### 请领出库渠道设置 · 导出
#### 功能验证点
##### 【P0】【TC-UI-PRODM-RCH-015】【TP_PRODM_RCH_034】当前查询条件下导出
- 前置条件:已进入请领出库渠道设置页
- 操作步骤:
1. 先执行一次查询
2. 点击「导 出」或「导出」或「导出Excel」
3. 断言无未捕获异常(不校验文件内容)
- 自动化断言:规划与 CSV `PRODM-RCH-015` 及 `tests/spd/prodm-req-channel.spec.ts` 一致
###### 预期结果
导出流程可启动。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 | **15** 条(P0=10 / P1=4 / P2=1) |
| 来源 | 从 39 条测试点选取可稳定自动化场景;H3 与测试点同名 |
| 未纳入自动化 | 会话过期、无菜单权限、菜单进入单条、未登录探针、接口失败注入、导出文件内容、写操作成功落库、弹窗全字段 |
| 列排序 | 测试点 1 条「各可排序列升序降序」;本 MD **每 sorter 列一条** `{列名}列升序降序切换`(3.6) |
| 每页条数 | 有 size-changer 时标题「切换20条每页…」,绑定 TP「切换每页条数」(3.7) |
| 单一职责 | 每条只断言一个核心业务结果 |
# 基础管理-产品管理-调价管理 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-产品管理-调价管理-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-产品管理-调价管理-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/goods/platform/price`
**定位器 YAML**:`locators/spd/prodm-price-adj.locator.yaml`
**元素扫描**:`data/scan/prodm-price-adj-elements.json`(225 项)
**关联规范**:`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-PRODM-013.md`
**版本**:2026-11-04
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/prodm-price-adj.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:正例账号 `test_1` + `storageState`;具备「基础设置 → 产品管理 → 调价管理」权限。
**页面约定**:整页渲染;定位在 `page` 上。
**隔离**:每用例独立 context(playwright-storage-state-isolation)。
**菜单导航**:菜单「基础设置 → 产品管理 → 调价管理」;`openPath('/spd/basic/goods/platform/price')` 并断言 URL,勿误入兄弟页。
**写操作**:写操作仅打开弹层后取消或做必填拦截,不提交成功落库;导出/打印不校验文件内容。
**动态取数**:查询后从首行读取 `${sampleCode}`/`${sampleName}`;mock:`__NOT_EXIST_PRODM__99999`。
---
## 基础设置 · 产品管理
### 调价管理 · 快捷筛选查询
#### 功能验证点
##### 【P1】【TC-UI-PRODM-PAD-001】【TP_PRODM_PAD_005】快捷区重置恢复默认
- 前置条件:已进入调价管理页
- 操作步骤:
1. 任意填写快捷区可见字段后点击「重 置」
2. 断言条件恢复默认;列表是否刷新按产品规则(未定则记待评审)
- 自动化断言:规划与 CSV `PRODM-PAD-001` 及 `tests/spd/prodm-price-adj.spec.ts` 一致
###### 预期结果
重置后条件恢复默认;页面无报错。
---
### 调价管理 · 高级筛选抽屉
#### 功能验证点
##### 【P0】【TC-UI-PRODM-PAD-002】【TP_PRODM_PAD_012】全量查询条件组合查询
- 前置条件:默认查询至少 1 条,否则 skip
- 操作步骤:
1. 默认查询 → 从首行提取全量样本(不写死业务数据,见 rules 3.4)
2. 快捷区填入样本中有值的可见字段
3. 高级筛选抽屉填入样本中所有非空字段(文本直接填、下拉选同值;禁用字段记录默认)
4. 「查询/筛选」后抽样首行;首行同时满足样本中全部已填字段
- 自动化断言:规划与 CSV `PRODM-PAD-002` 及 `tests/spd/prodm-price-adj.spec.ts` 一致
###### 预期结果
查询正常无报错;查询条件写值正常;查询结果与查询条件一致。
---
##### 【P0】【TC-UI-PRODM-PAD-003】【TP_PRODM_PAD_010】点击高级筛选打开抽屉
- 前置条件:已进入调价管理页
- 操作步骤:
1. 点击「高级筛选」
2. 断言抽屉标题为「高级筛选」,关键字段可交互
3. 关闭抽屉,快捷区条件不被误清空(以现网为准)
- 自动化断言:规划与 CSV `PRODM-PAD-003` 及 `tests/spd/prodm-price-adj.spec.ts` 一致
###### 预期结果
高级筛选抽屉可打开并关闭。
---
### 调价管理 · 列表
#### 功能验证点
##### 【P0】【TC-UI-PRODM-PAD-004】【TP_PRODM_PAD_021】列表核心列完整
- 前置条件:已进入调价管理页
- 操作步骤:
1. 断言表头含核心列(抽样):单号、制单/计划/实际生效时间、备注、状态、销售商、供应商等
2. 若有数据,抽样首行关键字段非空
- 自动化断言:规划与 CSV `PRODM-PAD-004` 及 `tests/spd/prodm-price-adj.spec.ts` 一致
###### 预期结果
核心列完整;列表结构正确。
---
### 调价管理 · 行内操作
#### 功能验证点
##### 【P0】【TC-UI-PRODM-PAD-005】【TP_PRODM_PAD_014】行内「再次调价」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「再次调价」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-PAD-005` 及 `tests/spd/prodm-price-adj.spec.ts` 一致
###### 预期结果
行内「再次调价」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-PAD-006】【TP_PRODM_PAD_015】行内「详情」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「详情」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-PAD-006` 及 `tests/spd/prodm-price-adj.spec.ts` 一致
###### 预期结果
行内「详情」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-PAD-007】【TP_PRODM_PAD_016】行内「打印」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「打印」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-PAD-007` 及 `tests/spd/prodm-price-adj.spec.ts` 一致
###### 预期结果
行内「打印」可达;关闭后回到列表。
---
### 调价管理 · 列表
#### 功能验证点
##### 【P2】【TC-UI-PRODM-PAD-008】【TP_PRODM_PAD_022】列设置隐藏后再恢复
- 前置条件:列表表头已加载
- 操作步骤:
1. 默认查询后点击表格工具栏列设置(齿轮)
2. 取消勾选一列非核心字段并关闭面板,断言表头隐藏
3. 再次打开列设置勾选恢复并关闭,断言表头恢复
- 自动化断言:规划与 CSV `PRODM-PAD-008` 及 `tests/spd/prodm-price-adj.spec.ts` 一致
###### 预期结果
勾选状态与表头一致。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-PAD-009】【TP_PRODM_PAD_024】横向滚动与列对齐
- 前置条件:列表有数据且列超出视口,否则 skip
- 操作步骤:
1. 宽表场景下横向滚动使远侧列进入视口
2. 断言表头列数与数据列数一致、对齐无重叠
- 自动化断言:规划与 CSV `PRODM-PAD-009` 及 `tests/spd/prodm-price-adj.spec.ts` 一致
###### 预期结果
远侧列可进入视口;表头与数据列对齐。
---
##### 【P1】【TC-UI-PRODM-PAD-010】【TP_PRODM_PAD_023】无匹配空态(mock反例)
- 前置条件:已进入调价管理页
- 操作步骤:
1. 名称/编号类关键字填入 `__NOT_EXIST_PRODM__99999` 后查询
2. 断言表头仍在,0 行或空态,分页总数为 0
- 自动化断言:规划与 CSV `PRODM-PAD-010` 及 `tests/spd/prodm-price-adj.spec.ts` 一致
###### 预期结果
无匹配不报错;不展示过期成功态数据。
---
### 调价管理 · 分页
#### 功能验证点
##### 【P0】【TC-UI-PRODM-PAD-011】【TP_PRODM_PAD_025】有数据时总条数
- 前置条件:已进入调价管理页
- 操作步骤:
1. 默认查询后读取「共 N 条」
2. 断言 N 与本次查询匹配条数规则一致(有数据或 0)
- 自动化断言:规划与 CSV `PRODM-PAD-011` 及 `tests/spd/prodm-price-adj.spec.ts` 一致
###### 预期结果
「共 N 条」与查询结果一致。
---
##### 【P0】【TC-UI-PRODM-PAD-012】【TP_PRODM_PAD_026】切换至第 2 页
- 前置条件:总条数大于一页,否则 skip
- 操作步骤:
1. 记录第 1 页首行关键字段
2. 点击页码「2」或「下一页」
3. 断言页码高亮正确,首行数据与第 1 页不同
- 自动化断言:规划与 CSV `PRODM-PAD-012` 及 `tests/spd/prodm-price-adj.spec.ts` 一致
###### 预期结果
翻页成功;数据更换。
---
##### 【P1】【TC-UI-PRODM-PAD-013】【TP_PRODM_PAD_027】切换20条每页页面正常且列表同步
- 前置条件:N>10 且切换前可见行数 > min(N,20),否则 skip(见 3.7)
- 操作步骤:
1. 记录「共 N 条」与当前页可见行数
2. 打开每页条数下拉,选择「20 条/页」
3. 断言分页器显示 20 条/页;N 不变;当前页行数=min(N,20) 且与切换前不同
- 自动化断言:规划与 CSV `PRODM-PAD-013` 及 `tests/spd/prodm-price-adj.spec.ts` 一致
###### 预期结果
每页条数切换生效;总数不变;列表同步。
---
### 调价管理 · 打印
#### 功能验证点
##### 【P0】【TC-UI-PRODM-PAD-014】【TP_PRODM_PAD_032】按当前条件打印
- 前置条件:已进入调价管理页
- 操作步骤:
1. 点击「打 印」或「打印产品码」等页面级打印入口
2. 断言可拉起对话框/预览/toast,无 error
- 自动化断言:规划与 CSV `PRODM-PAD-014` 及 `tests/spd/prodm-price-adj.spec.ts` 一致
###### 预期结果
打印流程可启动。
---
### 调价管理 · 新增
#### 功能验证点
##### 【P0】【TC-UI-PRODM-PAD-015】【TP_PRODM_PAD_035】打开「新增」对应弹窗/抽屉
- 前置条件:已进入调价管理页
- 操作步骤:
1. 点击「新增」或等价入口
2. 断言弹窗/抽屉/详情可见,关键字段可交互
3. 可见取消/关闭/返回
- 自动化断言:规划与 CSV `PRODM-PAD-015` 及 `tests/spd/prodm-price-adj.spec.ts` 一致
###### 预期结果
「新增」层打开;关键控件可见。
---
##### 【P1】【TC-UI-PRODM-PAD-016】【TP_PRODM_PAD_036】「新增」取消不落库
- 前置条件:已进入调价管理页
- 操作步骤:
1. 打开「新增」,任意填写非空后点击「取 消」或关闭
2. 断言弹层关闭,列表行数与打开前一致(抽样)
- 自动化断言:规划与 CSV `PRODM-PAD-016` 及 `tests/spd/prodm-price-adj.spec.ts` 一致
###### 预期结果
取消后列表无新增/无修改。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-PAD-017】【TP_PRODM_PAD_037】「新增」必填为空拦截
- 前置条件:该层存在必填提交,否则 skip
- 操作步骤:
1. 打开「新增」,必填项留空后点击「确 定」
2. 断言出现必填提示,弹层仍打开,列表不刷新为成功态
- 自动化断言:规划与 CSV `PRODM-PAD-017` 及 `tests/spd/prodm-price-adj.spec.ts` 一致
###### 预期结果
确定被拦截;不落库。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 | **17** 条(P0=10 / P1=6 / P2=1) |
| 来源 | 从 44 条测试点选取可稳定自动化场景;H3 与测试点同名 |
| 未纳入自动化 | 会话过期、无菜单权限、菜单进入单条、未登录探针、接口失败注入、导出文件内容、写操作成功落库、弹窗全字段 |
| 列排序 | 测试点 1 条「各可排序列升序降序」;本 MD **每 sorter 列一条** `{列名}列升序降序切换`(3.6) |
| 每页条数 | 有 size-changer 时标题「切换20条每页…」,绑定 TP「切换每页条数」(3.7) |
| 单一职责 | 每条只断言一个核心业务结果 |
# 基础管理-产品管理-院区产品设置 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-产品管理-院区产品设置-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-产品管理-院区产品设置-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/goods/paltform/area/calatog`
**定位器 YAML**:`locators/spd/prodm-campus.locator.yaml`
**元素扫描**:`data/scan/prodm-campus-elements.json`(180 项)
**关联规范**:`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-PRODM-007.md`
**版本**:2026-11-04
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/prodm-campus.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:正例账号 `test_1` + `storageState`;具备「基础设置 → 产品管理 → 院区产品设置」权限。
**页面约定**:整页渲染;定位在 `page` 上。
**隔离**:每用例独立 context(playwright-storage-state-isolation)。
**菜单导航**:菜单「基础设置 → 产品管理 → 院区产品设置」;`openPath('/spd/basic/goods/paltform/area/calatog')` 并断言 URL,勿误入兄弟页。
**写操作**:写操作仅打开弹层后取消或做必填拦截,不提交成功落库;导出/打印不校验文件内容。
**动态取数**:查询后从首行读取 `${sampleCode}`/`${sampleName}`;mock:`__NOT_EXIST_PRODM__99999`。
---
## 基础设置 · 产品管理
### 院区产品设置 · 左侧请领下发库区树
#### 功能验证点
##### 【P0】【TC-UI-PRODM-CAM-001】【TP_PRODM_CAM_005】树默认有选中或可展开节点
- 前置条件:已进入院区产品设置页
- 操作步骤:
1. 断言左侧请领下发库区树可见且有选中或可展开节点
2. 读取选中节点名称 `${sampleTreeNode}`
3. 断言右侧列表/表单与当前节点范围一致或为空态
- 自动化断言:规划与 CSV `PRODM-CAM-001` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
树有选中;右侧不展示其它节点数据为成功态。
---
##### 【P0】【TC-UI-PRODM-CAM-002】【TP_PRODM_CAM_007】切换树节点刷新右侧
- 前置条件:已进入院区产品设置页
- 操作步骤:
1. 记录当前节点与右侧首行(若有)
2. 点选另一树节点(仅 1 个则 skip)
3. 断言右侧数据范围切换,不残留上一节点首行
- 自动化断言:规划与 CSV `PRODM-CAM-002` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
切换节点后右侧刷新。
---
### 院区产品设置 · 快捷筛选查询
#### 功能验证点
##### 【P1】【TC-UI-PRODM-CAM-003】【TP_PRODM_CAM_011】快捷区重置恢复默认
- 前置条件:已进入院区产品设置页
- 操作步骤:
1. 任意填写快捷区可见字段后点击「重 置」
2. 断言条件恢复默认;列表是否刷新按产品规则(未定则记待评审)
- 自动化断言:规划与 CSV `PRODM-CAM-003` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
重置后条件恢复默认;页面无报错。
---
### 院区产品设置 · 高级筛选抽屉
#### 功能验证点
##### 【P0】【TC-UI-PRODM-CAM-004】【TP_PRODM_CAM_018】全量查询条件组合查询
- 前置条件:默认查询至少 1 条,否则 skip
- 操作步骤:
1. 默认查询 → 从首行提取全量样本(不写死业务数据,见 rules 3.4)
2. 快捷区填入样本中有值的可见字段
3. 高级筛选抽屉填入样本中所有非空字段(文本直接填、下拉选同值;禁用字段记录默认)
4. 「查询/筛选」后抽样首行;首行同时满足样本中全部已填字段
- 自动化断言:规划与 CSV `PRODM-CAM-004` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
查询正常无报错;查询条件写值正常;查询结果与查询条件一致。
---
##### 【P0】【TC-UI-PRODM-CAM-005】【TP_PRODM_CAM_016】点击高级筛选打开抽屉
- 前置条件:已进入院区产品设置页
- 操作步骤:
1. 点击「高级筛选」
2. 断言抽屉标题为「高级筛选」,关键字段可交互
3. 关闭抽屉,快捷区条件不被误清空(以现网为准)
- 自动化断言:规划与 CSV `PRODM-CAM-005` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
高级筛选抽屉可打开并关闭。
---
### 院区产品设置 · 列表
#### 功能验证点
##### 【P0】【TC-UI-PRODM-CAM-006】【TP_PRODM_CAM_026】列表核心列完整
- 前置条件:已进入院区产品设置页
- 操作步骤:
1. 断言表头含核心列(抽样):规格型号、耗材类型、默认上架货位、单位、库存上下限、单元含量、状态等
2. 若有数据,抽样首行关键字段非空
- 自动化断言:规划与 CSV `PRODM-CAM-006` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
核心列完整;列表结构正确。
---
### 院区产品设置 · 行内操作
#### 功能验证点
##### 【P0】【TC-UI-PRODM-CAM-007】【TP_PRODM_CAM_020】行内「详情」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「详情」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-CAM-007` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
行内「详情」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-CAM-008】【TP_PRODM_CAM_021】行内「编辑」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「编辑」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-CAM-008` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
行内「编辑」可达;关闭后回到列表。
---
##### 【P0】【TC-UI-PRODM-CAM-009】【TP_PRODM_CAM_022】行内「日志」可达(只读冒烟)
- 前置条件:列表至少 1 条
- 操作步骤:
1. 首行有数据时点击「日志」
2. 断言进入预期弹窗/抽屉/详情,可见取消/关闭/返回
3. 关闭弹层或点返回,列表仍可见
- 自动化断言:规划与 CSV `PRODM-CAM-009` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
行内「日志」可达;关闭后回到列表。
---
### 院区产品设置 · 列表
#### 功能验证点
##### 【P2】【TC-UI-PRODM-CAM-010】【TP_PRODM_CAM_027】列设置隐藏后再恢复
- 前置条件:列表表头已加载
- 操作步骤:
1. 默认查询后点击表格工具栏列设置(齿轮)
2. 取消勾选一列非核心字段并关闭面板,断言表头隐藏
3. 再次打开列设置勾选恢复并关闭,断言表头恢复
- 自动化断言:规划与 CSV `PRODM-CAM-010` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
勾选状态与表头一致。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-CAM-011】【TP_PRODM_CAM_029】横向滚动与列对齐
- 前置条件:列表有数据且列超出视口,否则 skip
- 操作步骤:
1. 宽表场景下横向滚动使远侧列进入视口
2. 断言表头列数与数据列数一致、对齐无重叠
- 自动化断言:规划与 CSV `PRODM-CAM-011` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
远侧列可进入视口;表头与数据列对齐。
---
##### 【P1】【TC-UI-PRODM-CAM-012】【TP_PRODM_CAM_028】无匹配空态(mock反例)
- 前置条件:已进入院区产品设置页
- 操作步骤:
1. 名称/编号类关键字填入 `__NOT_EXIST_PRODM__99999` 后查询
2. 断言表头仍在,0 行或空态,分页总数为 0
- 自动化断言:规划与 CSV `PRODM-CAM-012` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
无匹配不报错;不展示过期成功态数据。
---
### 院区产品设置 · 分页
#### 功能验证点
##### 【P0】【TC-UI-PRODM-CAM-013】【TP_PRODM_CAM_030】有数据时总条数
- 前置条件:已进入院区产品设置页
- 操作步骤:
1. 默认查询后读取「共 N 条」
2. 断言 N 与本次查询匹配条数规则一致(有数据或 0)
- 自动化断言:规划与 CSV `PRODM-CAM-013` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
「共 N 条」与查询结果一致。
---
##### 【P0】【TC-UI-PRODM-CAM-014】【TP_PRODM_CAM_031】切换至第 2 页
- 前置条件:总条数大于一页,否则 skip
- 操作步骤:
1. 记录第 1 页首行关键字段
2. 点击页码「2」或「下一页」
3. 断言页码高亮正确,首行数据与第 1 页不同
- 自动化断言:规划与 CSV `PRODM-CAM-014` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
翻页成功;数据更换。
---
##### 【P1】【TC-UI-PRODM-CAM-015】【TP_PRODM_CAM_032】切换20条每页页面正常且列表同步
- 前置条件:N>10 且切换前可见行数 > min(N,20),否则 skip(见 3.7)
- 操作步骤:
1. 记录「共 N 条」与当前页可见行数
2. 打开每页条数下拉,选择「20 条/页」
3. 断言分页器显示 20 条/页;N 不变;当前页行数=min(N,20) 且与切换前不同
- 自动化断言:规划与 CSV `PRODM-CAM-015` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
每页条数切换生效;总数不变;列表同步。
---
### 院区产品设置 · 导入医院产品
#### 功能验证点
##### 【P0】【TC-UI-PRODM-CAM-016】【TP_PRODM_CAM_037】打开「导入医院产品」对应弹窗/抽屉
- 前置条件:已进入院区产品设置页
- 操作步骤:
1. 点击「导入医院产品」或等价入口
2. 断言弹窗/抽屉/详情可见,关键字段可交互
3. 可见取消/关闭/返回
- 自动化断言:规划与 CSV `PRODM-CAM-016` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
「导入医院产品」层打开;关键控件可见。
---
##### 【P1】【TC-UI-PRODM-CAM-017】【TP_PRODM_CAM_038】「导入医院产品」取消不落库
- 前置条件:已进入院区产品设置页
- 操作步骤:
1. 打开「导入医院产品」,任意填写非空后点击「取 消」或关闭
2. 断言弹层关闭,列表行数与打开前一致(抽样)
- 自动化断言:规划与 CSV `PRODM-CAM-017` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
取消后列表无新增/无修改。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-CAM-018】【TP_PRODM_CAM_039】「导入医院产品」必填为空拦截
- 前置条件:该层存在必填提交,否则 skip
- 操作步骤:
1. 打开「导入医院产品」,必填项留空后点击「确 定」
2. 断言出现必填提示,弹层仍打开,列表不刷新为成功态
- 自动化断言:规划与 CSV `PRODM-CAM-018` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
确定被拦截;不落库。
---
### 院区产品设置 · 一键导入
#### 功能验证点
##### 【P0】【TC-UI-PRODM-CAM-019】【TP_PRODM_CAM_043】打开「一键导入」对应弹窗/抽屉
- 前置条件:已进入院区产品设置页
- 操作步骤:
1. 点击「一键导入」或等价入口
2. 断言弹窗/抽屉/详情可见,关键字段可交互
3. 可见取消/关闭/返回
- 自动化断言:规划与 CSV `PRODM-CAM-019` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
「一键导入」层打开;关键控件可见。
---
##### 【P1】【TC-UI-PRODM-CAM-020】【TP_PRODM_CAM_044】「一键导入」取消不落库
- 前置条件:已进入院区产品设置页
- 操作步骤:
1. 打开「一键导入」,任意填写非空后点击「取 消」或关闭
2. 断言弹层关闭,列表行数与打开前一致(抽样)
- 自动化断言:规划与 CSV `PRODM-CAM-020` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
取消后列表无新增/无修改。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-CAM-021】【TP_PRODM_CAM_045】「一键导入」必填为空拦截
- 前置条件:该层存在必填提交,否则 skip
- 操作步骤:
1. 打开「一键导入」,必填项留空后点击「确 定」
2. 断言出现必填提示,弹层仍打开,列表不刷新为成功态
- 自动化断言:规划与 CSV `PRODM-CAM-021` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
确定被拦截;不落库。
---
### 院区产品设置 · 批量调整
#### 功能验证点
##### 【P0】【TC-UI-PRODM-CAM-022】【TP_PRODM_CAM_049】打开「批量调整」对应弹窗/抽屉
- 前置条件:已进入院区产品设置页
- 操作步骤:
1. 点击「批量调整」或等价入口
2. 断言弹窗/抽屉/详情可见,关键字段可交互
3. 可见取消/关闭/返回
- 自动化断言:规划与 CSV `PRODM-CAM-022` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
「批量调整」层打开;关键控件可见。
---
##### 【P1】【TC-UI-PRODM-CAM-023】【TP_PRODM_CAM_050】「批量调整」取消不落库
- 前置条件:已进入院区产品设置页
- 操作步骤:
1. 打开「批量调整」,任意填写非空后点击「取 消」或关闭
2. 断言弹层关闭,列表行数与打开前一致(抽样)
- 自动化断言:规划与 CSV `PRODM-CAM-023` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
取消后列表无新增/无修改。
---
#### 边界验证点
##### 【P1】【TC-UI-PRODM-CAM-024】【TP_PRODM_CAM_051】「批量调整」必填为空拦截
- 前置条件:该层存在必填提交,否则 skip
- 操作步骤:
1. 打开「批量调整」,必填项留空后点击「确 定」
2. 断言出现必填提示,弹层仍打开,列表不刷新为成功态
- 自动化断言:规划与 CSV `PRODM-CAM-024` 及 `tests/spd/prodm-campus.spec.ts` 一致
###### 预期结果
确定被拦截;不落库。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 | **24** 条(P0=13 / P1=10 / P2=1) |
| 来源 | 从 58 条测试点选取可稳定自动化场景;H3 与测试点同名 |
| 未纳入自动化 | 会话过期、无菜单权限、菜单进入单条、未登录探针、接口失败注入、导出文件内容、写操作成功落库、弹窗全字段 |
| 列排序 | 测试点 1 条「各可排序列升序降序」;本 MD **每 sorter 列一条** `{列名}列升序降序切换`(3.6) |
| 每页条数 | 有 size-changer 时标题「切换20条每页…」,绑定 TP「切换每页条数」(3.7) |
| 单一职责 | 每条只断言一个核心业务结果 |
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment