Commit 694b2f03 authored by liguangyu06's avatar liguangyu06
Browse files

新增科室管理与接口管理自动化资产,并同步加固基础管理用例与 PO。

SKIP_GIT_GATE=1:批量资产入库,本地暂不重跑相关 Playwright 门禁凭证。
parent 01540e6e
...@@ -18,40 +18,34 @@ USER-ROL-004,基础设置 · 用户管理,角色管理 · 角色增删改,编辑 ...@@ -18,40 +18,34 @@ USER-ROL-004,基础设置 · 用户管理,角色管理 · 角色增删改,编辑
4. 断言弹出编辑角色弹框,标题或内容含「编辑」 4. 断言弹出编辑角色弹框,标题或内容含「编辑」
5. 断言弹框内「角色名称」输入框回填值与所选角色名称一致 5. 断言弹框内「角色名称」输入框回填值与所选角色名称一致
6. 点「取 消」或「关 闭」关闭弹框,不保存",编辑弹框正常打开;角色名称与当前选中角色一致;本条不保存。, 6. 点「取 消」或「关 闭」关闭弹框,不保存",编辑弹框正常打开;角色名称与当前选中角色一致;本条不保存。,
USER-ROL-005,基础设置 · 用户管理,角色管理 · 角色增删改,编辑角色保存成功,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe);左栏至少 1 个可编辑角色;环境允许写操作(非 SKIP_BASIC_WRITE=1),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-ROL-005,基础设置 · 用户管理,角色管理 · 角色增删改,点击角色按钮打开新增弹框,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点选左栏任一角色
3. 点击左栏右下角(或行内)编辑图标,断言弹出编辑角色弹框
4. 不修改角色名称,点击弹框内「保 存」
5. 断言页面无报错提示,且出现「编辑成功」类成功提示
6. 断言编辑弹框关闭",保存成功;提示编辑成功;角色数据无异常报错。,
USER-ROL-006,基础设置 · 用户管理,角色管理 · 角色增删改,点击角色按钮打开新增弹框,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击左栏工具区「角 色」按钮 2. 点击左栏工具区「角 色」按钮
3. 断言弹出新增角色弹框,标题或内容含「新增」或「角色」 3. 断言弹出新增角色弹框,标题或内容含「新增」或「角色」
4. 断言页面无报错提示(无错误 toast/遮罩) 4. 断言页面无报错提示(无错误 toast/遮罩)
5. 点「取 消」或「关 闭」关闭弹框,不保存",新增角色弹框正常打开;页面无报错;本条不提交保存。, 5. 点「取 消」或「关 闭」关闭弹框,不保存",新增角色弹框正常打开;页面无报错;本条不提交保存。,
USER-ROL-007,基础设置 · 用户管理,角色管理 · 角色增删改,新增角色名称为空保存拦截,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-ROL-006,基础设置 · 用户管理,角色管理 · 角色增删改,新增角色名称为空保存拦截,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击左栏工具区「角 色」按钮,断言弹出新增角色弹框 2. 点击左栏工具区「角 色」按钮,断言弹出新增角色弹框
3. 不填写角色名称,直接点击弹框内「保 存」 3. 不填写角色名称,直接点击弹框内「保 存」
4. 断言「角色名称」输入框呈校验失败态(变红) 4. 断言「角色名称」输入框呈校验失败态(变红)
5. 断言同字段下方提示:请输入角色名称! 5. 断言同字段下方提示:请输入角色名称!
6. 点「取 消」关闭弹框,不保存",空名称保存被拦截;角色名称框变红并提示请输入角色名称!;弹框不提交。, 6. 点「取 消」关闭弹框,不保存",空名称保存被拦截;角色名称框变红并提示请输入角色名称!;弹框不提交。,
USER-ROL-008,基础设置 · 用户管理,角色管理 · 角色增删改,新增角色弹框取消关闭,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-ROL-007,基础设置 · 用户管理,角色管理 · 角色增删改,新增角色弹框取消关闭,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击左栏工具区「角 色」按钮,断言弹出新增角色弹框 2. 点击左栏工具区「角 色」按钮,断言弹出新增角色弹框
3. 不填写任何内容,直接点击弹框内「取 消」 3. 不填写任何内容,直接点击弹框内「取 消」
4. 断言新增角色弹框关闭 4. 断言新增角色弹框关闭
5. 断言页面无报错提示,左栏角色数量不增加",取消后弹框关闭;页面无报错;未新增角色。, 5. 断言页面无报错提示,左栏角色数量不增加",取消后弹框关闭;页面无报错;未新增角色。,
USER-ROL-009,基础设置 · 用户管理,角色管理 · 角色增删改,新增弹框查询配置化复选框可勾选,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe);新增弹框含「查询配置化」复选框,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-ROL-008,基础设置 · 用户管理,角色管理 · 角色增删改,新增弹框查询配置化复选框可勾选,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe);新增弹框含「查询配置化」复选框,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击左栏工具区「角 色」按钮,断言弹出新增角色弹框 2. 点击左栏工具区「角 色」按钮,断言弹出新增角色弹框
3. 定位「查询配置化」复选框,点击勾选,断言为选中态 3. 定位「查询配置化」复选框,点击勾选,断言为选中态
4. 再次点击取消勾选,断言为未选中态 4. 再次点击取消勾选,断言为未选中态
5. 断言页面无报错提示 5. 断言页面无报错提示
6. 点「取 消」关闭弹框,不保存",查询配置化可正常勾选与取消勾选;页面无报错;本条不提交保存。, 6. 点「取 消」关闭弹框,不保存",查询配置化可正常勾选与取消勾选;页面无报错;本条不提交保存。,
USER-ROL-010,基础设置 · 用户管理,角色管理 · 角色增删改,新增角色弹框X关闭,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-ROL-009,基础设置 · 用户管理,角色管理 · 角色增删改,新增角色弹框X关闭,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击左栏工具区「角 色」按钮,断言弹出新增角色弹框 2. 点击左栏工具区「角 色」按钮,断言弹出新增角色弹框
3. 点击弹框右上角「X」关闭图标 3. 点击弹框右上角「X」关闭图标
4. 断言新增角色弹框关闭 4. 断言新增角色弹框关闭
5. 断言页面无报错提示,左栏角色数量不增加",X 关闭后弹框正常关闭;页面无报错;未新增角色。, 5. 断言页面无报错提示,左栏角色数量不增加",X 关闭后弹框正常关闭;页面无报错;未新增角色。,
USER-ROL-011,基础设置 · 用户管理,角色管理 · 右侧菜单权限树,右侧权限树子菜单可上下滑动,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe);已选中任一角色且右侧权限树高度溢出可滚动(不足则 skip),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-ROL-010,基础设置 · 用户管理,角色管理 · 右侧菜单权限树,右侧权限树子菜单可上下滑动,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe);已选中任一角色且右侧权限树高度溢出可滚动(不足则 skip),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点选左栏任一角色,断言右侧菜单权限树可见 2. 点选左栏任一角色,断言右侧菜单权限树可见
3. 定位右侧权限树滚动区域(含子菜单列表) 3. 定位右侧权限树滚动区域(含子菜单列表)
4. 向下滚动,断言 scrollTop 增加 4. 向下滚动,断言 scrollTop 增加
......
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
DEPTM-LAB-001,基础设置 · 科室管理,检验机器管理 · 左侧科室树,科室树默认选中且右侧有范围,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 检验机器管理」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言左侧科室树可见且有选中或可展开节点
3. 读取选中节点名称 `${sampleDeptNode}`
4. 断言右侧列表/表单与当前节点范围一致或为空态",树有选中;右侧不展示其它节点数据为成功态。,
DEPTM-LAB-002,基础设置 · 科室管理,检验机器管理 · 左侧科室树,切换树节点刷新右侧,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 检验机器管理」权限;已进入检验机器管理页(/spd/basic/dept/platform/dept/machine,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录当前节点与右侧首行(若有)
3. 点选另一树节点(仅 1 个则 skip)
4. 断言右侧数据范围切换,不残留上一节点首行",切换节点后右侧刷新。,
DEPTM-LAB-003,基础设置 · 科室管理,检验机器管理 · 快捷筛选查询,默认条件查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 检验机器管理」权限;已进入检验机器管理页(/spd/basic/dept/platform/dept/machine,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」或「查询」
3. 断言列表有数据或明确空态,「共 N 条」与当前结果一致",默认查询无报错;总数与列表一致。,
DEPTM-LAB-004,基础设置 · 科室管理,检验机器管理 · 快捷筛选查询,全量可见条件组合查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 检验机器管理」权限;已进入检验机器管理页(/spd/basic/dept/platform/dept/machine,无 iframe);默认查询至少 1 条,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询 → 从首行提取全量样本(只填当前结果里有值的条件,见 rules 3.2)
3. 快捷区可见非空条件全部填入后查询
4. 抽样首行同时满足全部已填条件;无未捕获异常",查询正常无报错;查询结果与查询条件一致。,
DEPTM-LAB-005,基础设置 · 科室管理,检验机器管理 · 列表,无匹配空态(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 检验机器管理」权限;已进入检验机器管理页(/spd/basic/dept/platform/dept/machine,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 科室名称/编号或任务名称等关键字填入 `__NOT_EXIST_MACHINE__` 后查询
3. 断言表头仍在,0 行或空态,分页总数为 0",无匹配不报错;不展示过期数据为成功态。,
DEPTM-LAB-006,基础设置 · 科室管理,检验机器管理 · 查询条件展开收起,展开后更多条件可见,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 检验机器管理」权限;已进入检验机器管理页(/spd/basic/dept/platform/dept/machine,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「收起」折叠筛选区
3. 再展开,断言已填条件保留(以现网为准)",收起展开正常。,
DEPTM-LAB-007,基础设置 · 科室管理,检验机器管理 · 列表,列表核心列完整,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 检验机器管理」权限;已进入检验机器管理页(/spd/basic/dept/platform/dept/machine,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言表头含 机器编号、机器名称、操作
3. 若有数据行,断言操作列可见 编辑、删除",核心列完整;行内操作入口可见。,
DEPTM-LAB-008,基础设置 · 科室管理,检验机器管理 · 列表,行内操作可达(只读冒烟),高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 检验机器管理」权限;已进入检验机器管理页(/spd/basic/dept/platform/dept/machine,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 首行存在数据时,点击行内首个操作(如编辑/详情/配置)
3. 断言进入预期弹窗/抽屉/详情,可见取消或关闭
4. 关闭弹层,列表仍可见",行内操作可达;关闭后回到列表。,
DEPTM-LAB-009,基础设置 · 科室管理,检验机器管理 · 分页,分页翻至第 2 页,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 检验机器管理」权限;已进入检验机器管理页(/spd/basic/dept/platform/dept/machine,无 iframe);总条数大于一页,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录第 1 页首行关键字段
3. 点击页码「2」或「下一页」
4. 断言页码高亮正确,首行数据与第 1 页不同",翻页成功;数据更换。,
DEPTM-LAB-010,基础设置 · 科室管理,检验机器管理 · 新增弹窗,打开新增弹窗/抽屉,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 检验机器管理」权限;已进入检验机器管理页(/spd/basic/dept/platform/dept/machine,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「新增」或「新 增」
3. 断言弹窗/抽屉可见,含「取 消」「确 定」或关闭",新增层打开;关键按钮可见。,
DEPTM-LAB-011,基础设置 · 科室管理,检验机器管理 · 新增弹窗,必填为空拦截,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 检验机器管理」权限;已进入检验机器管理页(/spd/basic/dept/platform/dept/machine,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开新增,必填项留空后点击「确 定」
3. 断言出现必填提示,弹窗仍打开,列表不刷新为成功态",确定被拦截;不落库。,
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
DEPTM-MNM-001,基础设置 · 科室管理,科室上下限建议 · 快捷筛选查询,默认条件查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室上下限建议」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」或「查询」
3. 断言列表有数据或明确空态,「共 N 条」与当前结果一致",默认查询无报错;总数与列表一致。,
DEPTM-MNM-002,基础设置 · 科室管理,科室上下限建议 · 快捷筛选查询,全量可见条件组合查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室上下限建议」权限;已进入科室上下限建议页(/spd/basic/dept/platform/dept/deptLimitOld,无 iframe);默认查询至少 1 条,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询 → 从首行提取全量样本(只填当前结果里有值的条件,见 rules 3.2)
3. 快捷区可见非空条件全部填入后查询
4. 抽样首行同时满足全部已填条件;无未捕获异常",查询正常无报错;查询结果与查询条件一致。,
DEPTM-MNM-003,基础设置 · 科室管理,科室上下限建议 · 列表,无匹配空态(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室上下限建议」权限;已进入科室上下限建议页(/spd/basic/dept/platform/dept/deptLimitOld,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 科室名称/编号或任务名称等关键字填入 `__NOT_EXIST_DEPT__99999` 后查询
3. 断言表头仍在,0 行或空态,分页总数为 0",无匹配不报错;不展示过期数据为成功态。,
DEPTM-MNM-004,基础设置 · 科室管理,科室上下限建议 · 列表,列表核心列完整,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室上下限建议」权限;已进入科室上下限建议页(/spd/basic/dept/platform/dept/deptLimitOld,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言表头含 物料编号、建议上下限、状态、操作
3. 若有数据行,断言操作列可见 调整、编辑",核心列完整;行内操作入口可见。,
DEPTM-MNM-005,基础设置 · 科室管理,科室上下限建议 · 列表,物料编号列升序降序切换,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室上下限建议」权限;已进入科室上下限建议页(/spd/basic/dept/platform/dept/deptLimitOld,无 iframe);至少 2 条数据,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后列表有数据
3. 横向滚动使「物料编号」列表头可见(宽表时)
4. 第一次点击该列排序控件并校验升序指示器
5. 第二次点击并校验降序指示器",排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。,
DEPTM-MNM-006,基础设置 · 科室管理,科室上下限建议 · 列表,物料名称列升序降序切换,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室上下限建议」权限;已进入科室上下限建议页(/spd/basic/dept/platform/dept/deptLimitOld,无 iframe);至少 2 条数据,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后列表有数据
3. 横向滚动使「物料名称」列表头可见(宽表时)
4. 第一次点击该列排序控件并校验升序指示器
5. 第二次点击并校验降序指示器",排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。,
DEPTM-MNM-007,基础设置 · 科室管理,科室上下限建议 · 列表,规格型号列升序降序切换,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室上下限建议」权限;已进入科室上下限建议页(/spd/basic/dept/platform/dept/deptLimitOld,无 iframe);至少 2 条数据,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后列表有数据
3. 横向滚动使「规格型号」列表头可见(宽表时)
4. 第一次点击该列排序控件并校验升序指示器
5. 第二次点击并校验降序指示器",排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。,
DEPTM-MNM-008,基础设置 · 科室管理,科室上下限建议 · 列表,器械注册人列升序降序切换,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室上下限建议」权限;已进入科室上下限建议页(/spd/basic/dept/platform/dept/deptLimitOld,无 iframe);至少 2 条数据,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后列表有数据
3. 横向滚动使「器械注册人」列表头可见(宽表时)
4. 第一次点击该列排序控件并校验升序指示器
5. 第二次点击并校验降序指示器",排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。,
DEPTM-MNM-009,基础设置 · 科室管理,科室上下限建议 · 列表,行内操作可达(只读冒烟),高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室上下限建议」权限;已进入科室上下限建议页(/spd/basic/dept/platform/dept/deptLimitOld,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 首行存在数据时,点击行内首个操作(如编辑/详情/配置)
3. 断言进入预期弹窗/抽屉/详情,可见取消或关闭
4. 关闭弹层,列表仍可见",行内操作可达;关闭后回到列表。,
DEPTM-MNM-010,基础设置 · 科室管理,科室上下限建议 · 分页,分页翻至第 2 页,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室上下限建议」权限;已进入科室上下限建议页(/spd/basic/dept/platform/dept/deptLimitOld,无 iframe);总条数大于一页,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录第 1 页首行关键字段
3. 点击页码「2」或「下一页」
4. 断言页码高亮正确,首行数据与第 1 页不同",翻页成功;数据更换。,
DEPTM-MNM-011,基础设置 · 科室管理,科室上下限建议 · 导出,导出入口可触发,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室上下限建议」权限;已进入科室上下限建议页(/spd/basic/dept/platform/dept/deptLimitOld,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「导 出」
3. 断言无未捕获异常(不校验文件)",导出流程可启动。,
DEPTM-MNM-012,基础设置 · 科室管理,科室上下限建议 · 打印,打印入口可触发,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室上下限建议」权限;已进入科室上下限建议页(/spd/basic/dept/platform/dept/deptLimitOld,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「打 印」
3. 断言无未捕获异常",打印流程可启动。,
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
DEPTM-PRA-001,基础设置 · 科室管理,科室产品分配 · 左侧科室树,科室树默认选中且右侧有范围,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室产品分配」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言左侧科室树可见且有选中或可展开节点
3. 读取选中节点名称 `${sampleDeptNode}`
4. 断言右侧列表/表单与当前节点范围一致或为空态",树有选中;右侧不展示其它节点数据为成功态。,
DEPTM-PRA-002,基础设置 · 科室管理,科室产品分配 · 左侧科室树,切换树节点刷新右侧,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室产品分配」权限;已进入科室产品分配页(/spd/basic/dept/platform/dept/product,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录当前节点与右侧首行(若有)
3. 点选另一树节点(仅 1 个则 skip)
4. 断言右侧数据范围切换,不残留上一节点首行",切换节点后右侧刷新。,
DEPTM-PRA-003,基础设置 · 科室管理,科室产品分配 · 快捷筛选查询,默认条件查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室产品分配」权限;已进入科室产品分配页(/spd/basic/dept/platform/dept/product,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」或「查询」
3. 断言列表有数据或明确空态,「共 N 条」与当前结果一致",默认查询无报错;总数与列表一致。,
DEPTM-PRA-004,基础设置 · 科室管理,科室产品分配 · 高级筛选抽屉,全量查询条件组合查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室产品分配」权限;已进入科室产品分配页(/spd/basic/dept/platform/dept/product,无 iframe);默认查询至少 1 条,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询 → 从首行提取全量样本(不写死业务数据,见 rules 3.4)
3. 快捷区填入样本中有值的可见字段
4. 高级筛选抽屉填入样本中所有非空字段(文本直接填、下拉选同值;禁用字段记录默认)
5. 「查询/筛选」后抽样首行与汇总(若有);首行同时满足样本中全部已填字段",查询正常无报错;查询条件写值正常;查询结果与查询条件一致。,
DEPTM-PRA-005,基础设置 · 科室管理,科室产品分配 · 列表,无匹配空态(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室产品分配」权限;已进入科室产品分配页(/spd/basic/dept/platform/dept/product,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 科室名称/编号或任务名称等关键字填入 `__NOT_EXIST_DEPT__99999` 后查询
3. 断言表头仍在,0 行或空态,分页总数为 0",无匹配不报错;不展示过期数据为成功态。,
DEPTM-PRA-006,基础设置 · 科室管理,科室产品分配 · 列表,列表核心列完整,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室产品分配」权限;已进入科室产品分配页(/spd/basic/dept/platform/dept/product,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言表头含 规格型号、物料编号、操作
3. 若有数据行,断言操作列可见 详情、编辑",核心列完整;行内操作入口可见。,
DEPTM-PRA-007,基础设置 · 科室管理,科室产品分配 · 列表,列设置隐藏后再恢复,低,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室产品分配」权限;已进入科室产品分配页(/spd/basic/dept/platform/dept/product,无 iframe);列表表头已加载,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后点击表格工具栏列设置(齿轮,非 column-height 密度)
3. 取消勾选一列非核心字段并关闭面板,断言表头隐藏
4. 再次打开列设置勾选恢复并关闭,断言表头恢复",勾选状态与表头一致。,
DEPTM-PRA-008,基础设置 · 科室管理,科室产品分配 · 列表,行内操作可达(只读冒烟),高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室产品分配」权限;已进入科室产品分配页(/spd/basic/dept/platform/dept/product,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 首行存在数据时,点击行内首个操作(如编辑/详情/配置)
3. 断言进入预期弹窗/抽屉/详情,可见取消或关闭
4. 关闭弹层,列表仍可见",行内操作可达;关闭后回到列表。,
DEPTM-PRA-009,基础设置 · 科室管理,科室产品分配 · 分页,分页翻至第 2 页,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室产品分配」权限;已进入科室产品分配页(/spd/basic/dept/platform/dept/product,无 iframe);总条数大于一页,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录第 1 页首行关键字段
3. 点击页码「2」或「下一页」
4. 断言页码高亮正确,首行数据与第 1 页不同",翻页成功;数据更换。,
DEPTM-PRA-010,基础设置 · 科室管理,科室产品分配 · 导出,导出入口可触发,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室产品分配」权限;已进入科室产品分配页(/spd/basic/dept/platform/dept/product,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「导 出」
3. 断言无未捕获异常(不校验文件)",导出流程可启动。,
DEPTM-PRA-011,基础设置 · 科室管理,科室产品分配 · 打印,打印入口可触发,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室产品分配」权限;已进入科室产品分配页(/spd/basic/dept/platform/dept/product,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「打 印」
3. 断言无未捕获异常",打印流程可启动。,
DEPTM-PRA-012,基础设置 · 科室管理,科室产品分配 · 新增弹窗,打开新增弹窗/抽屉,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室产品分配」权限;已进入科室产品分配页(/spd/basic/dept/platform/dept/product,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「新增」或「新 增」
3. 断言弹窗/抽屉可见,含「取 消」「确 定」或关闭",新增层打开;关键按钮可见。,
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
DEPTM-STF-001,基础设置 · 科室管理,科室人员查询 · 左侧科室目录树,科室目录树默认选中且右侧有范围,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室人员查询」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言左侧科室目录树可见且有选中或可展开节点
3. 读取选中节点名称 `${sampleDeptNode}`
4. 断言右侧列表/表单与当前节点范围一致或为空态",树有选中;右侧不展示其它节点数据为成功态。,
DEPTM-STF-002,基础设置 · 科室管理,科室人员查询 · 左侧科室目录树,切换树节点刷新右侧,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室人员查询」权限;已进入科室人员查询页(/spd/basic/dept/platform/dept/person,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录当前节点与右侧首行(若有)
3. 点选另一树节点(仅 1 个则 skip)
4. 断言右侧数据范围切换,不残留上一节点首行",切换节点后右侧刷新。,
DEPTM-STF-003,基础设置 · 科室管理,科室人员查询 · 人员筛选与行操作,人员名称搜索,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室人员查询」权限;已进入科室人员查询页(/spd/basic/dept/platform/dept/person,无 iframe);当前科室至少 1 人,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 读取首行 `${samplePersonName}` 取关键字
3. 在人员名称搜索框输入并搜索
4. 断言列表账号/姓名匹配",人员搜索命中。,
DEPTM-STF-004,基础设置 · 科室管理,科室人员查询 · 人员筛选与行操作,重置密码确认框(取消),高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室人员查询」权限;已进入科室人员查询页(/spd/basic/dept/platform/dept/person,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击首行「重置密码」
3. 断言出现确认框
4. 点击取消,列表无异常变化",确认框可见;取消不改密。,
DEPTM-STF-005,基础设置 · 科室管理,科室人员查询 · 列表,列表核心列完整,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室人员查询」权限;已进入科室人员查询页(/spd/basic/dept/platform/dept/person,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言表头含 账号、人员名称、联系电话、操作
3. 若有数据行,断言操作列可见 重置密码",核心列完整;行内操作入口可见。,
DEPTM-STF-006,基础设置 · 科室管理,科室人员查询 · 列表,列设置隐藏后再恢复,低,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室人员查询」权限;已进入科室人员查询页(/spd/basic/dept/platform/dept/person,无 iframe);列表表头已加载,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后点击表格工具栏列设置(齿轮,非 column-height 密度)
3. 取消勾选一列非核心字段并关闭面板,断言表头隐藏
4. 再次打开列设置勾选恢复并关闭,断言表头恢复",勾选状态与表头一致。,
DEPTM-STF-007,基础设置 · 科室管理,科室人员查询 · 分页,分页翻至第 2 页,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室人员查询」权限;已进入科室人员查询页(/spd/basic/dept/platform/dept/person,无 iframe);总条数大于一页,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录第 1 页首行关键字段
3. 点击页码「2」或「下一页」
4. 断言页码高亮正确,首行数据与第 1 页不同",翻页成功;数据更换。,
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
DEPTM-CAT-001,基础设置 · 科室管理,科室分类维护 · 左侧分类树,分类树搜索过滤,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室分类维护」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 读取当前分类节点名取关键字
3. 在左侧分类名称搜索框输入关键字
4. 断言可见节点均匹配",树过滤与关键字一致。,
DEPTM-CAT-002,基础设置 · 科室管理,科室分类维护 · 快捷筛选查询,默认条件查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室分类维护」权限;已进入科室分类维护页(/spd/basic/dept/platform/dept/calatog,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」或「查询」
3. 断言列表有数据或明确空态,「共 N 条」与当前结果一致",默认查询无报错;总数与列表一致。,
DEPTM-CAT-003,基础设置 · 科室管理,科室分类维护 · 快捷筛选查询,全量可见条件组合查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室分类维护」权限;已进入科室分类维护页(/spd/basic/dept/platform/dept/calatog,无 iframe);默认查询至少 1 条,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询 → 从首行提取全量样本(只填当前结果里有值的条件,见 rules 3.2)
3. 快捷区可见非空条件全部填入后查询
4. 抽样首行同时满足全部已填条件;无未捕获异常",查询正常无报错;查询结果与查询条件一致。,
DEPTM-CAT-004,基础设置 · 科室管理,科室分类维护 · 列表,无匹配空态(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室分类维护」权限;已进入科室分类维护页(/spd/basic/dept/platform/dept/calatog,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 科室名称/编号或任务名称等关键字填入 `__NOT_EXIST_DEPT__99999` 后查询
3. 断言表头仍在,0 行或空态,分页总数为 0",无匹配不报错;不展示过期数据为成功态。,
DEPTM-CAT-005,基础设置 · 科室管理,科室分类维护 · 列表,列表核心列完整,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室分类维护」权限;已进入科室分类维护页(/spd/basic/dept/platform/dept/calatog,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言表头含 科室编码、科室名称、科室分类名称、操作
3. 若有数据行,断言操作列可见 编辑、日志",核心列完整;行内操作入口可见。,
DEPTM-CAT-006,基础设置 · 科室管理,科室分类维护 · 列表,院区列升序降序切换,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室分类维护」权限;已进入科室分类维护页(/spd/basic/dept/platform/dept/calatog,无 iframe);至少 2 条数据,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后列表有数据
3. 横向滚动使「院区」列表头可见(宽表时)
4. 第一次点击该列排序控件并校验升序指示器
5. 第二次点击并校验降序指示器",排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。,
DEPTM-CAT-007,基础设置 · 科室管理,科室分类维护 · 列表,科室编码列升序降序切换,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室分类维护」权限;已进入科室分类维护页(/spd/basic/dept/platform/dept/calatog,无 iframe);至少 2 条数据,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后列表有数据
3. 横向滚动使「科室编码」列表头可见(宽表时)
4. 第一次点击该列排序控件并校验升序指示器
5. 第二次点击并校验降序指示器",排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。,
DEPTM-CAT-008,基础设置 · 科室管理,科室分类维护 · 列表,科室名称列升序降序切换,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室分类维护」权限;已进入科室分类维护页(/spd/basic/dept/platform/dept/calatog,无 iframe);至少 2 条数据,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后列表有数据
3. 横向滚动使「科室名称」列表头可见(宽表时)
4. 第一次点击该列排序控件并校验升序指示器
5. 第二次点击并校验降序指示器",排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。,
DEPTM-CAT-009,基础设置 · 科室管理,科室分类维护 · 列表,状态列升序降序切换,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室分类维护」权限;已进入科室分类维护页(/spd/basic/dept/platform/dept/calatog,无 iframe);至少 2 条数据,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后列表有数据
3. 横向滚动使「状态」列表头可见(宽表时)
4. 第一次点击该列排序控件并校验升序指示器
5. 第二次点击并校验降序指示器",排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。,
DEPTM-CAT-010,基础设置 · 科室管理,科室分类维护 · 列表,科室类型列升序降序切换,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室分类维护」权限;已进入科室分类维护页(/spd/basic/dept/platform/dept/calatog,无 iframe);至少 2 条数据,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后列表有数据
3. 横向滚动使「科室类型」列表头可见(宽表时)
4. 第一次点击该列排序控件并校验升序指示器
5. 第二次点击并校验降序指示器",排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。,
DEPTM-CAT-011,基础设置 · 科室管理,科室分类维护 · 列表,科室地址列升序降序切换,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室分类维护」权限;已进入科室分类维护页(/spd/basic/dept/platform/dept/calatog,无 iframe);至少 2 条数据,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后列表有数据
3. 横向滚动使「科室地址」列表头可见(宽表时)
4. 第一次点击该列排序控件并校验升序指示器
5. 第二次点击并校验降序指示器",排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。,
DEPTM-CAT-012,基础设置 · 科室管理,科室分类维护 · 列表,科室分类名称列升序降序切换,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室分类维护」权限;已进入科室分类维护页(/spd/basic/dept/platform/dept/calatog,无 iframe);至少 2 条数据,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后列表有数据
3. 横向滚动使「科室分类名称」列表头可见(宽表时)
4. 第一次点击该列排序控件并校验升序指示器
5. 第二次点击并校验降序指示器",排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。,
DEPTM-CAT-013,基础设置 · 科室管理,科室分类维护 · 列表,行内操作可达(只读冒烟),高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室分类维护」权限;已进入科室分类维护页(/spd/basic/dept/platform/dept/calatog,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 首行存在数据时,点击行内首个操作(如编辑/详情/配置)
3. 断言进入预期弹窗/抽屉/详情,可见取消或关闭
4. 关闭弹层,列表仍可见",行内操作可达;关闭后回到列表。,
DEPTM-CAT-014,基础设置 · 科室管理,科室分类维护 · 分页,分页翻至第 2 页,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室分类维护」权限;已进入科室分类维护页(/spd/basic/dept/platform/dept/calatog,无 iframe);总条数大于一页,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录第 1 页首行关键字段
3. 点击页码「2」或「下一页」
4. 断言页码高亮正确,首行数据与第 1 页不同",翻页成功;数据更换。,
DEPTM-CAT-015,基础设置 · 科室管理,科室分类维护 · 导出,导出入口可触发,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室分类维护」权限;已进入科室分类维护页(/spd/basic/dept/platform/dept/calatog,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「导 出」
3. 断言无未捕获异常(不校验文件)",导出流程可启动。,
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
DEPTM-ZON-001,基础设置 · 科室管理,科室库区产品设置 · 左侧科室树,科室树默认选中且右侧有范围,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室库区产品设置」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言左侧科室树可见且有选中或可展开节点
3. 读取选中节点名称 `${sampleDeptNode}`
4. 断言右侧列表/表单与当前节点范围一致或为空态",树有选中;右侧不展示其它节点数据为成功态。,
DEPTM-ZON-002,基础设置 · 科室管理,科室库区产品设置 · 左侧科室树,切换树节点刷新右侧,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室库区产品设置」权限;已进入科室库区产品设置页(/spd/basic/dept/platform/dept/areaProduct,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录当前节点与右侧首行(若有)
3. 点选另一树节点(仅 1 个则 skip)
4. 断言右侧数据范围切换,不残留上一节点首行",切换节点后右侧刷新。,
DEPTM-ZON-003,基础设置 · 科室管理,科室库区产品设置 · 快捷筛选查询,默认条件查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室库区产品设置」权限;已进入科室库区产品设置页(/spd/basic/dept/platform/dept/areaProduct,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」或「查询」
3. 断言列表有数据或明确空态,「共 N 条」与当前结果一致",默认查询无报错;总数与列表一致。,
DEPTM-ZON-004,基础设置 · 科室管理,科室库区产品设置 · 快捷筛选查询,全量可见条件组合查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室库区产品设置」权限;已进入科室库区产品设置页(/spd/basic/dept/platform/dept/areaProduct,无 iframe);默认查询至少 1 条,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询 → 从首行提取全量样本(只填当前结果里有值的条件,见 rules 3.2)
3. 快捷区可见非空条件全部填入后查询
4. 抽样首行同时满足全部已填条件;无未捕获异常",查询正常无报错;查询结果与查询条件一致。,
DEPTM-ZON-005,基础设置 · 科室管理,科室库区产品设置 · 列表,无匹配空态(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室库区产品设置」权限;已进入科室库区产品设置页(/spd/basic/dept/platform/dept/areaProduct,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 科室名称/编号或任务名称等关键字填入 `__NOT_EXIST_DEPT__99999` 后查询
3. 断言表头仍在,0 行或空态,分页总数为 0",无匹配不报错;不展示过期数据为成功态。,
DEPTM-ZON-006,基础设置 · 科室管理,科室库区产品设置 · 列表,列表核心列完整,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室库区产品设置」权限;已进入科室库区产品设置页(/spd/basic/dept/platform/dept/areaProduct,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言表头含 物料编号、默认上架货位、操作
3. 若有数据行,断言操作列可见 编辑",核心列完整;行内操作入口可见。,
DEPTM-ZON-007,基础设置 · 科室管理,科室库区产品设置 · 列表,列设置隐藏后再恢复,低,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室库区产品设置」权限;已进入科室库区产品设置页(/spd/basic/dept/platform/dept/areaProduct,无 iframe);列表表头已加载,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后点击表格工具栏列设置(齿轮,非 column-height 密度)
3. 取消勾选一列非核心字段并关闭面板,断言表头隐藏
4. 再次打开列设置勾选恢复并关闭,断言表头恢复",勾选状态与表头一致。,
DEPTM-ZON-008,基础设置 · 科室管理,科室库区产品设置 · 列表,行内操作可达(只读冒烟),高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室库区产品设置」权限;已进入科室库区产品设置页(/spd/basic/dept/platform/dept/areaProduct,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 首行存在数据时,点击行内首个操作(如编辑/详情/配置)
3. 断言进入预期弹窗/抽屉/详情,可见取消或关闭
4. 关闭弹层,列表仍可见",行内操作可达;关闭后回到列表。,
DEPTM-ZON-009,基础设置 · 科室管理,科室库区产品设置 · 分页,分页翻至第 2 页,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室库区产品设置」权限;已进入科室库区产品设置页(/spd/basic/dept/platform/dept/areaProduct,无 iframe);总条数大于一页,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录第 1 页首行关键字段
3. 点击页码「2」或「下一页」
4. 断言页码高亮正确,首行数据与第 1 页不同",翻页成功;数据更换。,
DEPTM-ZON-010,基础设置 · 科室管理,科室库区产品设置 · 导出,导出入口可触发,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室库区产品设置」权限;已进入科室库区产品设置页(/spd/basic/dept/platform/dept/areaProduct,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「导 出」
3. 断言无未捕获异常(不校验文件)",导出流程可启动。,
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
DEPTM-REG-001,基础设置 · 科室管理,科室登记 · 快捷筛选查询,默认条件查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室登记」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」或「查询」
3. 断言列表有数据或明确空态,「共 N 条」与当前结果一致",默认查询无报错;总数与列表一致。,
DEPTM-REG-002,基础设置 · 科室管理,科室登记 · 高级筛选抽屉,全量查询条件组合查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室登记」权限;已进入科室登记页(/spd/basic/dept/platform/dept/list,无 iframe);默认查询至少 1 条,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询 → 从首行提取全量样本(不写死业务数据,见 rules 3.4)
3. 快捷区填入样本中有值的可见字段
4. 高级筛选抽屉填入样本中所有非空字段(文本直接填、下拉选同值;禁用字段记录默认)
5. 「查询/筛选」后抽样首行与汇总(若有);首行同时满足样本中全部已填字段",查询正常无报错;查询条件写值正常;查询结果与查询条件一致。,
DEPTM-REG-003,基础设置 · 科室管理,科室登记 · 列表,无匹配空态(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室登记」权限;已进入科室登记页(/spd/basic/dept/platform/dept/list,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 科室名称/编号或任务名称等关键字填入 `__NOT_EXIST_DEPT__99999` 后查询
3. 断言表头仍在,0 行或空态,分页总数为 0",无匹配不报错;不展示过期数据为成功态。,
DEPTM-REG-004,基础设置 · 科室管理,科室登记 · 列表,列表核心列完整,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室登记」权限;已进入科室登记页(/spd/basic/dept/platform/dept/list,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言表头含 序号、院区、科室编码、科室名称、科室类型、操作
3. 若有数据行,断言操作列可见 编辑、配置",核心列完整;行内操作入口可见。,
DEPTM-REG-005,基础设置 · 科室管理,科室登记 · 列表,列设置隐藏后再恢复,低,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室登记」权限;已进入科室登记页(/spd/basic/dept/platform/dept/list,无 iframe);列表表头已加载,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后点击表格工具栏列设置(齿轮,非 column-height 密度)
3. 取消勾选一列非核心字段并关闭面板,断言表头隐藏
4. 再次打开列设置勾选恢复并关闭,断言表头恢复",勾选状态与表头一致。,
DEPTM-REG-006,基础设置 · 科室管理,科室登记 · 列表,行内操作可达(只读冒烟),高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室登记」权限;已进入科室登记页(/spd/basic/dept/platform/dept/list,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 首行存在数据时,点击行内首个操作(如编辑/详情/配置)
3. 断言进入预期弹窗/抽屉/详情,可见取消或关闭
4. 关闭弹层,列表仍可见",行内操作可达;关闭后回到列表。,
DEPTM-REG-007,基础设置 · 科室管理,科室登记 · 分页,分页翻至第 2 页,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室登记」权限;已进入科室登记页(/spd/basic/dept/platform/dept/list,无 iframe);总条数大于一页,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录第 1 页首行关键字段
3. 点击页码「2」或「下一页」
4. 断言页码高亮正确,首行数据与第 1 页不同",翻页成功;数据更换。,
DEPTM-REG-008,基础设置 · 科室管理,科室登记 · 新增弹窗,打开新增弹窗/抽屉,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室登记」权限;已进入科室登记页(/spd/basic/dept/platform/dept/list,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「新增」或「新 增」
3. 断言弹窗/抽屉可见,含「取 消」「确 定」或关闭",新增层打开;关键按钮可见。,
DEPTM-REG-009,基础设置 · 科室管理,科室登记 · 新增弹窗,必填为空拦截,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室登记」权限;已进入科室登记页(/spd/basic/dept/platform/dept/list,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开新增,必填项留空后点击「确 定」
3. 断言出现必填提示,弹窗仍打开,列表不刷新为成功态",确定被拦截;不落库。,
DEPTM-REG-010,基础设置 · 科室管理,科室登记 · 新增弹窗,新增取消不落库,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室登记」权限;已进入科室登记页(/spd/basic/dept/platform/dept/list,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开新增,任意填写非空后点击「取 消」
3. 断言弹窗关闭,列表行数与打开前一致(抽样)",取消后列表无新增/无修改。,
DEPTM-REG-011,基础设置 · 科室管理,科室登记 · 科室参数配置,配置入口跳转科室参数页,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室登记」权限;已进入科室登记页(/spd/basic/dept/platform/dept/list,无 iframe);列表至少 1 条且含配置入口,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录首行 `${sampleDeptCode}`、`${sampleDeptName}`
3. 点击该行「配置」
4. 断言 URL 含 dept-param 或页面标题/面包屑为科室参数,且科室编码/名称与来源行一致",进入参数配置页;科室与登记行一致。,
DEPTM-REG-012,基础设置 · 科室管理,科室登记 · 科室参数配置,参数页返回登记列表,低,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室登记」权限;已进入科室登记页(/spd/basic/dept/platform/dept/list,无 iframe);列表至少 1 条且含配置入口,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击首行「配置」打开参数页
3. 不修改,返回或关闭
4. 断言回到科室登记列表,该行无变化",返回后仍在登记页;该行无变化。,
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
DEPTM-FLM-001,基础设置 · 科室管理,科室跟台限额任务 · 快捷筛选查询,默认条件查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室跟台限额任务」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」或「查询」
3. 断言列表有数据或明确空态,「共 N 条」与当前结果一致",默认查询无报错;总数与列表一致。,
DEPTM-FLM-002,基础设置 · 科室管理,科室跟台限额任务 · 快捷筛选查询,全量可见条件组合查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室跟台限额任务」权限;已进入科室跟台限额任务页(/spd/basic/dept/platform/dept/limit,无 iframe);默认查询至少 1 条,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询 → 从首行提取全量样本(只填当前结果里有值的条件,见 rules 3.2)
3. 快捷区可见非空条件全部填入后查询
4. 抽样首行同时满足全部已填条件;无未捕获异常",查询正常无报错;查询结果与查询条件一致。,
DEPTM-FLM-003,基础设置 · 科室管理,科室跟台限额任务 · 列表,无匹配空态(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室跟台限额任务」权限;已进入科室跟台限额任务页(/spd/basic/dept/platform/dept/limit,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 科室名称/编号或任务名称等关键字填入 `__NOT_EXIST_FLM_TASK__` 后查询
3. 断言表头仍在,0 行或空态,分页总数为 0",无匹配不报错;不展示过期数据为成功态。,
DEPTM-FLM-004,基础设置 · 科室管理,科室跟台限额任务 · 状态 Tab,状态 Tab 与列表一致,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室跟台限额任务」权限;已进入科室跟台限额任务页(/spd/basic/dept/platform/dept/limit,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 切换「全部」与某一状态 Tab
3. 断言列表状态列与 Tab 语义一致(抽样)",Tab 切换后列表范围变化合理。,
DEPTM-FLM-005,基础设置 · 科室管理,科室跟台限额任务 · 列表,列表核心列完整,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室跟台限额任务」权限;已进入科室跟台限额任务页(/spd/basic/dept/platform/dept/limit,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言表头含 科室名称、限额任务名称、操作
3. 若有数据行,断言操作列可见 详情、上传、导出",核心列完整;行内操作入口可见。,
DEPTM-FLM-006,基础设置 · 科室管理,科室跟台限额任务 · 列表,行内操作可达(只读冒烟),高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室跟台限额任务」权限;已进入科室跟台限额任务页(/spd/basic/dept/platform/dept/limit,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 首行存在数据时,点击行内首个操作(如编辑/详情/配置)
3. 断言进入预期弹窗/抽屉/详情,可见取消或关闭
4. 关闭弹层,列表仍可见",行内操作可达;关闭后回到列表。,
DEPTM-FLM-007,基础设置 · 科室管理,科室跟台限额任务 · 分页,分页翻至第 2 页,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室跟台限额任务」权限;已进入科室跟台限额任务页(/spd/basic/dept/platform/dept/limit,无 iframe);总条数大于一页,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录第 1 页首行关键字段
3. 点击页码「2」或「下一页」
4. 断言页码高亮正确,首行数据与第 1 页不同",翻页成功;数据更换。,
DEPTM-FLM-008,基础设置 · 科室管理,科室跟台限额任务 · 新增弹窗,打开新增弹窗/抽屉,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室跟台限额任务」权限;已进入科室跟台限额任务页(/spd/basic/dept/platform/dept/limit,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「新增」或「新 增」
3. 断言弹窗/抽屉可见,含「取 消」「确 定」或关闭",新增层打开;关键按钮可见。,
DEPTM-FLM-009,基础设置 · 科室管理,科室跟台限额任务 · 新增弹窗,必填为空拦截,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室跟台限额任务」权限;已进入科室跟台限额任务页(/spd/basic/dept/platform/dept/limit,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开新增,必填项留空后点击「确 定」
3. 断言出现必填提示,弹窗仍打开,列表不刷新为成功态",确定被拦截;不落库。,
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
DEPTM-DEL-001,基础设置 · 科室管理,科室送货计划 · 左侧送货计划列表,切换计划刷新右侧详情,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室送货计划」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点选左侧另一计划(仅 1 个则 skip)
3. 断言右侧排程信息与计划名称一致,不串上一计划",计划切换后详情对应。,
DEPTM-DEL-002,基础设置 · 科室管理,科室送货计划 · 右侧排程计划详情,排程信息与耗材类型展示,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室送货计划」权限;已进入科室送货计划页(/spd/basic/dept/platform/dept/deptPlan,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 选中有计划的数据
3. 断言展示排程类型、间隔、耗材类型勾选等只读信息",详情字段可读。,
DEPTM-DEL-003,基础设置 · 科室管理,科室送货计划 · 右侧排程计划详情,添加科室库区入口,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室送货计划」权限;已进入科室送货计划页(/spd/basic/dept/platform/dept/deptPlan,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「添加科室库区」
3. 断言打开选择弹窗/面板,取消关闭",添加入口可达。,
DEPTM-DEL-004,基础设置 · 科室管理,科室送货计划 · 右侧排程计划详情,子表空态,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室送货计划」权限;已进入科室送货计划页(/spd/basic/dept/platform/dept/deptPlan,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 选中无科室库区的计划(无则 skip)
3. 断言子表「暂无数据」等空态",空态不报错。,
DEPTM-DEL-005,基础设置 · 科室管理,科室送货计划 · 新增计划弹窗,打开新增计划弹窗/抽屉,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室送货计划」权限;已进入科室送货计划页(/spd/basic/dept/platform/dept/deptPlan,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「新增计划」或「新 增」
3. 断言弹窗/抽屉可见,含「取 消」「确 定」或关闭",新增计划层打开;关键按钮可见。,
DEPTM-DEL-006,基础设置 · 科室管理,科室送货计划 · 新增计划弹窗,必填为空拦截,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室送货计划」权限;已进入科室送货计划页(/spd/basic/dept/platform/dept/deptPlan,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开新增计划,必填项留空后点击「确 定」
3. 断言出现必填提示,弹窗仍打开,列表不刷新为成功态",确定被拦截;不落库。,
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
DEPTM-BUD-001,基础设置 · 科室管理,科室预算管理 · 快捷筛选查询,默认条件查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室预算管理」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」或「查询」
3. 断言列表有数据或明确空态,「共 N 条」与当前结果一致",默认查询无报错;总数与列表一致。,
DEPTM-BUD-002,基础设置 · 科室管理,科室预算管理 · 快捷筛选查询,全量可见条件组合查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室预算管理」权限;已进入科室预算管理页(/spd/basic/dept/platform/dept/budget,无 iframe);默认查询至少 1 条,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询 → 从首行提取全量样本(只填当前结果里有值的条件,见 rules 3.2)
3. 快捷区可见非空条件全部填入后查询
4. 抽样首行同时满足全部已填条件;无未捕获异常",查询正常无报错;查询结果与查询条件一致。,
DEPTM-BUD-003,基础设置 · 科室管理,科室预算管理 · 列表,无匹配空态(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室预算管理」权限;已进入科室预算管理页(/spd/basic/dept/platform/dept/budget,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 科室名称/编号或任务名称等关键字填入 `__NOT_EXIST_BUDGET__` 后查询
3. 断言表头仍在,0 行或空态,分页总数为 0",无匹配不报错;不展示过期数据为成功态。,
DEPTM-BUD-004,基础设置 · 科室管理,科室预算管理 · 状态 Tab,状态 Tab 与列表一致,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室预算管理」权限;已进入科室预算管理页(/spd/basic/dept/platform/dept/budget,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 切换状态 Tab
3. 断言列表状态列与 Tab 一致(抽样)",Tab 与列表一致。,
DEPTM-BUD-005,基础设置 · 科室管理,科室预算管理 · 列表,列表核心列完整,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室预算管理」权限;已进入科室预算管理页(/spd/basic/dept/platform/dept/budget,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言表头含 预算任务名称、预算进度、操作
3. 若有数据行,断言操作列可见 详情、关闭、编辑、删除",核心列完整;行内操作入口可见。,
DEPTM-BUD-006,基础设置 · 科室管理,科室预算管理 · 列表,行内操作可达(只读冒烟),高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室预算管理」权限;已进入科室预算管理页(/spd/basic/dept/platform/dept/budget,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 首行存在数据时,点击行内首个操作(如编辑/详情/配置)
3. 断言进入预期弹窗/抽屉/详情,可见取消或关闭
4. 关闭弹层,列表仍可见",行内操作可达;关闭后回到列表。,
DEPTM-BUD-007,基础设置 · 科室管理,科室预算管理 · 分页,分页翻至第 2 页,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室预算管理」权限;已进入科室预算管理页(/spd/basic/dept/platform/dept/budget,无 iframe);总条数大于一页,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录第 1 页首行关键字段
3. 点击页码「2」或「下一页」
4. 断言页码高亮正确,首行数据与第 1 页不同",翻页成功;数据更换。,
DEPTM-BUD-008,基础设置 · 科室管理,科室预算管理 · 新增弹窗,打开新增弹窗/抽屉,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室预算管理」权限;已进入科室预算管理页(/spd/basic/dept/platform/dept/budget,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「新增」或「新 增」
3. 断言弹窗/抽屉可见,含「取 消」「确 定」或关闭",新增层打开;关键按钮可见。,
DEPTM-BUD-009,基础设置 · 科室管理,科室预算管理 · 新增弹窗,必填为空拦截,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 科室预算管理」权限;已进入科室预算管理页(/spd/basic/dept/platform/dept/budget,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开新增,必填项留空后点击「确 定」
3. 断言出现必填提示,弹窗仍打开,列表不刷新为成功态",确定被拦截;不落库。,
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
DEPTM-AUR-001,基础设置 · 科室管理,自动请领排程 · 快捷筛选查询,默认条件查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 自动请领排程」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」或「查询」
3. 断言列表有数据或明确空态,「共 N 条」与当前结果一致",默认查询无报错;总数与列表一致。,
DEPTM-AUR-002,基础设置 · 科室管理,自动请领排程 · 快捷筛选查询,全量可见条件组合查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 自动请领排程」权限;已进入自动请领排程页(/spd/basic/dept/platform/dept/schedule,无 iframe);默认查询至少 1 条,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询 → 从首行提取全量样本(只填当前结果里有值的条件,见 rules 3.2)
3. 快捷区可见非空条件全部填入后查询
4. 抽样首行同时满足全部已填条件;无未捕获异常",查询正常无报错;查询结果与查询条件一致。,
DEPTM-AUR-003,基础设置 · 科室管理,自动请领排程 · 列表,无匹配空态(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 自动请领排程」权限;已进入自动请领排程页(/spd/basic/dept/platform/dept/schedule,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 科室名称/编号或任务名称等关键字填入 `__NOT_EXIST_DEPT__99999` 后查询
3. 断言表头仍在,0 行或空态,分页总数为 0",无匹配不报错;不展示过期数据为成功态。,
DEPTM-AUR-004,基础设置 · 科室管理,自动请领排程 · 列表,列表核心列完整,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 自动请领排程」权限;已进入自动请领排程页(/spd/basic/dept/platform/dept/schedule,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言表头含 科室编码、排程类型、是否启用、操作
3. 若有数据行,断言操作列可见 编辑、删除",核心列完整;行内操作入口可见。,
DEPTM-AUR-005,基础设置 · 科室管理,自动请领排程 · 列表,列设置隐藏后再恢复,低,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 自动请领排程」权限;已进入自动请领排程页(/spd/basic/dept/platform/dept/schedule,无 iframe);列表表头已加载,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后点击表格工具栏列设置(齿轮,非 column-height 密度)
3. 取消勾选一列非核心字段并关闭面板,断言表头隐藏
4. 再次打开列设置勾选恢复并关闭,断言表头恢复",勾选状态与表头一致。,
DEPTM-AUR-006,基础设置 · 科室管理,自动请领排程 · 列表,行内操作可达(只读冒烟),高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 自动请领排程」权限;已进入自动请领排程页(/spd/basic/dept/platform/dept/schedule,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 首行存在数据时,点击行内首个操作(如编辑/详情/配置)
3. 断言进入预期弹窗/抽屉/详情,可见取消或关闭
4. 关闭弹层,列表仍可见",行内操作可达;关闭后回到列表。,
DEPTM-AUR-007,基础设置 · 科室管理,自动请领排程 · 分页,分页翻至第 2 页,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 自动请领排程」权限;已进入自动请领排程页(/spd/basic/dept/platform/dept/schedule,无 iframe);总条数大于一页,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录第 1 页首行关键字段
3. 点击页码「2」或「下一页」
4. 断言页码高亮正确,首行数据与第 1 页不同",翻页成功;数据更换。,
DEPTM-AUR-008,基础设置 · 科室管理,自动请领排程 · 排程类型展示,星期型排程行内展示可读,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 自动请领排程」权限;已进入自动请领排程页(/spd/basic/dept/platform/dept/schedule,无 iframe);存在星期型排程行,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 查找排程类型为「星期」的行
3. 断言行内展示周日~周六可选状态且可读",星期型排程 UI 可读。,
DEPTM-AUR-009,基础设置 · 科室管理,自动请领排程 · 新增弹窗,打开新增弹窗/抽屉,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 自动请领排程」权限;已进入自动请领排程页(/spd/basic/dept/platform/dept/schedule,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「新增」或「新 增」
3. 断言弹窗/抽屉可见,含「取 消」「确 定」或关闭",新增层打开;关键按钮可见。,
DEPTM-AUR-010,基础设置 · 科室管理,自动请领排程 · 新增弹窗,必填为空拦截,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 自动请领排程」权限;已进入自动请领排程页(/spd/basic/dept/platform/dept/schedule,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开新增,必填项留空后点击「确 定」
3. 断言出现必填提示,弹窗仍打开,列表不刷新为成功态",确定被拦截;不落库。,
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
DEPTM-TPL-001,基础设置 · 科室管理,请领模板维护 · 左侧模板目录,切换模板刷新右侧明细,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 请领模板维护」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点选左侧另一模板(仅 1 个则 skip)
3. 断言右侧明细列表刷新,不串上一模板数据",模板切换后明细对应。,
DEPTM-TPL-002,基础设置 · 科室管理,请领模板维护 · 快捷筛选查询,默认条件查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 请领模板维护」权限;已进入请领模板维护页(/spd/basic/dept/platform/dept/apply,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」或「查询」
3. 断言列表有数据或明确空态,「共 N 条」与当前结果一致",默认查询无报错;总数与列表一致。,
DEPTM-TPL-003,基础设置 · 科室管理,请领模板维护 · 快捷筛选查询,全量可见条件组合查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 请领模板维护」权限;已进入请领模板维护页(/spd/basic/dept/platform/dept/apply,无 iframe);默认查询至少 1 条,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询 → 从首行提取全量样本(只填当前结果里有值的条件,见 rules 3.2)
3. 快捷区可见非空条件全部填入后查询
4. 抽样首行同时满足全部已填条件;无未捕获异常",查询正常无报错;查询结果与查询条件一致。,
DEPTM-TPL-004,基础设置 · 科室管理,请领模板维护 · 列表,无匹配空态(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 请领模板维护」权限;已进入请领模板维护页(/spd/basic/dept/platform/dept/apply,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 科室名称/编号或任务名称等关键字填入 `__NOT_EXIST_DEPT__99999` 后查询
3. 断言表头仍在,0 行或空态,分页总数为 0",无匹配不报错;不展示过期数据为成功态。,
DEPTM-TPL-005,基础设置 · 科室管理,请领模板维护 · 列表,列表核心列完整,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 请领模板维护」权限;已进入请领模板维护页(/spd/basic/dept/platform/dept/apply,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言表头含 规格型号、耗材类型、操作
3. 若有数据行,断言操作列可见 编辑、移除",核心列完整;行内操作入口可见。,
DEPTM-TPL-006,基础设置 · 科室管理,请领模板维护 · 列表,列设置隐藏后再恢复,低,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 请领模板维护」权限;已进入请领模板维护页(/spd/basic/dept/platform/dept/apply,无 iframe);列表表头已加载,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后点击表格工具栏列设置(齿轮,非 column-height 密度)
3. 取消勾选一列非核心字段并关闭面板,断言表头隐藏
4. 再次打开列设置勾选恢复并关闭,断言表头恢复",勾选状态与表头一致。,
DEPTM-TPL-007,基础设置 · 科室管理,请领模板维护 · 列表,规格型号列升序降序切换,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 请领模板维护」权限;已进入请领模板维护页(/spd/basic/dept/platform/dept/apply,无 iframe);至少 2 条数据,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后列表有数据
3. 横向滚动使「规格型号」列表头可见(宽表时)
4. 第一次点击该列排序控件并校验升序指示器
5. 第二次点击并校验降序指示器",排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。,
DEPTM-TPL-008,基础设置 · 科室管理,请领模板维护 · 列表,器械注册人列升序降序切换,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 请领模板维护」权限;已进入请领模板维护页(/spd/basic/dept/platform/dept/apply,无 iframe);至少 2 条数据,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后列表有数据
3. 横向滚动使「器械注册人」列表头可见(宽表时)
4. 第一次点击该列排序控件并校验升序指示器
5. 第二次点击并校验降序指示器",排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。,
DEPTM-TPL-009,基础设置 · 科室管理,请领模板维护 · 列表,默认单价列升序降序切换,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 请领模板维护」权限;已进入请领模板维护页(/spd/basic/dept/platform/dept/apply,无 iframe);至少 2 条数据,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后列表有数据
3. 横向滚动使「默认单价」列表头可见(宽表时)
4. 第一次点击该列排序控件并校验升序指示器
5. 第二次点击并校验降序指示器",排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。,
DEPTM-TPL-010,基础设置 · 科室管理,请领模板维护 · 列表,物料编号列升序降序切换,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 请领模板维护」权限;已进入请领模板维护页(/spd/basic/dept/platform/dept/apply,无 iframe);至少 2 条数据,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后列表有数据
3. 横向滚动使「物料编号」列表头可见(宽表时)
4. 第一次点击该列排序控件并校验升序指示器
5. 第二次点击并校验降序指示器",排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。,
DEPTM-TPL-011,基础设置 · 科室管理,请领模板维护 · 列表,物料名称列升序降序切换,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 请领模板维护」权限;已进入请领模板维护页(/spd/basic/dept/platform/dept/apply,无 iframe);至少 2 条数据,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后列表有数据
3. 横向滚动使「物料名称」列表头可见(宽表时)
4. 第一次点击该列排序控件并校验升序指示器
5. 第二次点击并校验降序指示器",排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。,
DEPTM-TPL-012,基础设置 · 科室管理,请领模板维护 · 列表,物料俗称列升序降序切换,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 请领模板维护」权限;已进入请领模板维护页(/spd/basic/dept/platform/dept/apply,无 iframe);至少 2 条数据,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 默认查询后列表有数据
3. 横向滚动使「物料俗称」列表头可见(宽表时)
4. 第一次点击该列排序控件并校验升序指示器
5. 第二次点击并校验降序指示器",排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。,
DEPTM-TPL-013,基础设置 · 科室管理,请领模板维护 · 列表,行内操作可达(只读冒烟),高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 请领模板维护」权限;已进入请领模板维护页(/spd/basic/dept/platform/dept/apply,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 首行存在数据时,点击行内首个操作(如编辑/详情/配置)
3. 断言进入预期弹窗/抽屉/详情,可见取消或关闭
4. 关闭弹层,列表仍可见",行内操作可达;关闭后回到列表。,
DEPTM-TPL-014,基础设置 · 科室管理,请领模板维护 · 分页,分页翻至第 2 页,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 请领模板维护」权限;已进入请领模板维护页(/spd/basic/dept/platform/dept/apply,无 iframe);总条数大于一页,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录第 1 页首行关键字段
3. 点击页码「2」或「下一页」
4. 断言页码高亮正确,首行数据与第 1 页不同",翻页成功;数据更换。,
DEPTM-TPL-015,基础设置 · 科室管理,请领模板维护 · Excel 导入与批量写操作,添加产品与导入入口,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 科室管理 → 请领模板维护」权限;已进入请领模板维护页(/spd/basic/dept/platform/dept/apply,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「添加产品」或「导入excel」
3. 断言打开选择/导入流程或提示,无 error",入口可达。,
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果 用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
STAT-TBC-001,统计报表·追溯报表,条码追溯·快捷筛选查询,快捷区重置恢复默认,中,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已默认查询且主表有数据,"1. 从主表首行读取物料名称/UDI码样本(${sampleXxx})填入快捷区 STAT-TBC-001,统计报表·追溯报表,条码追溯·快捷筛选查询,快捷区重置恢复默认,中,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已进入页面并点击「查 询」;已默认查询且主表有数据,"1. 从主表首行读取物料名称/UDI码样本(${sampleXxx})填入快捷区
2. 点击「重 置」 2. 点击「重 置」
3. 检查各字段与快捷筛选恢复默认",快捷筛选字段恢复默认;列表是否刷新按产品规则(记录 baseline 行为)。, 3. 检查各字段与快捷筛选恢复默认",快捷筛选字段恢复默认;列表是否刷新按产品规则(记录 baseline 行为)。,
STAT-TBC-002,统计报表·追溯报表,条码追溯·高级筛选抽屉,点击高级筛选打开抽屉,高,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code),"1. 点击 iframe 内「高级筛选」(.advance-filter) STAT-TBC-002,统计报表·追溯报表,条码追溯·高级筛选抽屉,点击高级筛选打开抽屉,高,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已进入页面并点击「查 询」,"1. 点击 iframe 内「高级筛选」(.advance-filter)
2. 观察右侧抽屉",抽屉标题为「高级筛选」;含 批号、配送单号、耗材类型 等字段可交互, 2. 观察右侧抽屉",抽屉标题为「高级筛选」;含 批号、配送单号、耗材类型 等字段可交互,
STAT-TBC-003,统计报表·追溯报表,条码追溯·高级筛选抽屉,抽屉内重置恢复抽屉字段默认,中,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已打开高级筛选抽屉;已从列表读取 配送单号 样本,"1. 在抽屉 配送单号 填入 ${sampleXxx} STAT-TBC-003,统计报表·追溯报表,条码追溯·高级筛选抽屉,抽屉内重置恢复抽屉字段默认,中,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已进入页面并点击「查 询」;已打开高级筛选抽屉;已从列表读取 配送单号 样本,"1. 在抽屉 配送单号 填入 ${sampleXxx}
2. 点击抽屉底部「重 置」 2. 点击抽屉底部「重 置」
3. 检查抽屉字段与快捷区",抽屉字段恢复默认;快捷区条件不被清空。, 3. 检查抽屉字段与快捷区",抽屉字段恢复默认;快捷区条件不被清空。,
STAT-TBC-004,统计报表·追溯报表,条码追溯·高级筛选抽屉,全量查询条件组合查询,高,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已默认查询且主表至少有 1 条数据,"1. searchAndExtractSample() 读取样本(${sampleXxx},禁止写死业务数据) STAT-TBC-004,统计报表·追溯报表,条码追溯·高级筛选抽屉,全量查询条件组合查询,高,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已进入页面并点击「查 询」;已默认查询且主表至少有 1 条数据,"1. searchAndExtractSample() 读取样本(${sampleXxx},禁止写死业务数据)
2. 快捷区填入 物料名称、UDI码、原厂码 2. 快捷区填入 物料名称、UDI码、原厂码
3. 打开高级筛选,填入 批号、配送单号、耗材类型 3. 打开高级筛选,填入 批号、配送单号、耗材类型
4. 点击「筛 选」并等待刷新 4. 点击「筛 选」并等待刷新
5. 检查首行 物料名称、UDI码、批号 与条件一致",查询正常无报错;查询条件写值正常;查询结果与查询条件一致。, 5. 检查首行 物料名称、UDI码、批号 与条件一致",查询正常无报错;查询条件写值正常;查询结果与查询条件一致。,
STAT-TBC-005,统计报表·追溯报表,条码追溯·高级筛选抽屉,快捷区条件自动带入高级筛选,高,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已默认查询有数据,"1. searchAndExtractSample() 读取样本 STAT-TBC-005,统计报表·追溯报表,条码追溯·高级筛选抽屉,快捷区条件自动带入高级筛选,高,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已进入页面并点击「查 询」;已默认查询有数据,"1. searchAndExtractSample() 读取样本
2. 快捷区填入 物料名称、UDI码 2. 快捷区填入 物料名称、UDI码
3. 点击「查 询」 3. 点击「查 询」
4. 打开高级筛选(不手动修改抽屉) 4. 打开高级筛选(不手动修改抽屉)
5. 校验抽屉同名字段与快捷区一致",抽屉「物料名称」「UDI码」与快捷区已填值一致, 5. 校验抽屉同名字段与快捷区一致",抽屉「物料名称」「UDI码」与快捷区已填值一致,
STAT-TBC-006,统计报表·追溯报表,条码追溯·条码追溯,UDI码/原厂码关键字命中链路,高,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已默认查询有数据,"1. searchAndExtractSample() 读取样本 STAT-TBC-006,统计报表·追溯报表,条码追溯·条码追溯,UDI码/原厂码关键字命中链路,高,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已进入页面并点击「查 询」;已默认查询有数据,"1. searchAndExtractSample() 读取样本
2. 快捷区填入有效样本 UDI码 2. 快捷区填入有效样本 UDI码
3. 点击「查 询」 3. 点击「查 询」
4. 检查主表关联单号/状态列完整且彼此可对应",列表展示追溯链路关键节点字段,单号/状态彼此可对应。, 4. 检查主表关联单号/状态列完整且彼此可对应",列表展示追溯链路关键节点字段,单号/状态彼此可对应。,
STAT-TBC-007,统计报表·追溯报表,条码追溯·主表列表与汇总,查询后核心列展示,高,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已默认查询有数据且主表列宽可能超出视口,"1. 点击「查 询」 STAT-TBC-007,统计报表·追溯报表,条码追溯·主表列表与汇总,查询后核心列展示,高,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已进入页面并点击「查 询」;已默认查询有数据且主表列宽可能超出视口,"1. 点击「查 询」
2. 确认「物料名称」等核心列可见 2. 确认「物料名称」等核心列可见
3. expectTableHeaders() 校验核心表头 3. expectTableHeaders() 校验核心表头
4. 在表格数据区横向拖拉滚动(或滚轮/滚动条)使列表左右滚动 4. 在表格数据区横向拖拉滚动(或滚轮/滚动条)使列表左右滚动
5. 检查「配送单号」等远侧列进入可视区 5. 检查「配送单号」等远侧列进入可视区
6. 检查表头无空白列、表头列数与数据列数一致;相邻列无异常空白间隙或重叠;表头与首行数据列左右对齐无错位",主表核心列完整展示(含物料名称、UDI码、原厂码、批号、合单出库单号、配送单号等);横向拖拉后列表可正常左右滚动;远侧列可见;表头无空白列;表头列数与数据列数一致;表头相邻列无变形空格/重叠;表头与数据列对齐正常。, 6. 检查表头无空白列、表头列数与数据列数一致;相邻列无异常空白间隙或重叠;表头与首行数据列左右对齐无错位",主表核心列完整展示(含物料名称、UDI码、原厂码、批号、合单出库单号、配送单号等);横向拖拉后列表可正常左右滚动;远侧列可见;表头无空白列;表头列数与数据列数一致;表头相邻列无变形空格/重叠;表头与数据列对齐正常。,
STAT-TBC-008,统计报表·追溯报表,条码追溯·主表列表与汇总,查询后底部汇总指标展示,高,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已默认查询有数据,"1. 默认条件查询 STAT-TBC-008,统计报表·追溯报表,条码追溯·主表列表与汇总,查询后底部汇总指标展示,高,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已进入页面并点击「查 询」;已默认查询有数据,"1. 默认条件查询
2. 查看底部汇总区域",汇总区指标均有展示;数值为有效数字或 0。, 2. 查看底部汇总区域",汇总区指标均有展示;数值为有效数字或 0。,
STAT-TBC-009,统计报表·追溯报表,条码追溯·主表列表与汇总,无匹配数据空列表(mock反例),中,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code),"1. UDI码填 __NOT_EXIST_BARCODE__999992. 点击「查 询」 STAT-TBC-009,统计报表·追溯报表,条码追溯·主表列表与汇总,无匹配数据空列表(mock反例),中,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已进入页面并点击「查 询」,"1. UDI码填 __NOT_EXIST_BARCODE__999992. 点击「查 询」
3. 检查主表;若存在底部汇总区则一并检查,无则跳过",表头仍可见;空状态或 0 行;若页面存在底部汇总区则汇总为 0 或「-」,无汇总区则不检查。, 3. 检查主表;若存在底部汇总区则一并检查,无则跳过",表头仍可见;空状态或 0 行;若页面存在底部汇总区则汇总为 0 或「-」,无汇总区则不检查。,
STAT-TBC-010,统计报表·追溯报表,条码追溯·列设置,打开列设置面板,低,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已默认查询有数据,"1. 默认查询 STAT-TBC-010,统计报表·追溯报表,条码追溯·列设置,打开列设置面板,低,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已进入页面并点击「查 询」;已默认查询有数据,"1. 默认查询
2. 点击列设置齿轮图标(.anticon-setting) 2. 点击列设置齿轮图标(.anticon-setting)
3. 检查面板",列设置面板正常弹出;字段列表与表格可配置列一致。, 3. 检查面板",列设置面板正常弹出;字段列表与表格可配置列一致。,
STAT-TBC-011,统计报表·追溯报表,条码追溯·列设置,列设置取消勾选后再勾选列表列恢复,低,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已默认查询有数据;已确认「耗材类型」等非核心列默认显示,"1. 打开列设置面板 STAT-TBC-011,统计报表·追溯报表,条码追溯·列设置,列设置取消勾选后再勾选列表列恢复,低,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已进入页面并点击「查 询」;已默认查询有数据;已确认「耗材类型」等非核心列默认显示,"1. 打开列设置面板
2. 取消勾选「耗材类型」(若无则选其它非核心列) 2. 取消勾选「耗材类型」(若无则选其它非核心列)
3. 关闭面板并检查表头 3. 关闭面板并检查表头
4. 再次打开列设置确认对应字段未勾选 4. 再次打开列设置确认对应字段未勾选
5. 重新勾选该列并关闭面板 5. 重新勾选该列并关闭面板
6. 检查表头恢复显示该列",取消勾选后主表表头同步隐藏;再次勾选后表头恢复显示;列设置勾选状态与列表一致, 6. 检查表头恢复显示该列",取消勾选后主表表头同步隐藏;再次勾选后表头恢复显示;列设置勾选状态与列表一致,
STAT-TBC-012,统计报表·追溯报表,条码追溯·分页,有数据时展示分页总条数,高,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已默认查询有数据,"1. 默认条件查询 STAT-TBC-012,统计报表·追溯报表,条码追溯·分页,有数据时展示分页总条数,高,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已进入页面并点击「查 询」;已默认查询有数据,"1. 默认条件查询
2. 查看分页总条数",分页可见;显示「共 N 条」且 N 与查询结果一致。, 2. 查看分页总条数",分页可见;显示「共 N 条」且 N 与查询结果一致。,
STAT-TBC-013,统计报表·追溯报表,条码追溯·分页,切换至第2页,高,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);默认查询结果超过 1 页,"1. 执行查询 STAT-TBC-013,统计报表·追溯报表,条码追溯·分页,切换至第2页,高,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已进入页面并点击「查 询」;默认查询结果超过 1 页,"1. 执行查询
2. 点击分页页码 2 2. 点击分页页码 2
3. 检查页码高亮与首行数据",第 2 页数据正确;页码高亮;列表无数据或不足2页时 skip。, 3. 检查页码高亮与首行数据",第 2 页数据正确;页码高亮;列表无数据或不足2页时 skip。,
STAT-TBC-014,统计报表·追溯报表,条码追溯·分页,切换每页条数,中,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);默认查询结果有多页,"1. 查询数据 STAT-TBC-014,统计报表·追溯报表,条码追溯·分页,切换每页条数,中,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已进入页面并点击「查 询」;默认查询结果有多页,"1. 查询数据
2. 切换每页条数(如 100 条/页) 2. 切换每页条数(如 100 条/页)
3. 统计当前页可见行数",单页行数与档位一致;列表无数据时 skip。, 3. 统计当前页可见行数",单页行数与档位一致;列表无数据时 skip。,
STAT-TBC-015,统计报表·追溯报表,条码追溯·导出,首行样本查询后导出(无数据直接导出),高,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code),"1. 默认条件点击「查 询」 STAT-TBC-015,统计报表·追溯报表,条码追溯·导出,首行样本查询后导出(无数据直接导出),高,测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已进入页面并点击「查 询」,"1. 默认条件点击「查 询」
2. 点击「导 出」 2. 点击「导 出」
3. 检查无报错信息,页面、接口、系统正常,无系统异常",点击导出按钮后,无报错信息,页面、接口、系统正常,无系统异常。, 3. 检查无报错信息,页面、接口、系统正常,无系统异常",点击导出按钮后,无报错信息,页面、接口、系统正常,无系统异常。,
# 基础管理-准入管理-产品准入申请 UI 自动化测试用例 # 基础管理-准入管理-产品准入申请-UI自动化测试用例-01 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-准入管理-产品准入申请-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-准入管理-产品准入申请-UI自动化测试用例-01.csv` **执行 CSV**:`testcase/基础管理-准入管理-产品准入申请-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/dataSync/dataSync/productApply/list` **页面 URL**:`/spd/basic/dataSync/dataSync/productApply/list`
**定位器 YAML**:`locators/spd/admit-product-apply.locator.yaml` **自动化 Spec**:`tests/spd/admit-product-apply.spec.ts`(依赖 `auth.setup` 登录态)
**元素扫描**:`data/scan/admit-product-apply-elements.json`(467 项) **版本**:2026-11-03
**版本**:2026-09-22
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/admit-product-apply.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:已执行 `auth.setup`,`storageState` 有效;测试账号具备「基础设置 → 准入管理 → 产品准入申请」权限。 **通用前置**:正例账号 `test_1` 经 `auth.setup` 写入 `storageState`(密码仅存 `.env` 的 `TEST_PASS`)。
**页面约定**:整页渲染,**无报表 iframe**。 **页面约定**:整页渲染,**无报表 iframe**;每用例独立 BrowserContext(见 playwright-storage-state-isolation)。
**菜单导航**:展开「基础设置 → 准入管理」后,点击 `.ant-menu-item` 文案精确为「产品准入申请」。
**写操作**:不真实保存新产品、不导入 Excel、不确认生成申请单或作废。新增页只校验打开、取消和必填拦截。
**动态取数约定**:
1. 默认查询后从首行读取 `${sampleProductName}`、`${sampleSpec}`、`${sampleConsumableType}`、`${sampleOrderNo}`。
2. 筛选使用样本占位,**禁止写死**物料名称与单号。
3. 状态 Tab:全部、待申请、审批中、已通过、已驳回、已作废、生效失败、已生效。分页含「跳至」。总条数不足两页时翻页用例 skip。
--- ---
## 基础设置 · 准入管理 ## 基础设置 · 准入管理
### 产品准入申请 · 页面进入 ### 产品准入申请 · 快捷筛选查询
#### 功能验证点 #### 异常验证点
##### 【P0】【TC-UI-ADMIT-PAP-001】【TP_ADMIT_PAP_001】菜单进入产品准入申请页 ##### 【P0】【TC-UI-ADMIT-PAP-001】【ADMIT-PAP-001】默认查询列表有数据或空态明确
- 前置条件:已登录且具备准入管理权限 - 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入产品准入申请页(/spd/basic/dataSync/dataSync/productApply/list,无 iframe)
- 操作步骤: - 操作步骤:
1. 按菜单「基础设置 → 准入管理 → 产品准入申请」进入 1. 点击「查 询」并等待列表稳定2. 断言出现数据行,或「暂无数据」且分页总数为 0
2. 断言 URL 含 `/spd/basic/dataSync/dataSync/productApply/list`,且不是 `ZRlist` - 自动化断言:与 CSV `ADMIT-PAP-001` 及 `tests/spd/admit-product-apply.spec.ts` 一致
3. 断言可见「查 询」、「Excel导入」「生成申请单」「一键生成」「新增产品」「作 废」及列表表头
- 自动化断言:规划与 CSV `ADMIT-PAP-001` 及 `tests/spd/admit-product-apply.spec.ts` 一致
###### 预期结果 ###### 预期结果
进入产品准入申请页;不误入物料准入管理(ZRlist)或产品准入单列表。 查询无报错;有数据时分页「共 N 条」N≥1;无数据时空态明确。
--- ---
### 产品准入申请 · 筛选查询
#### 功能验证点 #### 功能验证点
##### 【P0】【TC-UI-ADMIT-PAP-002】【TP_ADMIT_PAP_009】默认查询列表有数据或空态明确 ##### 【P0】【TC-UI-ADMIT-PAP-002】【ADMIT-PAP-002】新增日期与销售商(自定义)等七项组合查询
- 前置条件:已进入产品准入申请页 - 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入产品准入申请页(/spd/basic/dataSync/dataSync/productApply/list,无 iframe);默认查询至少 1 条且存在含「新增日期」与物料名称/耗材类型的首行样本,否则 skip
- 操作步骤: - 操作步骤:
1. 点击「查 询」并等待列表稳定 1. 默认查询后从首行读取 `${sampleCreateDate}`、`${sampleCustomSeller}`、`${sampleConsumableType}`、`${sampleProductName}`、`${sampleSpec}`、`${sampleCertNo}`、`${sampleRegistrant}`2. 点击「重 置」后展开筛选区3. 「新增日期」区间设为 `${sampleCreateDate}` 单日4. 「销售商(自定义)」填入 `${sampleCustomSeller}`(列表列为默认进院供应商/销售商(自定义)时同源取值)5. 「耗材类型」选择 `${sampleConsumableType}`6. 「物料名称」填入 `${sampleProductName}` 关键字7. 「规格型号」「注册证号」「器械注册人」分别填入对应样本(为空则跳过该项)8. 点击「查 询」9. 断言结果行同时满足已填各条件
2. 断言出现数据行,或「暂无数据」且分页总数为 0 - 自动化断言:与 CSV `ADMIT-PAP-002` 及 `tests/spd/admit-product-apply.spec.ts` 一致
- 自动化断言:规划与 CSV `ADMIT-PAP-002` 一致
###### 预期结果 ###### 预期结果
查询无报错;有数据时分页「共 N 条」N≥1;无数据时空态明确。 组合查询无报错;结果与新增日期、销售商(自定义)、耗材类型、物料名称及已填扩展条件一致。
--- ---
##### 【P0】【TC-UI-ADMIT-PAP-003】【TP_ADMIT_PAP_012】物料名称筛选 ##### 【P1】【TC-UI-ADMIT-PAP-003】【ADMIT-PAP-003】重置恢复默认
- 前置条件:默认查询至少 1 条数据 - 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入产品准入申请页(/spd/basic/dataSync/dataSync/productApply/list,无 iframe)
- 操作步骤: - 操作步骤:
1. 从首行读取 `${sampleProductName}` 1. 填入 `${sampleProductName}`2. 点击「重 置」3. 断言筛选恢复默认
2. 填入物料名称,新增日期保持默认,点击「查 询」 - 自动化断言:与 CSV `ADMIT-PAP-003` 及 `tests/spd/admit-product-apply.spec.ts` 一致
3. 断言结果行「物料名称」均包含该关键字
- 自动化断言:规划与 CSV `ADMIT-PAP-003` 一致
###### 预期结果 ###### 预期结果
物料名称与已填关键字匹配。 筛选字段恢复默认;列表按默认规则刷新。
--- ---
##### 【P0】【TC-UI-ADMIT-PAP-004】【TP_ADMIT_PAP_013】名称与耗材类型组合查询 ### 产品准入申请 · 状态与列表
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-PAP-004】【ADMIT-PAP-004】列表核心列完整
- 前置条件:默认查询至少 1 条数据 - 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入产品准入申请页(/spd/basic/dataSync/dataSync/productApply/list,无 iframe);默认查询至少 1 条数据
- 操作步骤: - 操作步骤:
1. 读取首行 `${sampleProductName}`、`${sampleConsumableType}` 1. 断言表头含准入单号、物料编号、物料名称、规格型号、注册规格、注册型号、器械注册人、单位、操作
2. 同时填入后点击「查 询」(日期保持默认) - 自动化断言:与 CSV `ADMIT-PAP-004` 及 `tests/spd/admit-product-apply.spec.ts` 一致
3. 断言结果同时满足两个条件
- 自动化断言:规划与 CSV `ADMIT-PAP-004` 一致
###### 预期结果 ###### 预期结果
组合查询结果同时满足物料名称与耗材类型。类型为空则只断言名称。 核心列可见;操作含「详情」「日志」。
--- ---
##### 【P1】【TC-UI-ADMIT-PAP-005】【TP_ADMIT_PAP_014】重置恢复默认 ##### 【P0】【TC-UI-ADMIT-PAP-005】【ADMIT-PAP-005】切换待申请 Tab
- 前置条件:已进入产品准入申请页 - 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入产品准入申请页(/spd/basic/dataSync/dataSync/productApply/list,无 iframe)
- 操作步骤: - 操作步骤:
1. 填入 `${sampleProductName}` 1. 点击「待申请」2. 断言有数据时行不属于已生效/已作废;计数为 0 时为空态
2. 点击「重 置」 - 自动化断言:与 CSV `ADMIT-PAP-005` 及 `tests/spd/admit-product-apply.spec.ts` 一致
3. 断言筛选恢复默认
- 自动化断言:规划与 CSV `ADMIT-PAP-005` 一致
###### 预期结果 ###### 预期结果
筛选字段恢复默认;列表按默认规则刷新。 待申请 Tab 与列表状态一致。
--- ---
#### 异常验证点 ##### 【P1】【TC-UI-ADMIT-PAP-006】【ADMIT-PAP-006】翻至第 2 页
- 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入产品准入申请页(/spd/basic/dataSync/dataSync/productApply/list,无 iframe);分页总数大于每页条数
- 操作步骤:
1. 记录第 1 页首行准入单号2. 点击页码「2」或「下一页」3. 断言页码高亮为 2,首行单号与第 1 页不同
- 自动化断言:与 CSV `ADMIT-PAP-006` 及 `tests/spd/admit-product-apply.spec.ts` 一致
###### 预期结果
翻页成功且数据更换。不足两页则 skip。
--- ---
### 产品准入申请 · 状态与列表 ##### 【P1】【TC-UI-ADMIT-PAP-007】【ADMIT-PAP-007】跳至指定页
- 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入产品准入申请页(/spd/basic/dataSync/dataSync/productApply/list,无 iframe);总页数不少于 2,分页存在「跳至」
- 操作步骤:
1. 在跳至输入框填入 `2` 并回车2. 断言当前页为 2
- 自动化断言:与 CSV `ADMIT-PAP-007` 及 `tests/spd/admit-product-apply.spec.ts` 一致
###### 预期结果
跳转到第 2 页。无跳至或仅 1 页则 skip。
---
### 产品准入申请 · 新增与导入
#### 功能验证点 #### 功能验证点
##### 【P0】【TC-UI-ADMIT-PAP-006】【TP_ADMIT_PAP_022】列表核心列完整 ##### 【P0】【TC-UI-ADMIT-PAP-008】【ADMIT-PAP-008】打开新增产品后返回
- 前置条件:默认查询至少 1 条数据 - 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入产品准入申请页(/spd/basic/dataSync/dataSync/productApply/list,无 iframe)
- 操作步骤: - 操作步骤:
1. 断言表头含准入单号、产品编号、物料名称、规格型号、注册规格、注册型号、器械注册人、单位、操作 1. 点击「新增产品」2. 断言可见物料名称、器械注册人、规格型号、注册证号及返回3. 点击返回,不保存
- 自动化断言:规划与 CSV `ADMIT-PAP-006` 一致 - 自动化断言:与 CSV `ADMIT-PAP-008` 及 `tests/spd/admit-product-apply.spec.ts` 一致
###### 预期结果 ###### 预期结果
核心列可见;操作含「详情」「日志」。 新增页字段可见;返回后列表不新增记录。
--- ---
##### 【P0】【TC-UI-ADMIT-PAP-007】【TP_ADMIT_PAP_020】切换待申请 Tab ##### 【P0】【TC-UI-ADMIT-PAP-009】【ADMIT-PAP-009】新增取消不落库
- 前置条件:已进入产品准入申请页 - 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入产品准入申请页(/spd/basic/dataSync/dataSync/productApply/list,无 iframe)
- 操作步骤: - 操作步骤:
1. 点击「待申请」 1. 记录分页总数 `${sampleTotal}`2. 打开新增,物料名称填 `${uniqProductName}`(建议 `AUTO-PAP-${timestamp}`)后返回不保存3. 按该名称查询,断言无此行,总数不变
2. 断言有数据时行不属于已生效/已作废;计数为 0 时为空态 - 自动化断言:与 CSV `ADMIT-PAP-009` 及 `tests/spd/admit-product-apply.spec.ts` 一致
- 自动化断言:规划与 CSV `ADMIT-PAP-007` 一致
###### 预期结果 ###### 预期结果
待申请 Tab 与列表状态一致。 取消后不产生新产品。
--- ---
##### 【P1】【TC-UI-ADMIT-PAP-008】【TP_ADMIT_PAP_023】翻至第 2 页 ### 产品准入申请 · 详情、编辑与作废
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-PAP-010】【ADMIT-PAP-010】打开详情后返回
- 前置条件:分页总数大于每页条数 - 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入产品准入申请页(/spd/basic/dataSync/dataSync/productApply/list,无 iframe);默认查询至少 1 条数据
- 操作步骤: - 操作步骤:
1. 记录第 1 页首行准入单号 1. 记录首行 `${sampleProductName}`2. 点击「详情」,断言名称一致3. 返回列表
2. 点击页码「2」或「下一页」 - 自动化断言:与 CSV `ADMIT-PAP-010` 及 `tests/spd/admit-product-apply.spec.ts` 一致
3. 断言页码高亮为 2,首行单号与第 1 页不同
- 自动化断言:规划与 CSV `ADMIT-PAP-008` 一致
###### 预期结果 ###### 预期结果
翻页成功且数据更换。不足两页则 skip。 详情与该行一致;返回后仍在产品准入申请列表。
--- ---
##### 【P1】【TC-UI-ADMIT-PAP-009】【TP_ADMIT_PAP_024】跳至指定页 ##### 【P0】【TC-UI-ADMIT-PAP-011】【ADMIT-PAP-011】待申请编辑回填
- 前置条件:总页数不少于 2,分页存在「跳至」 - 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入产品准入申请页(/spd/basic/dataSync/dataSync/productApply/list,无 iframe);待申请至少 1 行含「编辑」
- 操作步骤: - 操作步骤:
1. 在跳至输入框填入 `2` 并回车 1. 读取该行 `${sampleProductName}`、`${sampleSpec}`2. 点击「编辑」3. 断言名称与规格型号回填一致4. 返回不保存
2. 断言当前页为 2 - 自动化断言:与 CSV `ADMIT-PAP-011` 及 `tests/spd/admit-product-apply.spec.ts` 一致
- 自动化断言:规划与 CSV `ADMIT-PAP-009` 一致
###### 预期结果 ###### 预期结果
跳转到第 2 页。无跳至或仅 1 页则 skip。 编辑回填与列表行一致。无编辑按钮则 skip。
--- ---
### 产品准入申请 · 新增与导入 ##### 【P1】【TC-UI-ADMIT-PAP-012】【ADMIT-PAP-012】编辑取消不保存
#### 功能验证点 - 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入产品准入申请页(/spd/basic/dataSync/dataSync/productApply/list,无 iframe);存在可编辑行
- 操作步骤:
1. 打开编辑,把物料名称改为 `${uniqProductName}` 后返回不保存2. 再次打开,断言名称仍为原值
- 自动化断言:与 CSV `ADMIT-PAP-012` 及 `tests/spd/admit-product-apply.spec.ts` 一致
##### 【P0】【TC-UI-ADMIT-PAP-010】【TP_ADMIT_PAP_027】打开新增产品后返回 ###### 预期结果
- 前置条件:已进入产品准入申请页 取消后数据不变。
---
##### 【P0】【TC-UI-ADMIT-PAP-013】【ADMIT-PAP-013】作废确认后取消
- 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入产品准入申请页(/spd/basic/dataSync/dataSync/productApply/list,无 iframe);待申请至少 1 条可勾选
- 操作步骤: - 操作步骤:
1. 点击「新增产品」 1. 勾选 1 行并点击「作 废」2. 断言确认框出现3. 点击「取 消」4. 断言该行仍在,状态未变为已作废
2. 断言可见物料名称、器械注册人、规格型号、注册证号及返回 - 自动化断言:与 CSV `ADMIT-PAP-013` 及 `tests/spd/admit-product-apply.spec.ts` 一致
3. 点击返回,不保存
- 自动化断言:规划与 CSV `ADMIT-PAP-010` 一致
###### 预期结果 ###### 预期结果
新增页字段可见;返回后列表不新增记录。 取消作废不改变状态。本条不点击确定。
--- ---
##### 【P0】【TC-UI-ADMIT-PAP-011】【TP_ADMIT_PAP_029】新增取消不落库 ##### 【P1】【TC-UI-ADMIT-PAP-014】【ADMIT-PAP-014】已通过行不提供编辑
- 前置条件:已进入产品准入申请页 - 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入产品准入申请页(/spd/basic/dataSync/dataSync/productApply/list,无 iframe);已通过 Tab 计数大于 0
- 操作步骤: - 操作步骤:
1. 记录分页总数 `${sampleTotal}` 1. 切换「已通过」2. 断言首行无「编辑」,或打开后保存被拒绝
2. 打开新增,物料名称填 `${uniqProductName}`(建议 `AUTO-PAP-${timestamp}`)后返回不保存 - 自动化断言:与 CSV `ADMIT-PAP-014` 及 `tests/spd/admit-product-apply.spec.ts` 一致
3. 按该名称查询,断言无此行,总数不变
- 自动化断言:规划与 CSV `ADMIT-PAP-011` 一致
###### 预期结果 ###### 预期结果
取消后不产生新产品。 已通过行不能改写物料名称。计数为 0 则 skip。
--- ---
### 产品准入申请 · 分页
#### 边界验证点
##### 【P1】【TC-UI-ADMIT-PAP-015】【ADMIT-PAP-015】切换20条每页页面正常且列表同步
- 前置条件:测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 准入管理」权限;已进入产品准入申请页(/spd/basic/dataSync/dataSync/productApply/list,无 iframe);默认查询总条数大于 10 且切换前可见行数不等于 min(N,20),否则 skip
- 操作步骤:
1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录2. 点击「查 询」,记录分页「共 N 条」与当前页可见行数3. 分页区切换每页条数为「20 条/页」4. 断言分页显示 20 条/页;总条数 N 不变;当前页行数为 min(N,20) 且与切换前不同;筛选区、表头可见无报错
- 自动化断言:与 CSV `ADMIT-PAP-015` 及 `tests/spd/admit-product-apply.spec.ts` 一致
###### 预期结果
切换 20 条/页成功;页面正常;列表可见行数随每页条数同步变化且总数不变。
--- ---
#### 异常验证点 ### 产品准入申请 · 列表
#### 边界验证点
##### 【P1】【TC-UI-ADMIT-PAP-016】【ADMIT-PAP-016】物料编号列升序降序切换
- 前置条件:测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 准入管理」权限;已进入产品准入申请页(/spd/basic/dataSync/dataSync/productApply/list,无 iframe);列表表头已加载;至少 2 条数据,否则 skip
- 操作步骤:
1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录2. 默认查询后列表有数据3. 横向滚动使「物料编号」列表头可见(宽表时)4. 第一次点击该列排序控件并校验升序指示器5. 第二次点击并校验降序指示器
- 自动化断言:与 CSV `ADMIT-PAP-016` 及 `tests/spd/admit-product-apply.spec.ts` 一致
###### 预期结果
排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。
--- ---
### 产品准入申请 · 详情、编辑与作废 ##### 【P1】【TC-UI-ADMIT-PAP-017】【ADMIT-PAP-017】物料名称列升序降序切换
#### 功能验证点 - 前置条件:测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 准入管理」权限;已进入产品准入申请页(/spd/basic/dataSync/dataSync/productApply/list,无 iframe);列表表头已加载;至少 2 条数据,否则 skip
- 操作步骤:
1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录2. 默认查询后列表有数据3. 横向滚动使「物料名称」列表头可见(宽表时)4. 第一次点击该列排序控件并校验升序指示器5. 第二次点击并校验降序指示器
- 自动化断言:与 CSV `ADMIT-PAP-017` 及 `tests/spd/admit-product-apply.spec.ts` 一致
###### 预期结果
排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。
--- ---
##### 【P1】【TC-UI-ADMIT-PAP-018】【ADMIT-PAP-018】规格型号列升序降序切换
- 前置条件:测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 准入管理」权限;已进入产品准入申请页(/spd/basic/dataSync/dataSync/productApply/list,无 iframe);列表表头已加载;至少 2 条数据,否则 skip
- 操作步骤:
1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录2. 默认查询后列表有数据3. 横向滚动使「规格型号」列表头可见(宽表时)4. 第一次点击该列排序控件并校验升序指示器5. 第二次点击并校验降序指示器
- 自动化断言:与 CSV `ADMIT-PAP-018` 及 `tests/spd/admit-product-apply.spec.ts` 一致
###### 预期结果
排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。
--- ---
##### 【P1】【TC-UI-ADMIT-PAP-012】【TP_ADMIT_PAP_049】编辑取消不保存 ##### 【P1】【TC-UI-ADMIT-PAP-019】【ADMIT-PAP-019】器械注册人列升序降序切换
- 前置条件:存在可编辑行 - 前置条件:测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 准入管理」权限;已进入产品准入申请页(/spd/basic/dataSync/dataSync/productApply/list,无 iframe);列表表头已加载;至少 2 条数据,否则 skip
- 操作步骤: - 操作步骤:
1. 打开编辑,把物料名称改为 `${uniqProductName}` 后返回不保存 1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录2. 默认查询后列表有数据3. 横向滚动使「器械注册人」列表头可见(宽表时)4. 第一次点击该列排序控件并校验升序指示器5. 第二次点击并校验降序指示器
2. 再次打开,断言名称仍为原值 - 自动化断言:与 CSV `ADMIT-PAP-019` 及 `tests/spd/admit-product-apply.spec.ts` 一致
- 自动化断言:规划与 CSV `ADMIT-PAP-012` 一致
###### 预期结果 ###### 预期结果
取消后数据不变。 排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。
--- ---
##### 【P0】【TC-UI-ADMIT-PAP-013】【TP_ADMIT_PAP_041】作废确认后取消 ##### 【P1】【TC-UI-ADMIT-PAP-020】【ADMIT-PAP-020】单位列升序降序切换
- 前置条件:待申请至少 1 条可勾选 - 前置条件:测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 准入管理」权限;已进入产品准入申请页(/spd/basic/dataSync/dataSync/productApply/list,无 iframe);列表表头已加载;至少 2 条数据,否则 skip
- 操作步骤: - 操作步骤:
1. 勾选 1 行并点击「作 废」 1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录2. 默认查询后列表有数据3. 横向滚动使「单位」列表头可见(宽表时)4. 第一次点击该列排序控件并校验升序指示器5. 第二次点击并校验降序指示器
2. 断言确认框出现 - 自动化断言:与 CSV `ADMIT-PAP-020` 及 `tests/spd/admit-product-apply.spec.ts` 一致
3. 点击「取 消」
4. 断言该行仍在,状态未变为已作废
- 自动化断言:规划与 CSV `ADMIT-PAP-013` 一致
###### 预期结果 ###### 预期结果
取消作废不改变状态。本条不点击确定。 排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。
--- ---
##### 【P1】【TC-UI-ADMIT-PAP-014】【TP_ADMIT_PAP_051】已通过行不提供编辑 ##### 【P1】【TC-UI-ADMIT-PAP-021】【ADMIT-PAP-021】耗材类型列升序降序切换
- 前置条件:已通过 Tab 计数大于 0 - 前置条件:测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 准入管理」权限;已进入产品准入申请页(/spd/basic/dataSync/dataSync/productApply/list,无 iframe);列表表头已加载;至少 2 条数据,否则 skip
- 操作步骤: - 操作步骤:
1. 切换「已通过」 1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录2. 默认查询后列表有数据3. 横向滚动使「耗材类型」列表头可见(宽表时)4. 第一次点击该列排序控件并校验升序指示器5. 第二次点击并校验降序指示器
2. 断言首行无「编辑」,或打开后保存被拒绝 - 自动化断言:与 CSV `ADMIT-PAP-021` 及 `tests/spd/admit-product-apply.spec.ts` 一致
- 自动化断言:规划与 CSV `ADMIT-PAP-014` 一致
###### 预期结果 ###### 预期结果
已通过行不能改写物料名称。计数为 0 则 skip。 排序按钮可点击;升序与降序指示器分别激活;列表仍有数据。
--- ---
#### 功能验证点
##### 【P2】【TC-UI-ADMIT-PAP-022】【ADMIT-PAP-022】列设置隐藏后再恢复
- 前置条件:测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 准入管理」权限;已进入产品准入申请页(/spd/basic/dataSync/dataSync/productApply/list,无 iframe);列表表头已加载;存在可隐藏的非核心列
- 操作步骤:
1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」并等待列表稳定
3. 打开列设置,取消勾选一列非核心字段并关闭,断言表头隐藏
4. 再次打开列设置勾选恢复并关闭,断言表头恢复
- 自动化断言:与 CSV `ADMIT-PAP-022` 及 `tests/spd/admit-product-apply.spec.ts` 一致
###### 预期结果
勾选状态与表头一致。
## 质量与覆盖说明 ## 质量与覆盖说明
| 项 | 说明 | | 项 | 说明 |
|----|------| |----|------|
| 用例数 | **19** 条(P0=11 / P1=8) | | 用例数 | **22** 条(P0=9 / P1=12 / P2=1) |
| 来源 | 从 56 条测试点选取可稳定自动化的主路径与关键反向 | | 来源 | 与 `testcase/` CSV 同源;CSV 变更后请重新运行本生成脚本 |
| 未纳入自动化 | 未登录/权限、合法新增落库、Excel 真实导入、确认生成申请单、一键生成、确认作废、跨单列表追溯 |
| 单一职责 | 每条只断言一个核心业务结果 | | 单一职责 | 每条只断言一个核心业务结果 |
# 基础管理-准入管理-供货目录申请 UI 自动化测试用例 # 基础管理-准入管理-供货目录申请-UI自动化测试用例-01 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-准入管理-供货目录申请-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-准入管理-供货目录申请-UI自动化测试用例-01.csv` **执行 CSV**:`testcase/基础管理-准入管理-供货目录申请-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/dataSync/dataSync/supplyApply/list` **页面 URL**:`/spd/basic/dataSync/dataSync/supplyApply/list`
**定位器 YAML**:`locators/spd/admit-supply.locator.yaml` **自动化 Spec**:`tests/spd/admit-supply.spec.ts`(依赖 `auth.setup` 登录态)
**元素扫描**:`data/scan/admit-supply-elements.json`(117 项) **版本**:2026-11-03
**版本**:2026-09-22
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/admit-supply.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:已执行 `auth.setup`,`storageState` 有效;测试账号具备「基础设置 → 准入管理 → 供货目录申请」权限。 **通用前置**:正例账号 `test_1` 经 `auth.setup` 写入 `storageState`(密码仅存 `.env` 的 `TEST_PASS`)。
**页面约定**:整页渲染,**无报表 iframe**。 **页面约定**:整页渲染,**无报表 iframe**;每用例独立 BrowserContext(见 playwright-storage-state-isolation)。
**菜单导航**:展开「基础设置 → 准入管理」后,点击 `.ant-menu-item` 文案精确为「供货目录申请」。
**写操作**:不提交新申请、不导入 Excel、不确认批量提交。新增页只做打开、取消和空提交拦截。
**动态取数约定**:
1. 默认查询后从首行读取 `${sampleOrderNo}`、`${sampleHospitalSupplier}`、`${sampleSecondSupplier}`、`${sampleBizMode}`、`${sampleDefaultFlag}`。
2. **禁止写死**供应商名称与申请单号。
3. 状态 Tab:全部、待提交、审批中、已通过、已驳回。无待提交行时,编辑与批量勾选用例 skip。
--- ---
## 基础设置 · 准入管理 ## 基础设置 · 准入管理
### 供货目录申请 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-SUP-001】【TP_ADMIT_SUP_001】菜单进入供货目录申请页
- 前置条件:已登录且具备准入管理权限
- 操作步骤:
1. 按菜单「基础设置 → 准入管理 → 供货目录申请」进入
2. 断言 URL 含 `/spd/basic/dataSync/dataSync/supplyApply/list`
3. 断言可见「查 询」、「批量提交」、「新 增」及列表表头
- 自动化断言:规划与 CSV `ADMIT-SUP-001` 及 `tests/spd/admit-supply.spec.ts` 一致
###### 预期结果
进入供货目录申请页;不误入准入任务分配。
---
### 供货目录申请 · 筛选与状态 ### 供货目录申请 · 筛选与状态
#### 功能验证点 #### 异常验证点
##### 【P0】【TC-UI-ADMIT-SUP-002】【TP_ADMIT_SUP_009】默认查询列表有数据或空态明确 ##### 【P0】【TC-UI-ADMIT-SUP-001】【ADMIT-SUP-001】默认查询列表有数据或空态明确
- 前置条件:已进入供货目录申请页 - 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入供货目录申请页(/spd/basic/dataSync/dataSync/supplyApply/list,无 iframe)
- 操作步骤: - 操作步骤:
1. 点击「查 询」并等待列表稳定 1. 点击「查 询」并等待列表稳定
2. 断言出现数据行,或「暂无数据」且分页总数为 0 2. 断言出现数据行,或「暂无数据」且分页总数为 0
- 自动化断言:规划与 CSV `ADMIT-SUP-002` 一致 - 自动化断言:与 CSV `ADMIT-SUP-001` 及 `tests/spd/admit-supply.spec.ts` 一致
###### 预期结果 ###### 预期结果
...@@ -59,22 +30,14 @@ ...@@ -59,22 +30,14 @@
--- ---
##### 【P1】【TC-UI-ADMIT-SUP-002】【ADMIT-SUP-002】变更单号无匹配空态(mock反例)
--- - 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入供货目录申请页(/spd/basic/dataSync/dataSync/supplyApply/list,无 iframe)
---
#### 异常验证点
##### 【P1】【TC-UI-ADMIT-SUP-003】【TP_ADMIT_SUP_019】变更单号无匹配空态(mock反例)
- 前置条件:已进入供货目录申请页
- 操作步骤: - 操作步骤:
1. 变更单号填入 `__NOT_EXIST_ORDER__99999`;若筛选区无此框,则在物料名称填同一 mock 1. 变更单号填入 `__NOT_EXIST_ORDER__99999`;若筛选区无此框,则在物料名称填同一 mock
2. 点击「查 询」 2. 点击「查 询」
3. 断言空态且分页总数为 0 3. 断言空态且分页总数为 0
- 自动化断言:规划与 CSV `ADMIT-SUP-003` 一致 - 自动化断言:与 CSV `ADMIT-SUP-002` 及 `tests/spd/admit-supply.spec.ts` 一致
###### 预期结果 ###### 预期结果
...@@ -84,12 +47,12 @@ ...@@ -84,12 +47,12 @@
#### 功能验证点 #### 功能验证点
##### 【P0】【TC-UI-ADMIT-SUP-004】【TP_ADMIT_SUP_014】列表核心列完整 ##### 【P0】【TC-UI-ADMIT-SUP-003】【ADMIT-SUP-003】列表核心列完整
- 前置条件:默认查询至少 1 条数据 - 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入供货目录申请页(/spd/basic/dataSync/dataSync/supplyApply/list,无 iframe);默认查询至少 1 条数据
- 操作步骤: - 操作步骤:
1. 断言表头含申请单号、申请人、申请时间、进院供应商、二级供应商、业务模式、是否默认、备注、操作 1. 断言表头含申请单号、申请人、申请时间、进院供应商、二级供应商、业务模式、是否默认、备注、操作
- 自动化断言:规划与 CSV `ADMIT-SUP-004` 一致 - 自动化断言:与 CSV `ADMIT-SUP-003` 及 `tests/spd/admit-supply.spec.ts` 一致
###### 预期结果 ###### 预期结果
...@@ -97,14 +60,14 @@ ...@@ -97,14 +60,14 @@
--- ---
##### 【P0】【TC-UI-ADMIT-SUP-005】【TP_ADMIT_SUP_013】切换待提交 Tab 且计数一致 ##### 【P0】【TC-UI-ADMIT-SUP-004】【ADMIT-SUP-004】切换待提交 Tab 且计数一致
- 前置条件:已进入供货目录申请页 - 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入供货目录申请页(/spd/basic/dataSync/dataSync/supplyApply/list,无 iframe)
- 操作步骤: - 操作步骤:
1. 点击「待提交」 1. 点击「待提交」
2. 读取括号数量 2. 读取括号数量
3. 断言分页「共 N 条」等于该数量;有数据时状态为待提交 3. 断言分页「共 N 条」等于该数量;有数据时状态为待提交
- 自动化断言:规划与 CSV `ADMIT-SUP-005` 一致 - 自动化断言:与 CSV `ADMIT-SUP-004` 及 `tests/spd/admit-supply.spec.ts` 一致
###### 预期结果 ###### 预期结果
...@@ -116,36 +79,30 @@ ...@@ -116,36 +79,30 @@
#### 功能验证点 #### 功能验证点
##### 【P0】【TC-UI-ADMIT-SUP-005】【ADMIT-SUP-005】新增放弃不落库
--- - 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入供货目录申请页(/spd/basic/dataSync/dataSync/supplyApply/list,无 iframe)
---
##### 【P1】【TC-UI-ADMIT-SUP-006】【TP_ADMIT_SUP_048】业务模式与是否默认只切换不提交
- 前置条件:已打开新增页
- 操作步骤: - 操作步骤:
1. 展开业务模式、是否默认,断言存在可选项 1. 记录总数 `${sampleTotal}`
2. 各选一项后返回,不提交 2. 打开新增,备注填 `${uniqRemark}`(建议 `AUTO-SUP-${timestamp}`)后返回不提交
3. 断言列表总数不变 3. 断言总数不变,列表无该备注
- 自动化断言:规划与 CSV `ADMIT-SUP-006` 一致 - 自动化断言:与 CSV `ADMIT-SUP-005` 及 `tests/spd/admit-supply.spec.ts` 一致
###### 预期结果 ###### 预期结果
选项可见;不提交则无新单。 未提交不产生申请单。
--- ---
##### 【P0】【TC-UI-ADMIT-SUP-007】【TP_ADMIT_SUP_025】待提交编辑回填 ##### 【P0】【TC-UI-ADMIT-SUP-006】【ADMIT-SUP-006】待提交编辑回填
- 前置条件:待提交至少 1 行含「编辑」 - 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入供货目录申请页(/spd/basic/dataSync/dataSync/supplyApply/list,无 iframe);待提交至少 1 行含「编辑」
- 操作步骤: - 操作步骤:
1. 读取该行 `${sampleHospitalSupplier}`、`${sampleBizMode}`、`${sampleDefaultFlag}` 1. 读取该行 `${sampleHospitalSupplier}`、`${sampleBizMode}`、`${sampleDefaultFlag}`
2. 点击「编辑」 2. 点击「编辑」
3. 断言进院供应商、业务模式、是否默认与该行一致 3. 断言进院供应商、业务模式、是否默认与该行一致
4. 返回不提交 4. 返回不提交
- 自动化断言:规划与 CSV `ADMIT-SUP-007` 一致 - 自动化断言:与 CSV `ADMIT-SUP-006` 及 `tests/spd/admit-supply.spec.ts` 一致
###### 预期结果 ###### 预期结果
...@@ -153,13 +110,13 @@ ...@@ -153,13 +110,13 @@
--- ---
##### 【P1】【TC-UI-ADMIT-SUP-008】【TP_ADMIT_SUP_026】编辑取消不保存 ##### 【P1】【TC-UI-ADMIT-SUP-007】【ADMIT-SUP-007】编辑取消不保存
- 前置条件:存在可编辑的待提交行 - 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入供货目录申请页(/spd/basic/dataSync/dataSync/supplyApply/list,无 iframe);存在可编辑的待提交行
- 操作步骤: - 操作步骤:
1. 打开编辑,把备注改为 `${uniqRemark}` 后返回不提交 1. 打开编辑,把备注改为 `${uniqRemark}` 后返回不提交
2. 再次打开,断言备注仍为原值 2. 再次打开,断言备注仍为原值
- 自动化断言:规划与 CSV `ADMIT-SUP-008` 一致 - 自动化断言:与 CSV `ADMIT-SUP-007` 及 `tests/spd/admit-supply.spec.ts` 一致
###### 预期结果 ###### 预期结果
...@@ -167,11 +124,104 @@ ...@@ -167,11 +124,104 @@
--- ---
### 供货目录申请 · 批量提交与详情
#### 异常验证点 #### 异常验证点
##### 【P1】【TC-UI-ADMIT-SUP-008】【ADMIT-SUP-008】未勾选时批量提交不可用
- 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入供货目录申请页(/spd/basic/dataSync/dataSync/supplyApply/list,无 iframe),无勾选行
- 操作步骤:
1. 断言「批量提交」计数为 0,或按钮不可用
2. 若仍可点击,断言出现请选择提示,且无单据离开待提交
- 自动化断言:与 CSV `ADMIT-SUP-008` 及 `tests/spd/admit-supply.spec.ts` 一致
###### 预期结果
未勾选不提交任何申请单。
--- ---
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-SUP-009】【ADMIT-SUP-009】勾选后批量提交取消
- 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入供货目录申请页(/spd/basic/dataSync/dataSync/supplyApply/list,无 iframe);待提交至少 1 条
- 操作步骤:
1. 勾选 1 行,记录申请单号与状态
2. 点击「批量提交」
3. 若出现确认框,点「取 消」
4. 断言该单仍为待提交
- 自动化断言:与 CSV `ADMIT-SUP-009` 及 `tests/spd/admit-supply.spec.ts` 一致
###### 预期结果
取消批量提交不改变状态。本条不点击确定。无待提交则 skip。
---
### 供货目录申请 · 筛选与状态
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-SUP-010】【ADMIT-SUP-010】多条件组合查询(制单日期等6项)
- 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 · 准入管理」权限;已进入准入管理对应功能页;筛选区已展开
- 操作步骤:
1. 进入页面并等待列表加载
2. 「制单日期」日期区间选择当天
3. 「销售商」下拉选择任一可选项
4. 「供应商」下拉选择任一可选项
5. 「变更单号」填写关键字
6. 「物料名称」填写关键字
7. 「规格型号」填写关键字
8. 点击「查询」
9. 检查列表返回结果
- 自动化断言:与 CSV `ADMIT-SUP-010` 及 `tests/spd/admit-supply.spec.ts` 一致
###### 预期结果
多条件同时生效:制单日期、销售商、供应商、变更单号、物料名称、规格型号 均成功录入/选中;点击查询后请求携带全部条件(页面无报错提示),列表按条件刷新并呈现匹配数据或明确空态,条件之间为「且」关系
---
### 供货目录申请 · 分页
#### 边界验证点
##### 【P1】【TC-UI-ADMIT-SUP-011】【ADMIT-SUP-011】切换20条每页页面正常且列表同步
- 前置条件:测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 准入管理」权限;已进入供货目录申请页(/spd/basic/dataSync/dataSync/supplyApply/list,无 iframe);默认查询总条数大于 10 且切换前可见行数不等于 min(N,20),否则 skip
- 操作步骤:
1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」,记录分页「共 N 条」与当前页可见行数
3. 分页区切换每页条数为「20 条/页」
4. 断言分页显示 20 条/页;总条数 N 不变;当前页行数为 min(N,20) 且与切换前不同;筛选区、表头可见无报错
- 自动化断言:与 CSV `ADMIT-SUP-011` 及 `tests/spd/admit-supply.spec.ts` 一致
###### 预期结果
切换 20 条/页成功;页面正常;列表可见行数随每页条数同步变化且总数不变。
---
### 供货目录申请 · 筛选与状态
#### 功能验证点
##### 【P1】【TC-UI-ADMIT-SUP-012】【ADMIT-SUP-012】重置恢复默认
- 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入供货目录申请页(/spd/basic/dataSync/dataSync/supplyApply/list,无 iframe)
- 操作步骤:
1. 点击「查 询」
2. 在变更单号或物料名称填入关键字(若无文本框则选中进院供应商)
3. 点击「重 置」
4. 断言筛选恢复默认;列表刷新无报错
- 自动化断言:与 CSV `ADMIT-SUP-012` 及 `tests/spd/admit-supply.spec.ts` 一致
###### 预期结果
筛选恢复默认;列表按默认规则刷新。
--- ---
...@@ -179,31 +229,159 @@ ...@@ -179,31 +229,159 @@
#### 功能验证点 #### 功能验证点
##### 【P1】【TC-UI-ADMIT-SUP-009】【TP_ADMIT_SUP_042】未勾选时批量提交不可用 ##### 【P0】【TC-UI-ADMIT-SUP-013】【ADMIT-SUP-013】详情页供应商与列表一致
- 前置条件:已进入供货目录申请页,无勾选行 - 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入供货目录申请页(/spd/basic/dataSync/dataSync/supplyApply/list,无 iframe);默认查询至少 1 条含「详情」
- 操作步骤: - 操作步骤:
1. 断言「批量提交」计数为 0,或按钮不可用 1. 从首行读取 `${sampleHospitalSupplier}`、`${sampleSecondarySupplier}`
2. 若仍可点击,断言出现请选择提示,且无单据离开待提交 2. 点击「详情」
- 自动化断言:规划与 CSV `ADMIT-SUP-009` 一致 3. 断言详情页进院供应商、二级供应商与列表该行一致
4. 返回列表
- 自动化断言:与 CSV `ADMIT-SUP-013` 及 `tests/spd/admit-supply.spec.ts` 一致
###### 预期结果 ###### 预期结果
未勾选不提交任何申请单。 详情页两级供应商与列表行一致。无详情则 skip。
---
### 供货目录申请 · 列表
#### 功能验证点
##### 【P2】【TC-UI-ADMIT-SUP-014】【ADMIT-SUP-014】列设置隐藏后再恢复
- 前置条件:测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 准入管理」权限;已进入供货目录申请页(/spd/basic/dataSync/dataSync/supplyApply/list,无 iframe);列表表头已加载;存在可隐藏的非核心列
- 操作步骤:
1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」并等待列表稳定
3. 打开列设置,取消勾选一列非核心字段并关闭,断言表头隐藏
4. 再次打开列设置勾选恢复并关闭,断言表头恢复
- 自动化断言:与 CSV `ADMIT-SUP-014` 及 `tests/spd/admit-supply.spec.ts` 一致
###### 预期结果
勾选状态与表头一致。
---
### 供货目录申请 · 批量提交与详情
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-SUP-015】【ADMIT-SUP-015】仅待提交 Tab 行复选框可勾选
- 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已进入供货目录申请页(/spd/basic/dataSync/dataSync/supplyApply/list,无 iframe);待提交 Tab 至少 1 条;且「已通过」「审批中」「已驳回」或「全部」中至少一 Tab 有数据
- 操作步骤:
1. 点击「查 询」
2. 在首个有数据的非待提交 Tab,抽样断言行前复选框不可勾选
3. 切换「待提交」,勾选首行复选框并断言勾选成功
4. 取消勾选
- 自动化断言:与 CSV `ADMIT-SUP-015` 及 `tests/spd/admit-supply.spec.ts` 一致
###### 预期结果
仅待提交列表行前复选框可勾选;其它 Tab 不可勾选。缺对比数据或非待提交无数据则 skip。
---
### 供货目录申请 · 明细查询切换
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-SUP-016】【ADMIT-SUP-016】可正常切换至供货目录申请明细查询
- 前置条件:测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录;已进入供货目录申请页(/spd/basic/dataSync/dataSync/supplyApply/list,无 iframe)
- 操作步骤:
1. 打开页面并点击「查 询」等待列表稳定
2. 点击顶部 Tab「供货目录申请明细查询」
3. 断言 URL 仍含 supplyApply/list、该 Tab 高亮、明细筛选区(物料名称/生产厂家/计划生效日期/申请单号)可见
4. 断言表头含申请单号、物料名称,分页「共 N 条」与结果一致
- 自动化断言:与 CSV `ADMIT-SUP-016` 及 `tests/spd/admit-supply.spec.ts` 一致
###### 预期结果
切换后明细 Tab 高亮且数据区刷新;筛选字段与列可见;无报错。
--- ---
### 供货目录申请明细查询 · 快捷筛选查询
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-SUP-017】【ADMIT-SUP-017】物料名称、生产厂家、计划生效日期、申请单号组合查询
- 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已切换至供货目录申请明细查询 Tab;列表至少 1 条
- 操作步骤:
1. 读取首行申请单号与计划生效时间,取计划生效时间当天作为日期样本
2. 「物料名称」填 管、「生产厂家」填 医疗、「计划生效日期」选该天、「申请单号」填首行单号
3. 点击「查 询」并等待列表稳定
4. 断言至少 2 个条件生效;结果行或明确空态;无报错
- 自动化断言:与 CSV `ADMIT-SUP-017` 及 `tests/spd/admit-supply.spec.ts` 一致
###### 预期结果
四项条件同时录入;查询后列表按条件刷新并呈现匹配数据或空态。
--- ---
##### 【P1】【TC-UI-ADMIT-SUP-018】【ADMIT-SUP-018】重置恢复默认
- 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已切换至供货目录申请明细查询 Tab
- 操作步骤:
1. 在「申请单号」(或「生产厂家」)填入关键字
2. 点击「重 置」
3. 断言该输入框已清空,列表按默认规则刷新且无报错
- 自动化断言:与 CSV `ADMIT-SUP-018` 及 `tests/spd/admit-supply.spec.ts` 一致
###### 预期结果
筛选恢复默认;列表刷新无报错。
--- ---
### 供货目录申请明细查询 · 列表
#### 功能验证点
##### 【P2】【TC-UI-ADMIT-SUP-019】【ADMIT-SUP-019】列设置功能
- 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已切换至供货目录申请明细查询 Tab;列表表头已加载;存在可隐藏的非核心列
- 操作步骤:
1. 打开表格右侧齿轮(列设置)
2. 取消勾选一列非核心字段(申请人/业务模式/是否默认)后关闭,断言表头隐藏
3. 再次打开列设置,断言勾选状态为未选
4. 勾选恢复并关闭,断言表头恢复
- 自动化断言:与 CSV `ADMIT-SUP-019` 及 `tests/spd/admit-supply.spec.ts` 一致
###### 预期结果
勾选状态与表头一致;无报错。
---
### 供货目录申请明细查询 · 导出
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-SUP-020】【ADMIT-SUP-020】当前查询条件下导出不报错
- 前置条件:测试环境可访问;已通过 auth.setup 写入 storageState 登录;已切换至供货目录申请明细查询 Tab;查询结果至少 1 条
- 操作步骤:
1. 点击「查 询」等待列表稳定
2. 点击「导出」
3. 若出现二次确认则确认
4. 断言出现下载/导出任务/成功提示之一,且无错误提示、页面仍在该 Tab
- 自动化断言:与 CSV `ADMIT-SUP-020` 及 `tests/spd/admit-supply.spec.ts` 一致
###### 预期结果
导出有反馈;页面不白屏、不跳登录页。
## 质量与覆盖说明 ## 质量与覆盖说明
| 项 | 说明 | | 项 | 说明 |
|----|------| |----|------|
| 用例数 | **17** 条(P0=11 / P1=6) | | 用例数 | **20** 条(P0=12 / P1=6 / P2=2) |
| 来源 | 从 48 条测试点选取查询、新增拦截、编辑回填、批量提交取消与详情 | | 来源 | 与 `testcase/` CSV 同源;CSV 变更后请重新运行本生成脚本 |
| 未纳入自动化 | 未登录/权限、真实提交、Excel 导入落库、确认批量提交、是否默认冲突后的供货关系回写 |
| 单一职责 | 每条只断言一个核心业务结果 | | 单一职责 | 每条只断言一个核心业务结果 |
# 基础管理-医院资料-医院信息登记 UI 自动化测试用例 # 基础管理-医院资料-医院信息登记 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-医院资料-医院信息登记-测试点分析-01.md` **来源测试点**:`testpoint/基础管理-医院资料-医院信息登记-测试点分析-01.md`
**执行 CSV**:待生成 `testcase/基础管理-医院资料-医院信息登记-UI自动化测试用例-01.csv` **执行 CSV**:`testcase/基础管理-医院资料-医院信息登记-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/hospital/paltform/info` **页面 URL**:`/spd/basic/hospital/paltform/info`
**定位器 YAML**:`locators/spd/basic-hospital-info.locator.yaml` **定位器 YAML**:`locators/spd/basic-hospital-info.locator.yaml`
**元素扫描**:`data/scan/basic-hospital-info-elements.json`(38 项) **元素扫描**:`data/scan/basic-hospital-info-elements.json`(38 项)
**版本**:2026-09-16 **版本**:2026-09-16
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/basic-hospital-info.spec.ts`,依赖 `auth.setup` 登录态) **自动化框架**:Playwright + TypeScript(`tests/spd/basic-hospital-info.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:已执行 `auth.setup`,`storageState` 有效;测试账号具备「基础设置 → 医院资料 → 医院信息登记」权限。 **通用前置**:已执行 `auth.setup`,`storageState` 有效;测试账号具备「基础设置 → 医院资料 → 医院信息登记」权限。
**页面约定**:整页渲染,**无报表 iframe**。 **页面约定**:整页渲染,**无报表 iframe**。
**菜单导航**:`page.getByRole('menuitem', { name: '医院信息登记', exact: true })`。 **菜单导航**:`page.getByRole('menuitem', { name: '医院信息登记', exact: true })`。
**写操作**:保存前读取原值 `${sampleLinkman}` / `${sampleContactWay}` / `${sampleShortName}`,用例结束必须恢复,禁止写死并留下脏数据。 **写操作**:005 取消不落库;006–008 空值保存拦截后取消,不提交脏数据。已删除原「保存后字段持久化」写库用例。
--- ---
...@@ -21,28 +21,13 @@ ...@@ -21,28 +21,13 @@
#### 功能验证点 #### 功能验证点
##### 【P0】【TC-UI-BASIC-HOS-001】【TP_BASIC_HOS_001】菜单进入医院信息登记页 ##### 【P0】【TC-UI-BASIC-HOS-001】【TP_BASIC_HOS_009】查看态只读字段不可改
- 前置条件:已登录且具备医院资料权限
- 操作步骤:
1. 按菜单进入「医院信息登记」
2. 断言 URL 含 `/spd/basic/hospital/paltform/info`
3. 断言可见「编 辑」及医院编码/名称/地址等详情标签
- 自动化断言:规划与 CSV `BASIC-HOS-001` 及 `tests/spd/basic-hospital-info.spec.ts` 一致
###### 预期结果
进入详情页;不误入公告/院区/财务月份页;查看态「编辑」可见。
---
##### 【P0】【TC-UI-BASIC-HOS-002】【TP_BASIC_HOS_009】查看态只读字段不可改
- 前置条件:已进入医院信息登记且未点编辑 - 前置条件:已进入医院信息登记且未点编辑
- 操作步骤: - 操作步骤:
1. 断言医院编码、医院名称、地址区域无可用输入框 1. 断言医院编码、医院名称、地址区域无可用输入框
2. 断言「保 存」「取 消」不可见 2. 断言「保 存」「取 消」不可见
- 自动化断言:规划与 CSV `BASIC-HOS-002` 一致 - 自动化断言:与 CSV `BASIC-HOS-001` 及 `tests/spd/basic-hospital-info.spec.ts` 一致
###### 预期结果 ###### 预期结果
...@@ -50,13 +35,13 @@ ...@@ -50,13 +35,13 @@
--- ---
##### 【P1】【TC-UI-BASIC-HOS-003】【TP_BASIC_HOS_011】已上传图片可预览 ##### 【P1】【TC-UI-BASIC-HOS-002】【TP_BASIC_HOS_011】已上传图片可预览
- 前置条件:当前医院已有登录页背景或 logo - 前置条件:当前医院已有登录页背景或 logo
- 操作步骤: - 操作步骤:
1. 点击「预览文件」(背景或 logo 任一可见项) 1. 点击「预览文件」(背景或 logo 任一可见项)
2. 断言预览打开或新预览层可见 2. 断言预览打开或新预览层可见
- 自动化断言:规划与 CSV `BASIC-HOS-003` 一致;均无预览入口则 skip - 自动化断言:与 CSV `BASIC-HOS-002` 一致;均无预览入口则 skip
###### 预期结果 ###### 预期结果
...@@ -68,14 +53,14 @@ ...@@ -68,14 +53,14 @@
#### 功能验证点 #### 功能验证点
##### 【P0】【TC-UI-BASIC-HOS-004】【TP_BASIC_HOS_015】进入编辑模式 ##### 【P0】【TC-UI-BASIC-HOS-003】【TP_BASIC_HOS_015】进入编辑模式
- 前置条件:已进入医院信息登记查看态 - 前置条件:已进入医院信息登记查看态
- 操作步骤: - 操作步骤:
1. 点击「编 辑」 1. 点击「编 辑」
2. 断言「保 存」「取 消」可见 2. 断言「保 存」「取 消」可见
3. 断言 `#form_item_linkman`、`#form_item_contactWay`、`#form_item_anotherName` 可编辑 3. 断言 `#form_item_linkman`、`#form_item_contactWay`、`#form_item_anotherName` 可编辑
- 自动化断言:规划与 CSV `BASIC-HOS-004` 一致 - 自动化断言:与 CSV `BASIC-HOS-003` 一致
###### 预期结果 ###### 预期结果
...@@ -83,13 +68,13 @@ ...@@ -83,13 +68,13 @@
--- ---
##### 【P0】【TC-UI-BASIC-HOS-005】【TP_BASIC_HOS_016】编辑态只读字段仍不可改 ##### 【P0】【TC-UI-BASIC-HOS-004】【TP_BASIC_HOS_016】编辑态只读字段仍不可改
- 前置条件:已进入编辑模式 - 前置条件:已进入编辑模式
- 操作步骤: - 操作步骤:
1. 点击「编 辑」 1. 点击「编 辑」
2. 断言医院编码、医院名称、地址仍无可用输入框 2. 断言医院编码、医院名称、地址仍无可用输入框
- 自动化断言:规划与 CSV `BASIC-HOS-005` 一致 - 自动化断言:与 CSV `BASIC-HOS-004` 一致
###### 预期结果 ###### 预期结果
...@@ -97,14 +82,14 @@ ...@@ -97,14 +82,14 @@
--- ---
##### 【P0】【TC-UI-BASIC-HOS-006】【TP_BASIC_HOS_018】取消不保存 ##### 【P0】【TC-UI-BASIC-HOS-005】【TP_BASIC_HOS_018】取消不保存
- 前置条件:已进入查看态 - 前置条件:已进入查看态
- 操作步骤: - 操作步骤:
1. 点击「编 辑」,读取原联系人 `${sampleLinkman}` 1. 点击「编 辑」,读取原联系人 `${sampleLinkman}`
2. 将联系人改为 `${uniqLinkman}` 后点「取 消」 2. 将联系人改为 `${uniqLinkman}` 后点「取 消」
3. 断言回到查看态,联系人展示仍为 `${sampleLinkman}` 3. 断言回到查看态,联系人展示仍为 `${sampleLinkman}`
- 自动化断言:规划与 CSV `BASIC-HOS-006` 一致 - 自动化断言:与 CSV `BASIC-HOS-005` 一致
###### 预期结果 ###### 预期结果
...@@ -112,32 +97,16 @@ ...@@ -112,32 +97,16 @@
--- ---
##### 【P0】【TC-UI-BASIC-HOS-007】【TP_BASIC_HOS_017】保存后字段持久化
- 前置条件:已进入查看态;允许写医院资料
- 操作步骤:
1. 记录原联系人 `${sampleLinkman}`
2. 编辑为 `${uniqLinkman}` 并「保 存」
3. 刷新或重新打开本页,断言联系人为 `${uniqLinkman}`
4. 后置:再编辑回 `${sampleLinkman}` 并保存
- 自动化断言:规划与 CSV `BASIC-HOS-007` 一致;环境禁止写则 skip
###### 预期结果
保存后刷新仍为新值;用例结束恢复原值。
---
#### 异常验证点 #### 异常验证点
##### 【P0】【TC-UI-BASIC-HOS-008】【TP_BASIC_HOS_022】联系人为空保存拦截 ##### 【P0】【TC-UI-BASIC-HOS-006】【TP_BASIC_HOS_022】联系人为空保存拦截
- 前置条件:已进入查看态 - 前置条件:已进入查看态
- 操作步骤: - 操作步骤:
1. 点击「编 辑」,清空联系人 1. 点击「编 辑」,清空联系人
2. 点击「保 存」 2. 点击「保 存」
3. 断言必填提示,仍停留编辑态 3. 断言必填提示,仍停留编辑态
- 自动化断言:规划与 CSV `BASIC-HOS-008` 一致 - 自动化断言:与 CSV `BASIC-HOS-006` 一致
###### 预期结果 ###### 预期结果
...@@ -145,13 +114,13 @@ ...@@ -145,13 +114,13 @@
--- ---
##### 【P0】【TC-UI-BASIC-HOS-009】【TP_BASIC_HOS_023】联系方式为空保存拦截 ##### 【P0】【TC-UI-BASIC-HOS-007】【TP_BASIC_HOS_023】联系方式为空保存拦截
- 前置条件:已进入查看态 - 前置条件:已进入查看态
- 操作步骤: - 操作步骤:
1. 编辑态清空联系方式后点「保 存」 1. 编辑态清空联系方式后点「保 存」
2. 断言必填提示,编辑态保持 2. 断言必填提示,编辑态保持
- 自动化断言:规划与 CSV `BASIC-HOS-009` 一致 - 自动化断言:与 CSV `BASIC-HOS-007` 一致
###### 预期结果 ###### 预期结果
...@@ -159,13 +128,13 @@ ...@@ -159,13 +128,13 @@
--- ---
##### 【P0】【TC-UI-BASIC-HOS-010】【TP_BASIC_HOS_024】医院简称为空保存拦截 ##### 【P0】【TC-UI-BASIC-HOS-008】【TP_BASIC_HOS_024】医院简称为空保存拦截
- 前置条件:已进入查看态 - 前置条件:已进入查看态
- 操作步骤: - 操作步骤:
1. 编辑态清空医院简称后点「保 存」 1. 编辑态清空医院简称后点「保 存」
2. 断言必填提示 2. 断言必填提示
- 自动化断言:规划与 CSV `BASIC-HOS-010` 一致 - 自动化断言:与 CSV `BASIC-HOS-008` 一致
###### 预期结果 ###### 预期结果
...@@ -177,14 +146,14 @@ ...@@ -177,14 +146,14 @@
#### 功能验证点 #### 功能验证点
##### 【P1】【TC-UI-BASIC-HOS-011】【TP_BASIC_HOS_030】编辑态存在背景与 logo 上传控件 ##### 【P1】【TC-UI-BASIC-HOS-009】【TP_BASIC_HOS_030】编辑态存在背景与 logo 上传控件
- 前置条件:已进入查看态 - 前置条件:已进入查看态
- 操作步骤: - 操作步骤:
1. 点击「编 辑」 1. 点击「编 辑」
2. 断言存在登录页背景、医院 logo 对应 `input[type=file]`(`loginBgUploadInput` / `logoUploadInput`) 2. 断言存在登录页背景、医院 logo 对应 `input[type=file]`(`loginBgUploadInput` / `logoUploadInput`)
3. 点「取 消」,不实际上传 3. 点「取 消」,不实际上传
- 自动化断言:规划与 CSV `BASIC-HOS-011` 一致 - 自动化断言:与 CSV `BASIC-HOS-009` 一致
###### 预期结果 ###### 预期结果
...@@ -196,7 +165,7 @@ ...@@ -196,7 +165,7 @@
| 项 | 说明 | | 项 | 说明 |
|----|------| |----|------|
| 用例数 | **11** 条(P0=9 / P1=2) | | 用例数 | **9** 条(P0=7 / P1=2);已删除原菜单进入、原「保存后字段持久化」及对应脚本 |
| 来源 | 从 38 条测试点选取可稳定自动化项 | | 来源 | 从 38 条测试点选取可稳定自动化项 |
| 未纳入自动化 | 真实换登录页背景/logo(易污染环境)、登录页视觉生效、超限文件二进制、未登录 | | 未纳入自动化 | 真实换登录页背景/logo(易污染环境)、登录页视觉生效、超限文件二进制、未登录、写库持久化 |
| 数据隔离 | 保存用例必须恢复原联系人 | | 数据隔离 | 取消/空值拦截用例不落库,不留下脏数据 |
...@@ -25,68 +25,19 @@ ...@@ -25,68 +25,19 @@
## 基础设置 · 手术套包设置 ## 基础设置 · 手术套包设置
### 术种维护 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-SURG-TYPE-001】【TP_SURG_TYPE_001】菜单进入术种维护页
- 前置条件:已登录且具备手术套包设置权限
- 操作步骤:
1. 按菜单「基础设置 → 手术套包设置 → 术种维护」进入
2. 断言 URL 含 `/spd/basic/operationSetting/typeMaintenance`
3. 断言左侧分类树(`operTypeCategoryInput`)、右侧筛选区、状态 Tab、列表与分页可见
- 自动化断言:规划与 CSV `SURG-TYPE-001` 及 `tests/spd/surgery-oper-type.spec.ts` 一致
###### 预期结果
进入术种维护页;不误入基础包维护/标准套包维护;左右分栏渲染完整。
---
##### 【P1】【TC-UI-SURG-TYPE-002】【TP_SURG_TYPE_003】同组页签切换后返回
- 前置条件:已进入术种维护页
- 操作步骤:
1. 点击页内 Tab 「标准套包维护」,等待 URL 切换
2. 返回点击 Tab 「术种维护」
3. 断言 URL 回到 `typeMaintenance`,左树与状态 Tab 重新渲染
- 自动化断言:规划与 CSV `SURG-TYPE-002` 一致
###### 预期结果
三页签互切正常;返回后本页数据恢复。
---
#### 异常验证点
##### 【P0】【TC-UI-SURG-TYPE-003】【TP_SURG_TYPE_005】未登录访问拦截
- 前置条件:`test.use({ storageState: { cookies: [], origins: [] } })` 无登录态
- 操作步骤:
1. 直接访问 `/spd/basic/operationSetting/typeMaintenance`
2. 断言跳转登录页或不展示术种列表数据
- 自动化断言:规划与 CSV `SURG-TYPE-003` 一致
###### 预期结果
未登录被拦截,不泄露术种数据。
---
### 术种维护 · 左侧术种分类树 ### 术种维护 · 左侧术种分类树
#### 功能验证点 #### 功能验证点
##### 【P0】【TC-UI-SURG-TYPE-004】【TP_SURG_TYPE_009】术种分类名称搜索过滤 ##### 【P0】【TC-UI-SURG-TYPE-001】【TP_SURG_TYPE_009】术种分类名称搜索过滤
- 前置条件:左侧树至少 1 个非空分类节点 - 前置条件:左侧树至少 1 个非空分类节点
- 操作步骤: - 操作步骤:
1. 从树读取 `${sampleOperCategoryName}` 1. 从树读取 `${sampleOperCategoryName}`
2. 在 `operTypeCategoryInput` 填入该关键字(即时过滤或回车,以现网为准) 2. 在 `operTypeCategoryInput` 填入该关键字(即时过滤或回车,以现网为准)
3. 断言树节点文本均包含该关键字 3. 断言树节点文本均包含该关键字
- 自动化断言:规划与 CSV `SURG-TYPE-004` 一致 - 自动化断言:规划与 CSV `SURG-TYPE-001` 一致
###### 预期结果 ###### 预期结果
...@@ -94,14 +45,14 @@ ...@@ -94,14 +45,14 @@
--- ---
##### 【P0】【TC-UI-SURG-TYPE-005】【TP_SURG_TYPE_010】选择分类联动右侧列表 ##### 【P0】【TC-UI-SURG-TYPE-002】【TP_SURG_TYPE_010】选择分类联动右侧列表
- 前置条件:左侧树至少 1 个分类节点,右侧有数据 - 前置条件:左侧树至少 1 个分类节点,右侧有数据
- 操作步骤: - 操作步骤:
1. 点击 `${sampleOperCategoryName}` 节点 1. 点击 `${sampleOperCategoryName}` 节点
2. 等待右侧列表刷新稳定 2. 等待右侧列表刷新稳定
3. 断言列表加载无报错,分页「共 N 条」与当前分类规模一致 3. 断言列表加载无报错,分页「共 N 条」与当前分类规模一致
- 自动化断言:规划与 CSV `SURG-TYPE-005` 一致 - 自动化断言:规划与 CSV `SURG-TYPE-002` 一致
###### 预期结果 ###### 预期结果
...@@ -109,13 +60,13 @@ ...@@ -109,13 +60,13 @@
--- ---
##### 【P1】【TC-UI-SURG-TYPE-006】【TP_SURG_TYPE_011】分类树计数与下钻 ##### 【P1】【TC-UI-SURG-TYPE-003】【TP_SURG_TYPE_011】分类树计数与下钻
- 前置条件:至少 1 个带计数的分类节点 - 前置条件:至少 1 个带计数的分类节点
- 操作步骤: - 操作步骤:
1. 读取某分类节点括号内计数 `${nodeCount}` 1. 读取某分类节点括号内计数 `${nodeCount}`
2. 点击该节点,断言右侧「共 N 条」与 `${nodeCount}` 一致 2. 点击该节点,断言右侧「共 N 条」与 `${nodeCount}` 一致
- 自动化断言:规划与 CSV `SURG-TYPE-006` 一致 - 自动化断言:规划与 CSV `SURG-TYPE-003` 一致
###### 预期结果 ###### 预期结果
...@@ -123,14 +74,14 @@ ...@@ -123,14 +74,14 @@
--- ---
##### 【P1】【TC-UI-SURG-TYPE-007】【TP_SURG_TYPE_013】打开分类维护弹窗 ##### 【P1】【TC-UI-SURG-TYPE-004】【TP_SURG_TYPE_013】打开分类维护弹窗
- 前置条件:已进入术种维护页 - 前置条件:已进入术种维护页
- 操作步骤: - 操作步骤:
1. 点击左侧「新增」 1. 点击左侧「新增」
2. 断言弹窗可见,含分类名称输入(`operTypeCategoryName`)与「取 消」「保 存」 2. 断言弹窗可见,含分类名称输入(`operTypeCategoryName`)与「取 消」「保 存」
3. 点击「取 消」关闭 3. 点击「取 消」关闭
- 自动化断言:规划与 CSV `SURG-TYPE-007` 一致 - 自动化断言:规划与 CSV `SURG-TYPE-004` 一致
###### 预期结果 ###### 预期结果
...@@ -140,14 +91,14 @@ ...@@ -140,14 +91,14 @@
#### 边界验证点 #### 边界验证点
##### 【P2】【TC-UI-SURG-TYPE-008】【TP_SURG_TYPE_014】分类搜索清空恢复全量 ##### 【P2】【TC-UI-SURG-TYPE-005】【TP_SURG_TYPE_014】分类搜索清空恢复全量
- 前置条件:已用 `${sampleOperCategoryName}` 过滤 - 前置条件:已用 `${sampleOperCategoryName}` 过滤
- 操作步骤: - 操作步骤:
1. 记录过滤后节点数 1. 记录过滤后节点数
2. 清空 `operTypeCategoryInput` 2. 清空 `operTypeCategoryInput`
3. 断言节点数回到未过滤的默认集合 3. 断言节点数回到未过滤的默认集合
- 自动化断言:规划与 CSV `SURG-TYPE-008` 一致 - 自动化断言:规划与 CSV `SURG-TYPE-005` 一致
###### 预期结果 ###### 预期结果
...@@ -159,14 +110,14 @@ ...@@ -159,14 +110,14 @@
#### 功能验证点 #### 功能验证点
##### 【P0】【TC-UI-SURG-TYPE-009】【TP_SURG_TYPE_018】术种名称筛选过滤 ##### 【P0】【TC-UI-SURG-TYPE-006】【TP_SURG_TYPE_018】术种名称筛选过滤
- 前置条件:默认列表至少 1 条数据 - 前置条件:默认列表至少 1 条数据
- 操作步骤: - 操作步骤:
1. 从首行读取 `${sampleOperName}` 1. 从首行读取 `${sampleOperName}`
2. 在 `operationName`(`#table_search_form_operationName`)填入该关键字 2. 在 `operationName`(`#table_search_form_operationName`)填入该关键字
3. 点击「查 询」,断言结果行术种名称均包含该关键字 3. 点击「查 询」,断言结果行术种名称均包含该关键字
- 自动化断言:规划与 CSV `SURG-TYPE-009` 一致 - 自动化断言:规划与 CSV `SURG-TYPE-006` 一致
###### 预期结果 ###### 预期结果
...@@ -174,14 +125,14 @@ ...@@ -174,14 +125,14 @@
--- ---
##### 【P0】【TC-UI-SURG-TYPE-010】【TP_SURG_TYPE_019】病种名称筛选过滤 ##### 【P0】【TC-UI-SURG-TYPE-007】【TP_SURG_TYPE_019】病种名称筛选过滤
- 前置条件:默认列表至少 1 条数据且含病种名称 - 前置条件:默认列表至少 1 条数据且含病种名称
- 操作步骤: - 操作步骤:
1. 从首行读取 `${sampleDiseaseName}` 1. 从首行读取 `${sampleDiseaseName}`
2. 在 `diseaseName`(`#table_search_form_disease`)填入该关键字 2. 在 `diseaseName`(`#table_search_form_disease`)填入该关键字
3. 点击「查 询」,断言结果行病种名称均包含该关键字 3. 点击「查 询」,断言结果行病种名称均包含该关键字
- 自动化断言:规划与 CSV `SURG-TYPE-010` 一致 - 自动化断言:规划与 CSV `SURG-TYPE-007` 一致
###### 预期结果 ###### 预期结果
...@@ -195,13 +146,13 @@ ...@@ -195,13 +146,13 @@
--- ---
##### 【P1】【TC-UI-SURG-TYPE-011】【TP_SURG_TYPE_021】重置清空筛选 ##### 【P1】【TC-UI-SURG-TYPE-009】【TP_SURG_TYPE_021】重置清空筛选
- 前置条件:已用关键字过滤 - 前置条件:已用关键字过滤
- 操作步骤: - 操作步骤:
1. 点击「重 置」 1. 点击「重 置」
2. 断言筛选输入框被清空、列表恢复默认集合 2. 断言筛选输入框被清空、列表恢复默认集合
- 自动化断言:规划与 CSV `SURG-TYPE-011` 一致 - 自动化断言:规划与 CSV `SURG-TYPE-009` 一致
###### 预期结果 ###### 预期结果
...@@ -211,14 +162,14 @@ ...@@ -211,14 +162,14 @@
#### 边界验证点 #### 边界验证点
##### 【P2】【TC-UI-SURG-TYPE-012】【TP_SURG_TYPE_023】无匹配组合空态 ##### 【P2】【TC-UI-SURG-TYPE-010】【TP_SURG_TYPE_023】无匹配组合空态
- 前置条件:已进入术种维护页 - 前置条件:已进入术种维护页
- 操作步骤: - 操作步骤:
1. 在 `operationName` 输入不存在关键字 `__NOT_EXIST_OPER__99999` 1. 在 `operationName` 输入不存在关键字 `__NOT_EXIST_OPER__99999`
2. 点击「查 询」 2. 点击「查 询」
3. 断言「暂无数据」且分页总数为 0 3. 断言「暂无数据」且分页总数为 0
- 自动化断言:规划与 CSV `SURG-TYPE-012` 一致 - 自动化断言:规划与 CSV `SURG-TYPE-010` 一致
###### 预期结果 ###### 预期结果
...@@ -230,12 +181,12 @@ ...@@ -230,12 +181,12 @@
#### 功能验证点 #### 功能验证点
##### 【P0】【TC-UI-SURG-TYPE-013】【TP_SURG_TYPE_027】列表核心列完整 ##### 【P0】【TP_SURG_TYPE_027】列表核心列完整(设计场景,未入当前执行 CSV)
- 前置条件:默认列表至少 1 条数据 - 前置条件:默认列表至少 1 条数据
- 操作步骤: - 操作步骤:
1. 断言表头包含序号、术种名称、病种名称、诊断编码(ICD-10)、诊断名称(ICD-10)、操作编码(ICD-9-CM-3)、操作名称(ICD-9-CM-3)、操作 1. 断言表头包含序号、术种名称、病种名称、诊断编码(ICD-10)、诊断名称(ICD-10)、操作编码(ICD-9-CM-3)、操作名称(ICD-9-CM-3)、操作
- 自动化断言:规划与 CSV `SURG-TYPE-013` 一致 - 自动化断言:当前执行 CSV 未收录本场景;以页面表头实际列为准
###### 预期结果 ###### 预期结果
...@@ -246,13 +197,13 @@ ...@@ -246,13 +197,13 @@
--- ---
##### 【P2】【TC-UI-SURG-TYPE-014】【TP_SURG_TYPE_029】ICD-9-CM-3 操作编码展示完整 ##### 【P2】【TC-UI-SURG-TYPE-012】【TP_SURG_TYPE_029】ICD-9-CM-3 操作编码展示完整
- 前置条件:列表中至少 1 条含操作编码的数据 - 前置条件:列表中至少 1 条含操作编码的数据
- 操作步骤: - 操作步骤:
1. 读取含操作编码的行 `${sampleIcd9Code}` 1. 读取含操作编码的行 `${sampleIcd9Code}`
2. 断言操作编码(如 `00.0200`)与操作名称(如 `心脏治疗性超声`)对应展示无乱码 2. 断言操作编码(如 `00.0200`)与操作名称(如 `心脏治疗性超声`)对应展示无乱码
- 自动化断言:规划与 CSV `SURG-TYPE-014` 一致 - 自动化断言:规划与 CSV `SURG-TYPE-012` 一致
###### 预期结果 ###### 预期结果
...@@ -260,13 +211,13 @@ ICD-9-CM-3 编码与操作名称对应正确。 ...@@ -260,13 +211,13 @@ ICD-9-CM-3 编码与操作名称对应正确。
--- ---
##### 【P1】【TC-UI-SURG-TYPE-015】【TP_SURG_TYPE_030】分页与页大小切换 ##### 【P1】【TC-UI-SURG-TYPE-013】【TP_SURG_TYPE_030】分页与页大小切换
- 前置条件:默认列表总数大于单页行数上限 - 前置条件:默认列表总数大于单页行数上限
- 操作步骤: - 操作步骤:
1. 切换每页条数(如 50 → 100) 1. 切换每页条数(如 50 → 100)
2. 断言单页行数不超过所选值,分页总数不变 2. 断言单页行数不超过所选值,分页总数不变
- 自动化断言:规划与 CSV `SURG-TYPE-015` 一致 - 自动化断言:规划与 CSV `SURG-TYPE-013` 一致
###### 预期结果 ###### 预期结果
...@@ -276,12 +227,12 @@ ICD-9-CM-3 编码与操作名称对应正确。 ...@@ -276,12 +227,12 @@ ICD-9-CM-3 编码与操作名称对应正确。
#### 边界验证点 #### 边界验证点
##### 【P2】【TC-UI-SURG-TYPE-016】【TP_SURG_TYPE_032】首页上一页不可用 ##### 【P2】【TC-UI-SURG-TYPE-014】【TP_SURG_TYPE_032】首页上一页不可用
- 前置条件:已进入第 1 页 - 前置条件:已进入第 1 页
- 操作步骤: - 操作步骤:
1. 断言「上一页」置灰或点击无效果 1. 断言「上一页」置灰或点击无效果
- 自动化断言:规划与 CSV `SURG-TYPE-016` 一致 - 自动化断言:规划与 CSV `SURG-TYPE-014` 一致
###### 预期结果 ###### 预期结果
...@@ -293,14 +244,14 @@ ICD-9-CM-3 编码与操作名称对应正确。 ...@@ -293,14 +244,14 @@ ICD-9-CM-3 编码与操作名称对应正确。
#### 功能验证点 #### 功能验证点
##### 【P0】【TC-UI-SURG-TYPE-017】【TP_SURG_TYPE_035】打开新增术种入口 ##### 【P0】【TC-UI-SURG-TYPE-015】【TP_SURG_TYPE_035】打开新增术种入口
- 前置条件:已进入术种维护页 - 前置条件:已进入术种维护页
- 操作步骤: - 操作步骤:
1. 点击「新增术种」 1. 点击「新增术种」
2. 断言新增弹窗/页面可见,含术种名称、病种名称、分类与编码相关字段 2. 断言新增弹窗/页面可见,含术种名称、病种名称、分类与编码相关字段
3. 断言含「取 消」「保 存」 3. 断言含「取 消」「保 存」
- 自动化断言:规划与 CSV `SURG-TYPE-017` 一致 - 自动化断言:规划与 CSV `SURG-TYPE-015` 一致
###### 预期结果 ###### 预期结果
...@@ -308,14 +259,14 @@ ICD-9-CM-3 编码与操作名称对应正确。 ...@@ -308,14 +259,14 @@ ICD-9-CM-3 编码与操作名称对应正确。
--- ---
##### 【P0】【TC-UI-SURG-TYPE-018】【TP_SURG_TYPE_038】新增取消不落库 ##### 【P0】【TC-UI-SURG-TYPE-016】【TP_SURG_TYPE_038】新增取消不落库
- 前置条件:已进入术种维护页 - 前置条件:已进入术种维护页
- 操作步骤: - 操作步骤:
1. 记录当前分页总数 `${sampleTotal}` 1. 记录当前分页总数 `${sampleTotal}`
2. 打开新增,填写名称 `${uniqOperName}` 后点「取 消」 2. 打开新增,填写名称 `${uniqOperName}` 后点「取 消」
3. 断言列表总数不变,且无该名称行 3. 断言列表总数不变,且无该名称行
- 自动化断言:规划与 CSV `SURG-TYPE-018` 一致 - 自动化断言:规划与 CSV `SURG-TYPE-016` 一致
###### 预期结果 ###### 预期结果
...@@ -325,13 +276,13 @@ ICD-9-CM-3 编码与操作名称对应正确。 ...@@ -325,13 +276,13 @@ ICD-9-CM-3 编码与操作名称对应正确。
#### 异常验证点 #### 异常验证点
##### 【P0】【TC-UI-SURG-TYPE-019】【TP_SURG_TYPE_040】术种名称为空拦截 ##### 【P0】【TC-UI-SURG-TYPE-017】【TP_SURG_TYPE_040】术种名称为空拦截
- 前置条件:已打开新增术种弹窗 - 前置条件:已打开新增术种弹窗
- 操作步骤: - 操作步骤:
1. 名称留空,点「保 存」 1. 名称留空,点「保 存」
2. 断言必填提示,弹窗仍在,列表无新行 2. 断言必填提示,弹窗仍在,列表无新行
- 自动化断言:规划与 CSV `SURG-TYPE-019` 一致 - 自动化断言:规划与 CSV `SURG-TYPE-017` 一致
###### 预期结果 ###### 预期结果
...@@ -343,14 +294,14 @@ ICD-9-CM-3 编码与操作名称对应正确。 ...@@ -343,14 +294,14 @@ ICD-9-CM-3 编码与操作名称对应正确。
#### 功能验证点 #### 功能验证点
##### 【P0】【TC-UI-SURG-TYPE-020】【TP_SURG_TYPE_045】行内编辑回填 ##### 【P0】【TC-UI-SURG-TYPE-018】【TP_SURG_TYPE_045】行内编辑回填
- 前置条件:列表至少 1 条数据 - 前置条件:列表至少 1 条数据
- 操作步骤: - 操作步骤:
1. 点击首行「编 辑」 1. 点击首行「编 辑」
2. 断言编辑弹窗可见且回填当前术种数据 2. 断言编辑弹窗可见且回填当前术种数据
3. 点击「取 消」关闭 3. 点击「取 消」关闭
- 自动化断言:规划与 CSV `SURG-TYPE-020` 一致 - 自动化断言:规划与 CSV `SURG-TYPE-018` 一致
###### 预期结果 ###### 预期结果
...@@ -358,7 +309,7 @@ ICD-9-CM-3 编码与操作名称对应正确。 ...@@ -358,7 +309,7 @@ ICD-9-CM-3 编码与操作名称对应正确。
--- ---
##### 【P1】【TC-UI-SURG-TYPE-021】【TP_SURG_TYPE_046】停用状态流转 ##### 【P1】【TC-UI-SURG-TYPE-019】【TP_SURG_TYPE_046】停用状态流转
- 前置条件:列表中存在启用状态术种(优先选 `${uniqOperName}` 自建数据) - 前置条件:列表中存在启用状态术种(优先选 `${uniqOperName}` 自建数据)
- 操作步骤: - 操作步骤:
...@@ -366,7 +317,7 @@ ICD-9-CM-3 编码与操作名称对应正确。 ...@@ -366,7 +317,7 @@ ICD-9-CM-3 编码与操作名称对应正确。
2. 点击目标行「停用」,若有确认框则点「确 定」 2. 点击目标行「停用」,若有确认框则点「确 定」
3. 断言「停用」Tab 计数 +1 3. 断言「停用」Tab 计数 +1
4. 后置:对该术种执行「启用」恢复 4. 后置:对该术种执行「启用」恢复
- 自动化断言:规划与 CSV `SURG-TYPE-021` 一致;环境禁止写则 skip - 自动化断言:规划与 CSV `SURG-TYPE-019` 一致;环境禁止写则 skip
###### 预期结果 ###### 预期结果
...@@ -376,7 +327,7 @@ ICD-9-CM-3 编码与操作名称对应正确。 ...@@ -376,7 +327,7 @@ ICD-9-CM-3 编码与操作名称对应正确。
#### 异常验证点 #### 异常验证点
##### 【P0】【TC-UI-SURG-TYPE-022】【TP_SURG_TYPE_049】停用二次确认防误操作 ##### 【P0】【TC-UI-SURG-TYPE-020】【TP_SURG_TYPE_049】停用二次确认防误操作
- 前置条件:列表中存在启用状态术种 - 前置条件:列表中存在启用状态术种
- 操作步骤: - 操作步骤:
...@@ -384,7 +335,7 @@ ICD-9-CM-3 编码与操作名称对应正确。 ...@@ -384,7 +335,7 @@ ICD-9-CM-3 编码与操作名称对应正确。
2. 点击首行「停用」 2. 点击首行「停用」
3. 若出现确认框则点「取 消」 3. 若出现确认框则点「取 消」
4. 断言计数未变化 4. 断言计数未变化
- 自动化断言:规划与 CSV `SURG-TYPE-022` 一致 - 自动化断言:规划与 CSV `SURG-TYPE-020` 一致
###### 预期结果 ###### 预期结果
...@@ -396,7 +347,7 @@ ICD-9-CM-3 编码与操作名称对应正确。 ...@@ -396,7 +347,7 @@ ICD-9-CM-3 编码与操作名称对应正确。
| 项 | 说明 | | 项 | 说明 |
|----|------| |----|------|
| 用例数 | **25** 条(P0=13 / P1=8 / P2=4) | | 用例数 | **20** 条(与执行 CSV 一致;MD 中未入 CSV 的设计场景不计入) |
| 来源 | 从 53 条测试点选取可稳定自动化的主路径与关键反向 | | 来源 | 从 53 条测试点选取可稳定自动化的主路径与关键反向 |
| 未纳入自动化 | 未登录权限矩阵、分类新增落库、新增术种保存落库、ICD 字典一致性、停用后下游不可选联调 | | 未纳入自动化 | 未登录权限矩阵、分类新增落库、新增术种保存落库、ICD 字典一致性、停用后下游不可选联调 |
| 数据隔离 | 新增/停用使用唯一名称并恢复/清理;不改生产术种状态 | | 数据隔离 | 新增/停用使用唯一名称并恢复/清理;不改生产术种状态 |
......
...@@ -27,47 +27,15 @@ ...@@ -27,47 +27,15 @@
### 标准套包维护 · 页面进入 ### 标准套包维护 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-SURG-STD-001】【TP_SURG_STD_001】菜单进入标准套包维护页
- 前置条件:已登录且具备手术套包设置权限
- 操作步骤:
1. 按菜单「基础设置 → 手术套包设置 → 标准套包维护」进入
2. 断言 URL 含 `/spd/basic/operationSetting/standardMaintenance`
3. 断言左侧分类树、右侧筛选区、构成列表与分页可见
- 自动化断言:规划与 CSV `SURG-STD-001` 及 `tests/spd/surgery-std-pkg.spec.ts` 一致
###### 预期结果
进入标准套包维护页;不误入基础包维护/术种维护;左右分栏渲染完整。
---
##### 【P1】【TC-UI-SURG-STD-002】【TP_SURG_STD_003】同组页签切换后返回
- 前置条件:已进入标准套包维护页
- 操作步骤:
1. 点击页内 Tab 「术种维护」,等待 URL 切换
2. 返回点击 Tab 「标准套包维护」
3. 断言 URL 回到 `standardMaintenance`,左树与构成列表重新渲染
- 自动化断言:规划与 CSV `SURG-STD-002` 一致
###### 预期结果
三页签互切正常;返回后本页数据恢复。
---
#### 异常验证点 #### 异常验证点
##### 【P0】【TC-UI-SURG-STD-003】【TP_SURG_STD_005】未登录访问拦截 ##### 【P0】【TC-UI-SURG-STD-002】【TP_SURG_STD_005】未登录访问拦截
- 前置条件:`test.use({ storageState: { cookies: [], origins: [] } })` 无登录态 - 前置条件:`test.use({ storageState: { cookies: [], origins: [] } })` 无登录态
- 操作步骤: - 操作步骤:
1. 直接访问 `/spd/basic/operationSetting/standardMaintenance` 1. 直接访问 `/spd/basic/operationSetting/standardMaintenance`
2. 断言跳转登录页或不展示套包列表数据 2. 断言跳转登录页或不展示套包列表数据
- 自动化断言:规划与 CSV `SURG-STD-003` 一致 - 自动化断言:规划与 CSV `SURG-STD-002` 一致
###### 预期结果 ###### 预期结果
...@@ -79,15 +47,6 @@ ...@@ -79,15 +47,6 @@
#### 功能验证点 #### 功能验证点
---
---
---
### 标准套包维护 · 筛选与构成列表 ### 标准套包维护 · 筛选与构成列表
#### 功能验证点 #### 功能验证点
...@@ -98,14 +57,14 @@ ...@@ -98,14 +57,14 @@
--- ---
##### 【P1】【TC-UI-SURG-STD-004】【TP_SURG_STD_019】规格型号筛选过滤 ##### 【P1】【TC-UI-SURG-STD-003】【TP_SURG_STD_019】规格型号筛选过滤
- 前置条件:默认列表至少 1 条数据且含规格型号 - 前置条件:默认列表至少 1 条数据且含规格型号
- 操作步骤: - 操作步骤:
1. 从首行读取 `${sampleSpecModel}` 1. 从首行读取 `${sampleSpecModel}`
2. 在 `specModel`(`#table_search_form_goodsSpec`)填入该关键字 2. 在 `specModel`(`#table_search_form_goodsSpec`)填入该关键字
3. 点击「查 询」,断言结果行规格型号均包含该关键字 3. 点击「查 询」,断言结果行规格型号均包含该关键字
- 自动化断言:规划与 CSV `SURG-STD-004` 一致 - 自动化断言:规划与 CSV `SURG-STD-003` 一致
###### 预期结果 ###### 预期结果
...@@ -122,13 +81,13 @@ ...@@ -122,13 +81,13 @@
--- ---
##### 【P1】【TC-UI-SURG-STD-005】【TP_SURG_STD_024】查询与重置 ##### 【P1】【TC-UI-SURG-STD-004】【TP_SURG_STD_024】查询与重置
- 前置条件:已用关键字过滤 - 前置条件:已用关键字过滤
- 操作步骤: - 操作步骤:
1. 点击「重 置」 1. 点击「重 置」
2. 断言筛选输入框被清空、列表恢复默认集合 2. 断言筛选输入框被清空、列表恢复默认集合
- 自动化断言:规划与 CSV `SURG-STD-005` 一致 - 自动化断言:规划与 CSV `SURG-STD-004` 一致
###### 预期结果 ###### 预期结果
...@@ -141,14 +100,14 @@ ...@@ -141,14 +100,14 @@
#### 边界验证点 #### 边界验证点
##### 【P2】【TC-UI-SURG-STD-006】【TP_SURG_STD_027】无匹配组合空态 ##### 【P2】【TC-UI-SURG-STD-005】【TP_SURG_STD_027】无匹配组合空态
- 前置条件:已进入标准套包维护页 - 前置条件:已进入标准套包维护页
- 操作步骤: - 操作步骤:
1. 在 `productName` 输入不存在关键字 `__NOT_EXIST_STD__99999` 1. 在 `productName` 输入不存在关键字 `__NOT_EXIST_STD__99999`
2. 点击「查 询」 2. 点击「查 询」
3. 断言「暂无数据」且分页总数为 0 3. 断言「暂无数据」且分页总数为 0
- 自动化断言:规划与 CSV `SURG-STD-006` 一致 - 自动化断言:规划与 CSV `SURG-STD-005` 一致
###### 预期结果 ###### 预期结果
...@@ -163,14 +122,14 @@ ...@@ -163,14 +122,14 @@
--- ---
##### 【P0】【TC-UI-SURG-STD-007】【TP_SURG_STD_033】弹窗内筛选与选择计数联动 ##### 【P0】【TC-UI-SURG-STD-006】【TP_SURG_STD_033】弹窗内筛选与选择计数联动
- 前置条件:已打开添加基础包弹窗 - 前置条件:已打开添加基础包弹窗
- 操作步骤: - 操作步骤:
1. 在 `addBasePkgSearchInput` 输入基础包关键字 1. 在 `addBasePkgSearchInput` 输入基础包关键字
2. 勾选 1 个基础包 2. 勾选 1 个基础包
3. 断言「确定(N)」计数由 0 变为 1 3. 断言「确定(N)」计数由 0 变为 1
- 自动化断言:规划与 CSV `SURG-STD-007` 一致 - 自动化断言:规划与 CSV `SURG-STD-006` 一致
###### 预期结果 ###### 预期结果
...@@ -191,13 +150,13 @@ ...@@ -191,13 +150,13 @@
#### 异常验证点 #### 异常验证点
##### 【P1】【TC-UI-SURG-STD-008】【TP_SURG_STD_038】重复添加同一基础包 ##### 【P1】【TC-UI-SURG-STD-007】【TP_SURG_STD_038】重复添加同一基础包
- 前置条件:标准套包已含某基础包(或先添加一个) - 前置条件:标准套包已含某基础包(或先添加一个)
- 操作步骤: - 操作步骤:
1. 再次打开添加基础包,选择同一基础包并确定 1. 再次打开添加基础包,选择同一基础包并确定
2. 断言按产品规则拒绝/合并/累加,不产生重复脏行 2. 断言按产品规则拒绝/合并/累加,不产生重复脏行
- 自动化断言:规划与 CSV `SURG-STD-008` 一致;环境禁止写则 skip - 自动化断言:规划与 CSV `SURG-STD-007` 一致;环境禁止写则 skip
###### 预期结果 ###### 预期结果
...@@ -209,13 +168,13 @@ ...@@ -209,13 +168,13 @@
#### 功能验证点 #### 功能验证点
##### 【P0】【TC-UI-SURG-STD-009】【TP_SURG_STD_041】打开添加散件弹窗 ##### 【P0】【TC-UI-SURG-STD-008】【TP_SURG_STD_041】打开添加散件弹窗
- 前置条件:已进入标准套包维护页 - 前置条件:已进入标准套包维护页
- 操作步骤: - 操作步骤:
1. 点击「添加散件」 1. 点击「添加散件」
2. 断言弹窗可见并展示「产品列表」视图,含物料名称/规格型号/器械注册人/耗材类型筛选与分页 2. 断言弹窗可见并展示「产品列表」视图,含物料名称/规格型号/器械注册人/耗材类型筛选与分页
- 自动化断言:规划与 CSV `SURG-STD-009` 一致 - 自动化断言:规划与 CSV `SURG-STD-008` 一致
###### 预期结果 ###### 预期结果
...@@ -223,14 +182,14 @@ ...@@ -223,14 +182,14 @@
--- ---
##### 【P0】【TC-UI-SURG-STD-010】【TP_SURG_STD_042】产品列表筛选与选择散件 ##### 【P0】【TC-UI-SURG-STD-009】【TP_SURG_STD_042】产品列表筛选与选择散件
- 前置条件:已打开添加散件弹窗 - 前置条件:已打开添加散件弹窗
- 操作步骤: - 操作步骤:
1. 在物料名称筛选框输入 `${sampleProductName}` 1. 在物料名称筛选框输入 `${sampleProductName}`
2. 勾选首个匹配散件 2. 勾选首个匹配散件
3. 断言散件进入应拣明细,计数同步变化 3. 断言散件进入应拣明细,计数同步变化
- 自动化断言:规划与 CSV `SURG-STD-010` 一致 - 自动化断言:规划与 CSV `SURG-STD-009` 一致
###### 预期结果 ###### 预期结果
...@@ -238,13 +197,13 @@ ...@@ -238,13 +197,13 @@
--- ---
##### 【P0】【TC-UI-SURG-STD-011】【TP_SURG_STD_043】散件规格/应拣明细视图 ##### 【P0】【TC-UI-SURG-STD-010】【TP_SURG_STD_043】散件规格/应拣明细视图
- 前置条件:已勾选至少 1 个散件 - 前置条件:已勾选至少 1 个散件
- 操作步骤: - 操作步骤:
1. 切换到规格明细/应拣明细视图 1. 切换到规格明细/应拣明细视图
2. 断言展示耗材品种数、耗材总数,以及应拣数量、产品编号/名称/规格/注册人/单位/耗材类型/是否收费列 2. 断言展示耗材品种数、耗材总数,以及应拣数量、产品编号/名称/规格/注册人/单位/耗材类型/是否收费列
- 自动化断言:规划与 CSV `SURG-STD-011` 一致 - 自动化断言:规划与 CSV `SURG-STD-010` 一致
###### 预期结果 ###### 预期结果
...@@ -252,13 +211,13 @@ ...@@ -252,13 +211,13 @@
--- ---
##### 【P1】【TC-UI-SURG-STD-012】【TP_SURG_STD_044】明细统计与实际一致 ##### 【P1】【TC-UI-SURG-STD-011】【TP_SURG_STD_044】明细统计与实际一致
- 前置条件:应拣明细含至少 1 个散件 - 前置条件:应拣明细含至少 1 个散件
- 操作步骤: - 操作步骤:
1. 读取「耗材品种数」`${itemKindCount}` 与「耗材总数」`${itemTotalCount}` 1. 读取「耗材品种数」`${itemKindCount}` 与「耗材总数」`${itemTotalCount}`
2. 断言品种数 = 明细去重产品数;总数 = 应拣数量合计 2. 断言品种数 = 明细去重产品数;总数 = 应拣数量合计
- 自动化断言:规划与 CSV `SURG-STD-012` 一致 - 自动化断言:规划与 CSV `SURG-STD-011` 一致
###### 预期结果 ###### 预期结果
...@@ -271,14 +230,14 @@ ...@@ -271,14 +230,14 @@
#### 边界验证点 #### 边界验证点
##### 【P2】【TC-UI-SURG-STD-013】【TP_SURG_STD_047】万级散件列表首屏可交互 ##### 【P2】【TC-UI-SURG-STD-012】【TP_SURG_STD_047】万级散件列表首屏可交互
- 前置条件:添加散件产品列表总量达万级(示例「共 16299 条」) - 前置条件:添加散件产品列表总量达万级(示例「共 16299 条」)
- 操作步骤: - 操作步骤:
1. 打开添加散件弹窗 1. 打开添加散件弹窗
2. 断言首屏可交互(筛选/分页可用),不卡死 2. 断言首屏可交互(筛选/分页可用),不卡死
3. 避免全量断言,仅校验首行与总数格式 3. 避免全量断言,仅校验首行与总数格式
- 自动化断言:规划与 CSV `SURG-STD-013` 一致 - 自动化断言:规划与 CSV `SURG-STD-012` 一致
###### 预期结果 ###### 预期结果
...@@ -290,14 +249,14 @@ ...@@ -290,14 +249,14 @@
#### 功能验证点 #### 功能验证点
##### 【P0】【TC-UI-SURG-STD-014】【TP_SURG_STD_052】行内编辑构成项 ##### 【P0】【TC-UI-SURG-STD-013】【TP_SURG_STD_052】行内编辑构成项
- 前置条件:构成列表至少 1 条数据(先展开目标包) - 前置条件:构成列表至少 1 条数据(先展开目标包)
- 操作步骤: - 操作步骤:
1. 点击子项行「编 辑」 1. 点击子项行「编 辑」
2. 断言编辑弹窗/表单可见并回填当前值 2. 断言编辑弹窗/表单可见并回填当前值
3. 点击「取 消」关闭 3. 点击「取 消」关闭
- 自动化断言:规划与 CSV `SURG-STD-014` 一致 - 自动化断言:规划与 CSV `SURG-STD-013` 一致
###### 预期结果 ###### 预期结果
...@@ -307,7 +266,7 @@ ...@@ -307,7 +266,7 @@
#### 异常验证点 #### 异常验证点
##### 【P0】【TC-UI-SURG-STD-015】【TP_SURG_STD_055】移除二次确认防误删整包 ##### 【P0】【TC-UI-SURG-STD-014】【TP_SURG_STD_055】移除二次确认防误删整包
- 前置条件:构成列表至少 1 条数据(先展开目标包) - 前置条件:构成列表至少 1 条数据(先展开目标包)
- 操作步骤: - 操作步骤:
...@@ -315,7 +274,7 @@ ...@@ -315,7 +274,7 @@
2. 点击子项行「移 除」 2. 点击子项行「移 除」
3. 若出现确认框则点「取 消」 3. 若出现确认框则点「取 消」
4. 断言行数未变化 4. 断言行数未变化
- 自动化断言:规划与 CSV `SURG-STD-015` 一致 - 自动化断言:规划与 CSV `SURG-STD-014` 一致
###### 预期结果 ###### 预期结果
......
# 基础管理-接口管理-HIS价对照查询 UI 自动化测试用例
**来源测试点**:`testpoint/基础管理-接口管理-HIS价对照查询-测试点分析-01.md`
**执行 CSV**:`testcase/基础管理-接口管理-HIS价对照查询-UI自动化测试用例-01.csv`
**页面 URL**:`/spd/basic/interface/interface/priceCompare`
**定位器 YAML**:`locators/spd/iface-his-price.locator.yaml`
**元素扫描**:`data/scan/iface-his-price-elements.json`(68 项)
**关联规范**:`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-IFACE-001.md`
**版本**:2026-11-03
**自动化框架**:Playwright + TypeScript(规划 `tests/spd/iface-his-price.spec.ts`,依赖 `auth.setup` 登录态)
**通用前置**:正例账号 `test_1` + `storageState`;具备「基础设置 → 接口管理 → HIS价对照查询」权限。
**页面约定**:整页渲染;定位在 `page` 上。
**隔离**:每用例独立 context(playwright-storage-state-isolation)。
**菜单导航**:菜单「基础设置 → 接口管理 → HIS价对照查询」;`openPath('/spd/basic/interface/interface/priceCompare')` 并断言 URL。
**写操作**:导出/查询为主;若有编辑仅打开弹窗后取消。
**动态取数**:查询后从首行读取 `${sampleCode}`/`${sampleName}`;mock:`__NOT_EXIST_IFACE__99999`。
---
## 基础设置 · 接口管理
### HIS价对照查询 · 快捷筛选查询
#### 功能验证点
##### 【P0】【TC-UI-IFACE-HPR-001】【TP_IFACE_HPR_005】默认条件查询
- 前置条件:已进入HIS价对照查询页
- 操作步骤:
1. 点击「查 询」或「查询」
2. 断言列表有数据或明确空态,「共 N 条」与当前结果一致
- 自动化断言:规划与 CSV `IFACE-HPR-001` 及 `tests/spd/iface-his-price.spec.ts` 一致
###### 预期结果
默认查询无报错;总数与列表一致。
---
##### 【P0】【TC-UI-IFACE-HPR-002】【TP_IFACE_HPR_007】全量可见条件组合查询
- 前置条件:默认查询至少 1 条,否则 skip
- 操作步骤:
1. 默认查询 → 从首行提取全量样本(只填当前结果里有值的条件,见 rules 3.2)
2. 快捷区可见非空条件全部填入后查询
3. 抽样首行同时满足全部已填条件;无未捕获异常
- 自动化断言:规划与 CSV `IFACE-HPR-002` 及 `tests/spd/iface-his-price.spec.ts` 一致
###### 预期结果
查询正常无报错;查询结果与查询条件一致。
---
### HIS价对照查询 · 列表
#### 边界验证点
##### 【P1】【TC-UI-IFACE-HPR-003】【TP_IFACE_HPR_021】无匹配空态(mock反例)
- 前置条件:已进入HIS价对照查询页
- 操作步骤:
1. 物料编号/名称填入 `__NOT_EXIST_IFACE__99999` 后查询
2. 断言表头仍在,0 行或空态,分页总数为 0
- 自动化断言:规划与 CSV `IFACE-HPR-003` 及 `tests/spd/iface-his-price.spec.ts` 一致
###### 预期结果
无匹配不报错;不展示过期成功态数据。
---
### HIS价对照查询 · 快捷筛选查询
#### 功能验证点
##### 【P0】【TC-UI-IFACE-HPR-004】【TP_IFACE_HPR_008】仅查看价格差异 switch
- 前置条件:已进入HIS价对照查询页
- 操作步骤:
1. 打开「仅查看价格差异明细」switch
2. 点击查询,断言列表仅为有差异行或明确空态
- 自动化断言:规划与 CSV `IFACE-HPR-004` 及 `tests/spd/iface-his-price.spec.ts` 一致
###### 预期结果
switch 与列表差异过滤一致。
---
### HIS价对照查询 · 查询条件展开收起
#### 功能验证点
##### 【P1】【TC-UI-IFACE-HPR-005】【TP_IFACE_HPR_013】展开后更多条件可见
- 前置条件:已进入HIS价对照查询页
- 操作步骤:
1. 点击「展开」
2. 断言第二行筛选字段可见
3. 点击「收起」,折叠行隐藏
- 自动化断言:规划与 CSV `IFACE-HPR-005` 及 `tests/spd/iface-his-price.spec.ts` 一致
###### 预期结果
展开/收起交互正常。
---
### HIS价对照查询 · 列表
#### 功能验证点
##### 【P0】【TC-UI-IFACE-HPR-006】【TP_IFACE_HPR_020】列表核心列完整
- 前置条件:已进入HIS价对照查询页
- 操作步骤:
1. 断言表头含 物料编号、规格型号、HIS、SPD、差异等核心列
2. 若有数据,抽样首行字段非空
- 自动化断言:规划与 CSV `IFACE-HPR-006` 及 `tests/spd/iface-his-price.spec.ts` 一致
###### 预期结果
核心列完整;列表结构正确。
---
### HIS价对照查询 · 分页
#### 功能验证点
##### 【P1】【TC-UI-IFACE-HPR-007】【TP_IFACE_HPR_022】分页翻至第 2 页
- 前置条件:总条数大于一页,否则 skip
- 操作步骤:
1. 记录第 1 页首行关键字段
2. 点击页码「2」或「下一页」
3. 断言页码高亮正确,首行数据与第 1 页不同
- 自动化断言:规划与 CSV `IFACE-HPR-007` 及 `tests/spd/iface-his-price.spec.ts` 一致
###### 预期结果
翻页成功;数据更换。
---
### HIS价对照查询 · 导出
#### 功能验证点
##### 【P1】【TC-UI-IFACE-HPR-008】【TP_IFACE_HPR_018】导出入口可触发
- 前置条件:已进入HIS价对照查询页
- 操作步骤:
1. 点击「导 出」或「导出」或「导出明细」
2. 断言无未捕获异常(不校验文件内容)
- 自动化断言:规划与 CSV `IFACE-HPR-008` 及 `tests/spd/iface-his-price.spec.ts` 一致
###### 预期结果
导出流程可启动。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 | **8** 条(P0=4 / P1=4) |
| 来源 | 从 33 条测试点选取可稳定自动化场景 |
| 未纳入自动化 | 会话过期、无菜单权限、接口失败注入、导出文件内容、写操作成功落库、弹窗全字段 |
| 单一职责 | 每条只断言一个核心业务结果 |
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