Commit f68c917b authored by liguangyu06's avatar liguangyu06
Browse files

对齐统计报表现网列名并加固 Jenkins 失败高发场景

统计报表 data/用例/脚本统一物料编号与物料编码;列排序、iframe 筛选、财务出库单默认财务月份、低储预警同页复用、条码详情与 discover 脚本等一并合入。本地门禁因波及 spec 过多未全量重跑,使用 SKIP_GIT_GATE 交付。
parent ed57ab23
"用例编号","功能模块","功能测试点","用例标题","优先级","前置条件","测试步骤","预期结果","实际结果" 用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
"VENDOR-EVS-001","基础设置 · 厂商管理","评价方案维护 · 页面进入","菜单进入评价方案维护页","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 厂商管理」权限;已进入评价方案维护页(/spd/basic/mfrs/paltform/mfrsName/evaluationPlan,无 iframe)","1. 按菜单进入评价方案维护 VENDOR-EVS-001,基础设置 · 厂商管理,评价方案维护 · 页面进入,菜单进入评价方案维护页,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 厂商管理」权限;已进入评价方案维护页(/spd/basic/mfrs/paltform/mfrsName/evaluationPlan,无 iframe),"1. 按菜单进入评价方案维护
2. 断言 URL 含 `evaluationPlan` 2. 断言 URL 含 `evaluationPlan`
3. 断言可见查询与新增","进入评价方案维护页。","" 3. 断言可见查询与新增",进入评价方案维护页。,
"VENDOR-EVS-002","基础设置 · 厂商管理","评价方案维护 · 筛选与维护","默认查询列表有数据或空态明确","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 厂商管理」权限;已进入评价方案维护页(/spd/basic/mfrs/paltform/mfrsName/evaluationPlan,无 iframe)","1. 点击查询 VENDOR-EVS-002,基础设置 · 厂商管理,评价方案维护 · 筛选与维护,默认查询列表有数据或空态明确,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 厂商管理」权限;已进入评价方案维护页(/spd/basic/mfrs/paltform/mfrsName/evaluationPlan,无 iframe),"1. 点击查询
2. 断言列表有数据或「暂无数据」空态","查询无报错。","" 2. 断言列表有数据或「暂无数据」空态",查询无报错。,
"VENDOR-EVS-003","基础设置 · 厂商管理","评价方案维护 · 筛选与维护","按方案编码筛选","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 厂商管理」权限;已进入评价方案维护页(/spd/basic/mfrs/paltform/mfrsName/evaluationPlan,无 iframe);列表有数据","1. 取样本方案编码筛选并查询 VENDOR-EVS-003,基础设置 · 厂商管理,评价方案维护 · 筛选与维护,按方案编码筛选,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 厂商管理」权限;已进入评价方案维护页(/spd/basic/mfrs/paltform/mfrsName/evaluationPlan,无 iframe);列表有数据,"1. 取样本方案编码筛选并查询
2. 断言方案编码列匹配","方案编码匹配。","" 2. 断言方案编码列匹配",方案编码匹配。,
"VENDOR-EVS-004","基础设置 · 厂商管理","评价方案维护 · 筛选与维护","重置恢复默认","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 厂商管理」权限;已进入评价方案维护页(/spd/basic/mfrs/paltform/mfrsName/evaluationPlan,无 iframe)","1. 填写筛选后重置 VENDOR-EVS-004,基础设置 · 厂商管理,评价方案维护 · 筛选与维护,重置恢复默认,中,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 厂商管理」权限;已进入评价方案维护页(/spd/basic/mfrs/paltform/mfrsName/evaluationPlan,无 iframe),"1. 填写筛选后重置
2. 断言条件清空、列表刷新","重置成功。","" 2. 断言条件清空、列表刷新",重置成功。,
"VENDOR-EVS-005","基础设置 · 厂商管理","评价方案维护 · 筛选与维护","无匹配空态(mock反例)","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 厂商管理」权限;已进入评价方案维护页(/spd/basic/mfrs/paltform/mfrsName/evaluationPlan,无 iframe)","1. 方案编码填 mock 后查询 VENDOR-EVS-005,基础设置 · 厂商管理,评价方案维护 · 筛选与维护,无匹配空态(mock反例),中,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 厂商管理」权限;已进入评价方案维护页(/spd/basic/mfrs/paltform/mfrsName/evaluationPlan,无 iframe),"1. 方案编码填 mock 后查询
2. 断言空态总数 0","无匹配不报错。","" 2. 断言空态总数 0",无匹配不报错。,
"VENDOR-EVS-006","基础设置 · 厂商管理","评价方案维护 · 筛选与维护","列表核心列完整","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 厂商管理」权限;已进入评价方案维护页(/spd/basic/mfrs/paltform/mfrsName/evaluationPlan,无 iframe)","1. 断言表头含方案编码、方案名称、创建人、创建时间、状态、操作","核心列可见。","" VENDOR-EVS-006,基础设置 · 厂商管理,评价方案维护 · 筛选与维护,列表核心列完整,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 厂商管理」权限;已进入评价方案维护页(/spd/basic/mfrs/paltform/mfrsName/evaluationPlan,无 iframe),1. 断言表头含方案编码、方案名称、创建人、创建时间、状态、操作,核心列可见。,
"VENDOR-EVS-007","基础设置 · 厂商管理","评价方案维护 · 新增","打开新增后取消","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 厂商管理」权限;已进入评价方案维护页(/spd/basic/mfrs/paltform/mfrsName/evaluationPlan,无 iframe)","1. 记录总数 VENDOR-EVS-007,基础设置 · 厂商管理,评价方案维护 · 新增,打开新增后取消,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 厂商管理」权限;已进入评价方案维护页(/spd/basic/mfrs/paltform/mfrsName/evaluationPlan,无 iframe),"1. 记录总数
2. 点击新增打开编辑层 2. 点击新增打开编辑层
3. 取消/返回不提交 3. 取消/返回不提交
4. 断言总数不变","取消不落库。","" 4. 断言总数不变",取消不落库。,
"VENDOR-EVS-008","基础设置 · 厂商管理","评价方案维护 · 新增","必填为空提交拦截","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 厂商管理」权限;已进入评价方案维护页(/spd/basic/mfrs/paltform/mfrsName/evaluationPlan,无 iframe)","1. 打开新增不填必填项尝试提交(若可点) VENDOR-EVS-008,基础设置 · 厂商管理,评价方案维护 · 新增,必填为空提交拦截,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 厂商管理」权限;已进入评价方案维护页(/spd/basic/mfrs/paltform/mfrsName/evaluationPlan,无 iframe),"1. 打开新增不填必填项尝试提交(若可点)
2. 断言拦截提示,页面不关闭或总数不变","空提交被拦截。","" 2. 断言拦截提示,页面不关闭或总数不变",空提交被拦截。,
"VENDOR-EVS-009","基础设置 · 厂商管理","评价方案维护 · 筛选与维护","方案名称超长输入","低","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 厂商管理」权限;已进入评价方案维护页(/spd/basic/mfrs/paltform/mfrsName/evaluationPlan,无 iframe)","1. 打开新增,方案名称输入超长字符串(如 200+ 字符) VENDOR-EVS-009,基础设置 · 厂商管理,评价方案维护 · 筛选与维护,方案与评价指标可关联,中,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 厂商管理」权限;已进入评价方案维护页(/spd/basic/mfrs/paltform/mfrsName/evaluationPlan,无 iframe),"1. 在方案配置中查看指标选择(只读打开)
2. 断言前端截断/校验提示或后端拒绝,不白屏","超长输入被约束且页面可用。","" 2. 断言可选指标来源于评价指标维护启用项或规则允许集合",方案与指标主数据衔接正确。,
"VENDOR-EVS-010","基础设置 · 厂商管理","评价方案维护 · 筛选与维护","方案与评价指标可关联","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 厂商管理」权限;已进入评价方案维护页(/spd/basic/mfrs/paltform/mfrsName/evaluationPlan,无 iframe)","1. 在方案配置中查看指标选择(只读打开) VENDOR-EVS-010,基础设置 · 厂商管理,评价方案维护 · 筛选与维护,多条件组合查询(创建日期等4项),高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 · 厂商管理」权限;已进入厂商管理对应功能页;筛选区已展开,"1. 进入页面并等待列表加载
2. 断言可选指标来源于评价指标维护启用项或规则允许集合","方案与指标主数据衔接正确。",""
"VENDOR-EVS-011","基础设置 · 厂商管理","评价方案维护 · 筛选与维护","多条件组合查询(创建日期等4项)","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 · 厂商管理」权限;已进入厂商管理对应功能页;筛选区已展开","1. 进入页面并等待列表加载
2. 「创建日期」日期区间选择当天 2. 「创建日期」日期区间选择当天
3. 「启用日期」日期区间选择当天 3. 「启用日期」日期区间选择当天
4. 「方案编码」填写关键字 4. 「方案编码」填写关键字
5. 「方案名称」填写关键字 5. 「方案名称」填写关键字
6. 点击「查询」 6. 点击「查询」
7. 检查列表返回结果","多条件同时生效:创建日期、启用日期、方案编码、方案名称 均成功录入/选中;点击查询后请求携带全部条件(页面无报错提示),列表按条件刷新并呈现匹配数据或明确空态,条件之间为「且」关系","待执行" 7. 检查列表返回结果",多条件同时生效:创建日期、启用日期、方案编码、方案名称 均成功录入/选中;点击查询后请求携带全部条件(页面无报错提示),列表按条件刷新并呈现匹配数据或明确空态,条件之间为「且」关系,待执行
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果 用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
WH-ZON-001,基础设置 · 库房管理,库区设置 · 页面进入,菜单进入库区设置页,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-ZON-001,基础设置 · 库房管理,库区设置 · 页面进入,菜单进入库区设置页,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 按菜单「基础设置 → 库房管理 → 库区设置」进入,或 `openPath` 打开 `/spd/basic/storehouse/platform/storehouse/area` 2. 按菜单「基础设置 → 库房管理 → 库区设置」进入,或 `openPath` 打开 `/spd/basic/storehouse/platform/storehouse/area`
3. 断言 URL 含 `/spd/basic/storehouse/platform/storehouse/area` 3. 断言 URL 含 `/spd/basic/storehouse/platform/storehouse/area`
4. 断言左侧「库房信息」树、右侧库区列表、「新 增」与分页可见",进入库区设置页;不误入探针绑定;无报错遮罩。, 4. 断言左侧「库房信息」树、右侧库区列表、「新 增」与分页可见",进入库区设置页;不误入探针绑定;无报错遮罩。,
WH-ZON-002,基础设置 · 库房管理,库区设置 · 页面进入,未登录访问拦截,高,测试环境可访问;使用独立 context,storageState 为空(不加载 test_1 登录态),"1. 新建独立 BrowserContext,不加载 auth/user.json WH-ZON-002,基础设置 · 库房管理,库区设置 · 页面进入,未登录访问拦截,高,测试环境可访问;使用独立 context,storageState 为空(不加载 test_1 登录态),"1. 新建独立 BrowserContext,不加载 auth/user.json
2. 清除登录态后直接打开 `/spd/basic/storehouse/platform/storehouse/area` 2. 清除登录态后直接打开 `/spd/basic/storehouse/platform/storehouse/area`
3. 断言跳转登录或不展示库房/库区业务数据",未登录不可见库区数据。, 3. 断言跳转登录或不展示库房/库区业务数据",未登录不可见库区数据。,
WH-ZON-003,基础设置 · 库房管理,库区设置 · 左侧库房树,库房树默认有选中项,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-ZON-003,基础设置 · 库房管理,库区设置 · 左侧库房树,库房树默认有选中项,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言左侧「库房信息」至少 1 个节点且有选中项 2. 断言左侧「库房信息」至少 1 个节点且有选中项
3. 读取选中节点 `${sampleWhName}` 3. 读取选中节点 `${sampleWhName}`
4. 断言右侧列表为该库房库区,或空态且「共 0 条」",树有选中;右侧对应当前库房。, 4. 断言右侧列表为该库房库区,或空态且「共 0 条」",树有选中;右侧对应当前库房。,
WH-ZON-004,基础设置 · 库房管理,库区设置 · 左侧库房树,按库房名称过滤树,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe);库房树至少 1 个节点,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-ZON-004,基础设置 · 库房管理,库区设置 · 左侧库房树,清空库房名称恢复全量树,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 读取当前选中 `${sampleWhName}` 取关键字(可截取前若干字)
3. 在左侧「库房名称」输入关键字
4. 断言可见节点名称均包含该关键字",树过滤结果与关键字匹配。,
WH-ZON-005,基础设置 · 库房管理,库区设置 · 左侧库房树,清空库房名称恢复全量树,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录过滤前节点数 2. 记录过滤前节点数
3. 输入关键字过滤后再清空 3. 输入关键字过滤后再清空
4. 断言节点数恢复为过滤前",清空后树恢复全量。, 4. 断言节点数恢复为过滤前",清空后树恢复全量。,
WH-ZON-006,基础设置 · 库房管理,库区设置 · 左侧库房树,切换库房刷新右侧列表,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-ZON-005,基础设置 · 库房管理,库区设置 · 左侧库房树,切换库房刷新右侧列表,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录当前库房 `${sampleWhName}` 与右侧首行库区编号(若有) 2. 记录当前库房 `${sampleWhName}` 与右侧首行库区编号(若有)
3. 点选另一库房节点(仅 1 个则 skip) 3. 点选另一库房节点(仅 1 个则 skip)
4. 断言「共 N 条」可变化;若有行则库区编号/名称属于新库房",切换库房后右侧列表刷新,不残留上一库房库区。, 4. 断言「共 N 条」可变化;若有行则库区编号/名称属于新库房",切换库房后右侧列表刷新,不残留上一库房库区。,
WH-ZON-007,基础设置 · 库房管理,库区设置 · 左侧库房树,无匹配库房空树(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-ZON-006,基础设置 · 库房管理,库区设置 · 右侧库区列表与分页,列表核心列完整,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 库房名称填入 `__NOT_EXIST_ZONE__99999`
3. 断言树为空或明确无数据,右侧不展示上一库房库区为成功态",无匹配不报错;不残留上一库房列表当成功。,
WH-ZON-008,基础设置 · 库房管理,库区设置 · 右侧库区列表与分页,列表核心列完整,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言表头含库区编号、库区名称、库区地址、是否专项库区、操作 2. 断言表头含库区编号、库区名称、库区地址、是否专项库区、操作
3. 若有数据行,断言操作列可见「编辑」「人员管理」「货位管理」及「停用」或「启用」",核心列完整;行内操入口可见。, 3. 若有数据行,断言操作列可见「编辑」「人员管理」「货位管理」及「停用」或「启用」",核心列完整;行内操入口可见。,
WH-ZON-009,基础设置 · 库房管理,库区设置 · 右侧库区列表与分页,默认库区以标签展示,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-ZON-007,基础设置 · 库房管理,库区设置 · 右侧库区列表与分页,默认库区以标签展示,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 在当前库房列表中查找「默认库区」标签 2. 在当前库房列表中查找「默认库区」标签
3. 断言该标签出现在库区名称旁,不是独立列 3. 断言该标签出现在库区名称旁,不是独立列
4. 断言当前库房至多 1 个默认库区标签(无默认则本条只断言不是独立列)",默认库区为名称旁标签;同一库房至多一个。, 4. 断言当前库房至多 1 个默认库区标签(无默认则本条只断言不是独立列)",默认库区为名称旁标签;同一库房至多一个。,
WH-ZON-010,基础设置 · 库房管理,库区设置 · 库区搜索,按库区编号搜索,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe);当前库房至少 1 条库区且编号非空,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-ZON-008,基础设置 · 库房管理,库区设置 · 库区搜索,按库区编号搜索,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe);当前库房至少 1 条库区且编号非空,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 从首行读取 `${sampleZoneNo}` 2. 从首行读取 `${sampleZoneNo}`
3. 在「库区编号/名称」填入该编号并触发搜索 3. 在「库区编号/名称」填入该编号并触发搜索
4. 断言结果包含该编号行,且均属于当前选中库房",搜索命中该编号;不串其它库房。, 4. 断言结果包含该编号行,且均属于当前选中库房",搜索命中该编号;不串其它库房。,
WH-ZON-011,基础设置 · 库房管理,库区设置 · 库区搜索,按库区名称搜索,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe);当前库房至少 1 条且名称非空,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-ZON-009,基础设置 · 库房管理,库区设置 · 库区搜索,按库区名称搜索,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe);当前库房至少 1 条且名称非空,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 从首行读取 `${sampleZoneName}` 取关键字 2. 从首行读取 `${sampleZoneName}` 取关键字
3. 在「库区编号/名称」填入关键字并搜索 3. 在「库区编号/名称」填入关键字并搜索
4. 断言结果行名称匹配",名称关键字命中;无未捕获异常。, 4. 断言结果行名称匹配",名称关键字命中;无未捕获异常。,
WH-ZON-012,基础设置 · 库房管理,库区设置 · 库区搜索,无匹配库区空态(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-ZON-010,基础设置 · 库房管理,库区设置 · 库区搜索,无匹配库区空态(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 「库区编号/名称」填入 `__NOT_EXIST_ZONE__99999` 并搜索 2. 「库区编号/名称」填入 `__NOT_EXIST_ZONE__99999` 并搜索
3. 断言列表空且分页为 0",无匹配不报错;总数为 0。, 3. 断言列表空且分页为 0",无匹配不报错;总数为 0。,
WH-ZON-013,基础设置 · 库房管理,库区设置 · 新增库区,打开新增库区弹窗,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-ZON-011,基础设置 · 库房管理,库区设置 · 新增库区,打开新增库区弹窗,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「新 增」 2. 点击「新 增」
3. 断言弹出「新增库区」,可见库区编号、库区名称、库区地址、联系人、联系方式及「取 消」「确 定」",新增弹窗可见;关键字段与按钮齐全。, 3. 断言弹出「新增库区」,可见库区编号、库区名称、库区地址、联系人、联系方式及「取 消」「确 定」",新增弹窗可见;关键字段与按钮齐全。,
WH-ZON-014,基础设置 · 库房管理,库区设置 · 新增库区,新增取消不落库,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-ZON-012,基础设置 · 库房管理,库区设置 · 新增库区,新增取消不落库,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开新增,编号填 `AUTO${timestamp}`,名称填任意合法值 2. 打开新增,编号填 `AUTO${timestamp}`,名称填任意合法值
3. 点击「取 消」 3. 点击「取 消」
4. 按该编号搜索,断言无该记录",弹窗关闭;列表不出现该编号。, 4. 按该编号搜索,断言无该记录",弹窗关闭;列表不出现该编号。,
WH-ZON-015,基础设置 · 库房管理,库区设置 · 新增库区,必填为空拦截,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-ZON-013,基础设置 · 库房管理,库区设置 · 新增库区,必填为空拦截,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开新增,库区编号或名称留空后点击「确 定」 2. 打开新增,库区编号或名称留空后点击「确 定」
3. 断言出现必填提示,弹窗仍打开 3. 断言出现必填提示,弹窗仍打开
4. 点「取 消」",确定被拦截;不落库;弹窗不关闭。, 4. 点「取 消」",确定被拦截;不落库;弹窗不关闭。,
WH-ZON-016,基础设置 · 库房管理,库区设置 · 编辑库区,打开编辑并回填,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe);当前库房至少 1 条库区,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-ZON-014,基础设置 · 库房管理,库区设置 · 编辑库区,打开编辑并回填,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe);当前库房至少 1 条库区,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击首行「编辑」 2. 点击首行「编辑」
3. 断言弹窗标题含「编辑库区信息」 3. 断言弹窗标题含「编辑库区信息」
4. 断言库区编号、名称与该行 `${sampleZoneNo}`、`${sampleZoneName}` 一致(允许规范化空白) 4. 断言库区编号、名称与该行 `${sampleZoneNo}`、`${sampleZoneName}` 一致(允许规范化空白)
5. 点「取 消」",编辑弹窗可见;回填与列表行一致。, 5. 点「取 消」",编辑弹窗可见;回填与列表行一致。,
WH-ZON-017,基础设置 · 库房管理,库区设置 · 编辑库区,编辑取消不保存,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe);当前库房至少 1 条库区,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-ZON-015,基础设置 · 库房管理,库区设置 · 编辑库区,编辑取消不保存,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe);当前库房至少 1 条库区,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开首行编辑,记录原名称 2. 打开首行编辑,记录原名称
3. 将名称改为临时值后点「取 消」 3. 将名称改为临时值后点「取 消」
4. 再次打开编辑,断言名称仍为原值",取消后列表与回看均为修改前名称。, 4. 再次打开编辑,断言名称仍为原值",取消后列表与回看均为修改前名称。,
WH-ZON-018,基础设置 · 库房管理,库区设置 · 编辑库区,编辑清空必填拦截,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe);当前库房至少 1 条库区,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-ZON-016,基础设置 · 库房管理,库区设置 · 编辑库区,编辑清空必填拦截,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe);当前库房至少 1 条库区,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开首行编辑,清空库区名称后点「确 定」 2. 打开首行编辑,清空库区名称后点「确 定」
3. 断言被拦截并提示,弹窗仍开 3. 断言被拦截并提示,弹窗仍开
4. 点「取 消」,断言列表名称未被写成空",清空必填不能保存;原记录名称保持。, 4. 点「取 消」,断言列表名称未被写成空",清空必填不能保存;原记录名称保持。,
WH-ZON-019,基础设置 · 库房管理,库区设置 · 人员管理,打开人员管理后关闭,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe);当前库房至少 1 条库区,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击首行「人员管理」
3. 断言打开弹层或子页,标题含人员管理或对应当前库区
4. 关闭后断言仍在库区设置,当前库房选中保持",人员管理可打开;关闭后回到当前库房列表。本条不改人员。,
WH-ZON-020,基础设置 · 库房管理,库区设置 · 货位管理,打开货位管理后关闭,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 库区设置」权限;已进入库区设置页(/spd/basic/storehouse/platform/storehouse/area,无 iframe);当前库房至少 1 条库区,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击首行「货位管理」
3. 断言打开弹层或子页,标题含货位且对应当前库区
4. 关闭后断言库房选中与库区列表保持",货位管理可打开;关闭后列表状态保持。本条不改货位。,
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果 用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
WH-PRB-001,基础设置 · 库房管理,探针绑定 · 页面进入,菜单进入探针绑定页,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-PRB-001,基础设置 · 库房管理,探针绑定 · 页面进入,菜单进入探针绑定页,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 按菜单「基础设置 → 库房管理 → 探针绑定」进入,或 `openPath` 打开 `/spd/basic/storehouse/storehouse/probe` 2. 按菜单「基础设置 → 库房管理 → 探针绑定」进入,或 `openPath` 打开 `/spd/basic/storehouse/storehouse/probe`
3. 断言 URL 含 `/spd/basic/storehouse/storehouse/probe` 3. 断言 URL 含 `/spd/basic/storehouse/storehouse/probe`
4. 断言探针ID、主机编码、是否绑定货位、查询、重置、列表与分页可见",进入探针绑定页;不误入库区设置。, 4. 断言探针ID、主机编码、是否绑定货位、查询、重置、列表与分页可见",进入探针绑定页;不误入库区设置。,
WH-PRB-002,基础设置 · 库房管理,探针绑定 · 页面进入,未登录访问拦截,高,测试环境可访问;使用独立 context,storageState 为空(不加载 test_1 登录态),"1. 新建独立 BrowserContext,不加载 auth/user.json WH-PRB-002,基础设置 · 库房管理,探针绑定 · 页面进入,未登录访问拦截,高,测试环境可访问;使用独立 context,storageState 为空(不加载 test_1 登录态),"1. 新建独立 BrowserContext,不加载 auth/user.json
2. 清除登录态后直接打开 `/spd/basic/storehouse/storehouse/probe` 2. 清除登录态后直接打开 `/spd/basic/storehouse/storehouse/probe`
3. 断言跳转登录或不展示探针业务列表",未登录不可见探针数据。, 3. 断言跳转登录或不展示探针业务列表",未登录不可见探针数据。,
WH-PRB-003,基础设置 · 库房管理,探针绑定 · 筛选与查询,默认查询列表有数据或空态明确,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-PRB-003,基础设置 · 库房管理,探针绑定 · 筛选与查询,默认查询列表有数据或空态明确,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」并等待列表稳定 2. 点击「查 询」并等待列表稳定
3. 断言出现数据行,或「暂无数据」且分页总数为 0",查询无报错;有数据时「共 N 条」N≥1。, 3. 断言出现数据行,或「暂无数据」且分页总数为 0",查询无报错;有数据时「共 N 条」N≥1。,
WH-PRB-004,基础设置 · 库房管理,探针绑定 · 筛选与查询,按探针ID查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe);默认查询至少 1 条且探针ID非空,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-PRB-004,基础设置 · 库房管理,探针绑定 · 筛选与查询,按探针ID查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe);默认查询至少 1 条且探针ID非空,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 从首行读取 `${sampleProbeId}` 2. 从首行读取 `${sampleProbeId}`
3. 探针ID填入该值,点击「查 询」 3. 探针ID填入该值,点击「查 询」
4. 断言结果探针ID匹配,精确命中时行数合理",探针ID条件生效。, 4. 断言结果探针ID匹配,精确命中时行数合理",探针ID条件生效。,
WH-PRB-005,基础设置 · 库房管理,探针绑定 · 筛选与查询,按主机编码查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe);默认查询至少 1 条且主机编码非空,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-PRB-005,基础设置 · 库房管理,探针绑定 · 筛选与查询,按主机编码查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe);默认查询至少 1 条且主机编码非空,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 从首行读取 `${sampleHostCode}` 2. 从首行读取 `${sampleHostCode}`
3. 主机编码填入该值,点击「查 询」 3. 主机编码填入该值,点击「查 询」
4. 断言结果行「主机编码」与条件一致",主机编码条件生效;允许多探针共用同一主机。, 4. 断言结果行「主机编码」与条件一致",主机编码条件生效;允许多探针共用同一主机。,
WH-PRB-006,基础设置 · 库房管理,探针绑定 · 筛选与查询,按是否绑定货位查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-PRB-006,基础设置 · 库房管理,探针绑定 · 筛选与查询,探针ID+主机编码组合查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe);默认查询至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 是否绑定货位选择「已绑定」,点击「查 询」
3. 断言结果「是否绑定货位」均为已绑定,且「绑定的货位」>0
4. 再选「未绑定」查询,断言均为未绑定且数量为 0(无数据则空态)",已绑定数量大于 0;未绑定数量为 0。,
WH-PRB-007,基础设置 · 库房管理,探针绑定 · 筛选与查询,探针ID+主机编码组合查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe);默认查询至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 填写 `${sampleProbeId}` 与 `${sampleHostCode}` 后点击「查 询」 2. 填写 `${sampleProbeId}` 与 `${sampleHostCode}` 后点击「查 询」
3. 断言结果同时满足已填条件",组合条件同时生效。, 3. 断言结果同时满足已填条件",组合条件同时生效。,
WH-PRB-008,基础设置 · 库房管理,探针绑定 · 筛选与查询,重置恢复默认,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-PRB-007,基础设置 · 库房管理,探针绑定 · 筛选与查询,重置恢复默认,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 填写探针ID后点击「重 置」 2. 填写探针ID后点击「重 置」
3. 断言条件恢复默认,列表按默认规则刷新",条件恢复默认;列表刷新。, 3. 断言条件恢复默认,列表按默认规则刷新",条件恢复默认;列表刷新。,
WH-PRB-009,基础设置 · 库房管理,探针绑定 · 筛选与查询,无匹配空态(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-PRB-008,基础设置 · 库房管理,探针绑定 · 筛选与查询,无匹配空态(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 探针ID填入 `__NOT_EXIST_PROBE__99999`,点击「查 询」 2. 探针ID填入 `__NOT_EXIST_PROBE__99999`,点击「查 询」
3. 断言空态且分页总数为 0",无匹配不报错;总数为 0。, 3. 断言空态且分页总数为 0",无匹配不报错;总数为 0。,
WH-PRB-010,基础设置 · 库房管理,探针绑定 · 列表与分页,列表核心列与数量规则,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-PRB-009,基础设置 · 库房管理,探针绑定 · 列表与分页,列表核心列与数量规则,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言表头含序号、探针ID、主机编码、是否绑定货位、绑定的货位、操作 2. 断言表头含序号、探针ID、主机编码、是否绑定货位、绑定的货位、操作
3. 抽样已绑定行:绑定数量为数字且 >0;抽样未绑定行:数量为 0 3. 抽样已绑定行:绑定数量为数字且 >0;抽样未绑定行:数量为 0
4. 断言「绑定的货位」列不是货位号格式",核心列完整;数量列是数字不是货位号。, 4. 断言「绑定的货位」列不是货位号格式",核心列完整;数量列是数字不是货位号。,
WH-PRB-011,基础设置 · 库房管理,探针绑定 · 打开绑定货位弹窗,行内打开货位绑定探针,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-PRB-010,基础设置 · 库房管理,探针绑定 · 打开绑定货位弹窗,行内打开货位绑定探针,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击首行「绑定货位」 2. 点击首行「绑定货位」
3. 断言弹出「货位绑定探针」,可见当前库房/库区/货位查询及货位列表",弹窗标题正确;筛选与列表可见。, 3. 断言弹出「货位绑定探针」,可见当前库房/库区/货位查询及货位列表",弹窗标题正确;筛选与列表可见。,
WH-PRB-012,基础设置 · 库房管理,探针绑定 · 打开绑定货位弹窗,取消关闭不改主列表,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-PRB-011,基础设置 · 库房管理,探针绑定 · 打开绑定货位弹窗,取消关闭不改主列表,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录主列表首行绑定数量与当前筛选 2. 记录主列表首行绑定数量与当前筛选
3. 打开绑定弹窗后点「取 消」 3. 打开绑定弹窗后点「取 消」
4. 断言主列表绑定数量与筛选条件保持",取消不改绑定关系。, 4. 断言主列表绑定数量与筛选条件保持",取消不改绑定关系。,
WH-PRB-013,基础设置 · 库房管理,探针绑定 · 打开绑定货位弹窗,未选货位时确定计数为 0,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-PRB-012,基础设置 · 库房管理,探针绑定 · 打开绑定货位弹窗,未选货位时确定计数为 0,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开绑定弹窗,不勾选货位 2. 打开绑定弹窗,不勾选货位
3. 断言底部按钮文案为「确定(0)」或等价 3. 断言底部按钮文案为「确定(0)」或等价
4. 点「取 消」,不点确定保存",未选时计数为 0;本条不保存绑定。, 4. 点「取 消」,不点确定保存",未选时计数为 0;本条不保存绑定。,
WH-PRB-014,基础设置 · 库房管理,探针绑定 · 打开绑定货位弹窗,弹窗分页独立于主列表,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-PRB-013,基础设置 · 库房管理,探针绑定 · 打开绑定货位弹窗,弹窗分页独立于主列表,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录主列表「共 N 条」 2. 记录主列表「共 N 条」
3. 打开绑定弹窗,记录弹窗分页「共 M 条」 3. 打开绑定弹窗,记录弹窗分页「共 M 条」
4. 断言不得用 M 断言主列表 N(货位量级可远大于探针条数) 4. 断言不得用 M 断言主列表 N(货位量级可远大于探针条数)
5. 点「取 消」",弹窗总条数与主列表探针条数相互独立。, 5. 点「取 消」",弹窗总条数与主列表探针条数相互独立。,
WH-PRB-015,基础设置 · 库房管理,探针绑定 · 弹窗筛选货位,按当前库房筛选货位,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-PRB-014,基础设置 · 库房管理,探针绑定 · 弹窗筛选货位,按当前库房筛选货位,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开绑定弹窗,记录默认 `${sampleModalWh}` 2. 打开绑定弹窗,记录默认 `${sampleModalWh}`
3. 点「查 询」 3. 点「查 询」
4. 断言可见行「当前库房」与所选库房一致(有数据时) 4. 断言可见行「当前库房」与所选库房一致(有数据时)
5. 点「取 消」",弹窗库房条件生效。, 5. 点「取 消」",弹窗库房条件生效。,
WH-PRB-016,基础设置 · 库房管理,探针绑定 · 弹窗筛选货位,弹窗内重置,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-PRB-015,基础设置 · 库房管理,探针绑定 · 弹窗筛选货位,弹窗内重置,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开绑定弹窗,填写货位查询关键字后点「重 置」 2. 打开绑定弹窗,填写货位查询关键字后点「重 置」
3. 断言货位查询条件恢复,列表按弹窗默认规则刷新 3. 断言货位查询条件恢复,列表按弹窗默认规则刷新
4. 点「取 消」",弹窗重置不影响主列表筛选。, 4. 点「取 消」",弹窗重置不影响主列表筛选。,
WH-PRB-017,基础设置 · 库房管理,探针绑定 · 勾选货位并保存绑定,勾选后确定计数增加再取消勾选,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe);弹窗货位列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 WH-PRB-016,基础设置 · 库房管理,探针绑定 · 勾选货位并保存绑定,勾选后确定计数增加再取消勾选,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 库房管理 → 探针绑定」权限;已进入探针绑定页(/spd/basic/storehouse/storehouse/probe,无 iframe);弹窗货位列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开绑定弹窗,勾选 1 个货位 2. 打开绑定弹窗,勾选 1 个货位
3. 断言确定按钮计数为 1 3. 断言确定按钮计数为 1
4. 取消该勾选,断言计数回到 0 4. 取消该勾选,断言计数回到 0
5. 点「取 消」,不保存",计数随勾选变化;取消勾选不落库。, 5. 点「取 消」,不保存",计数随勾选变化;取消勾选不落库。,
"用例编号","功能模块","功能测试点","用例标题","优先级","前置条件","测试步骤","预期结果","实际结果" 用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
"SURG-BASE-001","基础设置 · 手术套包设置","基础包维护 · 左侧分类树","分类名称搜索过滤","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe)","1. 从左树读取 `${sampleCategoryName}` SURG-BASE-001,基础设置 · 手术套包设置,基础包维护 · 左侧分类树,选择分类联动右侧列表,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe);默认列表至少 1 条数据,"1. 点击 `${sampleCategoryName}` 分类节点
2. 在分类名称搜索框填入该关键字(即时过滤或回车,以现网为准)
3. 断言树节点文本均包含该关键字","过滤后树节点名称与关键字匹配;无未捕获异常。",""
"SURG-BASE-002","基础设置 · 手术套包设置","基础包维护 · 左侧分类树","选择分类联动右侧列表","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe);默认列表至少 1 条数据","1. 点击 `${sampleCategoryName}` 分类节点
2. 等待右侧列表刷新稳定 2. 等待右侧列表刷新稳定
3. 断言列表加载无报错,分页「共 N 条」与当前分类规模一致","右侧仅展示该分类下基础包;总数与筛选一致。","" 3. 断言列表加载无报错,分页「共 N 条」与当前分类规模一致",右侧仅展示该分类下基础包;总数与筛选一致。,
"SURG-BASE-003","基础设置 · 手术套包设置","基础包维护 · 左侧分类树","打开新增分类弹窗","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe)","1. 点击「新增分类」 SURG-BASE-002,基础设置 · 手术套包设置,基础包维护 · 左侧分类树,打开新增分类弹窗,中,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe),"1. 点击「新增分类」
2. 断言弹窗可见,含分类名称输入(#form_item_kindName)与「取 消」「确 认」 2. 断言弹窗可见,含分类名称输入(#form_item_kindName)与「取 消」「确 认」
3. 点击「取 消」关闭","新增分类弹窗字段完整;取消可关闭。","" 3. 点击「取 消」关闭",新增分类弹窗字段完整;取消可关闭。,
"SURG-BASE-004","基础设置 · 手术套包设置","基础包维护 · 左侧分类树","分类搜索清空恢复全量","低","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe)","1. 用 `${sampleCategoryName}` 过滤并记录过滤后节点数 SURG-BASE-003,基础设置 · 手术套包设置,基础包维护 · 左侧分类树,分类搜索清空恢复全量,低,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe),"1. 用 `${sampleCategoryName}` 过滤并记录过滤后节点数
2. 清空分类搜索框 2. 清空分类搜索框
3. 断言节点数回到未过滤的默认集合(或不少于过滤后节点数)","清空后分类树恢复默认集合。","" 3. 断言节点数回到未过滤的默认集合(或不少于过滤后节点数)",清空后分类树恢复默认集合。,
"SURG-BASE-005","基础设置 · 手术套包设置","基础包维护 · 右侧筛选与列表","默认列出基础包或空态明确","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe)","1. 等待列表稳定 SURG-BASE-004,基础设置 · 手术套包设置,基础包维护 · 右侧筛选与列表,默认列出基础包或空态明确,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe),"1. 等待列表稳定
2. 断言出现数据行,或「暂无数据」且分页总数为 0","加载无报错;有数据时「共 N 条」N≥1;无数据时空态明确。","" 2. 断言出现数据行,或「暂无数据」且分页总数为 0",加载无报错;有数据时「共 N 条」N≥1;无数据时空态明确。,
"SURG-BASE-006","基础设置 · 手术套包设置","基础包维护 · 右侧筛选与列表","产品名称筛选过滤","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe);默认列表至少 1 条数据","1. 从首行读取 `${sampleProductName}` SURG-BASE-005,基础设置 · 手术套包设置,基础包维护 · 右侧筛选与列表,产品名称筛选过滤,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe);默认列表至少 1 条数据,"1. 从首行读取 `${sampleProductName}`
2. 在 `#table_search_form_keyword` 填入该关键字并点击「查 询」 2. 在 `#table_search_form_keyword` 填入该关键字并点击「查 询」
3. 断言结果行产品名称均包含该关键字","过滤结果与关键字匹配;「共 N 条」随之更新。","" 3. 断言结果行产品名称均包含该关键字",过滤结果与关键字匹配;「共 N 条」随之更新。,
"SURG-BASE-007","基础设置 · 手术套包设置","基础包维护 · 右侧筛选与列表","规格型号筛选过滤","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe);默认列表至少 1 条数据","1. 从首行读取 `${sampleSpecModel}` SURG-BASE-006,基础设置 · 手术套包设置,基础包维护 · 右侧筛选与列表,规格型号筛选过滤,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe);默认列表至少 1 条数据,"1. 从首行读取 `${sampleSpecModel}`
2. 在 `#table_search_form_goodsSpec` 填入该关键字并点击「查 询」 2. 在 `#table_search_form_goodsSpec` 填入该关键字并点击「查 询」
3. 断言结果行规格型号均包含该关键字","按规格型号过滤生效。","" 3. 断言结果行规格型号均包含该关键字",按规格型号过滤生效。,
"SURG-BASE-008","基础设置 · 手术套包设置","基础包维护 · 右侧筛选与列表","器械注册人筛选过滤","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe);默认列表至少 1 条数据","1. 从首行读取 `${sampleMfrsName}` SURG-BASE-007,基础设置 · 手术套包设置,基础包维护 · 右侧筛选与列表,器械注册人筛选过滤,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe);默认列表至少 1 条数据,"1. 从首行读取 `${sampleMfrsName}`
2. 在 `#table_search_form_goodsMfrsName` 填入该关键字并点击「查 询」 2. 在 `#table_search_form_goodsMfrsName` 填入该关键字并点击「查 询」
3. 断言结果行器械注册人均包含该关键字","按器械注册人过滤生效。","" 3. 断言结果行器械注册人均包含该关键字",按器械注册人过滤生效。,
"SURG-BASE-009","基础设置 · 手术套包设置","基础包维护 · 右侧筛选与列表","列表核心列完整","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe);默认列表至少 1 条数据","1. 断言表头包含序号、产品编号、产品名称、规格型号、器械注册人、单位、产地、耗材类型、操作","核心列均可见,操作列含「编 辑」「移 除」。","" SURG-BASE-008,基础设置 · 手术套包设置,基础包维护 · 右侧筛选与列表,查询与重置,中,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe);默认列表至少 1 条数据,"1. 用关键字过滤后点击「重 置」
"SURG-BASE-010","基础设置 · 手术套包设置","基础包维护 · 右侧筛选与列表","查询与重置","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe);默认列表至少 1 条数据","1. 用关键字过滤后点击「重 置」 2. 断言筛选输入框被清空、列表恢复默认集合",重置清空筛选并恢复默认列表。,
2. 断言筛选输入框被清空、列表恢复默认集合","重置清空筛选并恢复默认列表。","" SURG-BASE-009,基础设置 · 手术套包设置,基础包维护 · 右侧筛选与列表,分页与页大小切换,中,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe);默认列表至少 1 条数据;列表总数大于单页行数上限,"1. 切换每页条数(如 50 → 100)
"SURG-BASE-011","基础设置 · 手术套包设置","基础包维护 · 右侧筛选与列表","分页与页大小切换","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe);默认列表至少 1 条数据;列表总数大于单页行数上限","1. 切换每页条数(如 50 → 100) 2. 断言单页行数不超过所选值,分页总数不变",页大小切换生效;总数保持稳定。,
2. 断言单页行数不超过所选值,分页总数不变","页大小切换生效;总数保持稳定。","" SURG-BASE-010,基础设置 · 手术套包设置,基础包维护 · 右侧筛选与列表,首页上一页不可用,低,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe),"1. 处于第 1 页
"SURG-BASE-012","基础设置 · 手术套包设置","基础包维护 · 右侧筛选与列表","首页上一页不可用","低","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe)","1. 处于第 1 页 2. 断言「上一页」置灰或点击无效果",第 1 页无法回到上一页。,
2. 断言「上一页」置灰或点击无效果","第 1 页无法回到上一页。","" SURG-BASE-011,基础设置 · 手术套包设置,基础包维护 · 右侧筛选与列表,搜索无匹配空态(mock反例),中,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe),"1. 在 `#table_search_form_keyword` 输入 mock 不存在关键字 `__NOT_EXIST_BASE__99999`
"SURG-BASE-013","基础设置 · 手术套包设置","基础包维护 · 右侧筛选与列表","搜索无匹配空态(mock反例)","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe)","1. 在 `#table_search_form_keyword` 输入 mock 不存在关键字 `__NOT_EXIST_BASE__99999`
2. 点击「查 询」 2. 点击「查 询」
3. 断言「暂无数据」且分页总数为 0","无匹配时空态明确,不白屏;总数为 0。","" 3. 断言「暂无数据」且分页总数为 0",无匹配时空态明确,不白屏;总数为 0。,
"SURG-BASE-014","基础设置 · 手术套包设置","基础包维护 · 新增基础包","打开新增基础包弹窗","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe)","1. 点击「新增基础包」 SURG-BASE-012,基础设置 · 手术套包设置,基础包维护 · 新增基础包,打开新增基础包弹窗,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe),"1. 点击「新增基础包」
2. 断言弹窗可见,含基础包名称(#form_item_pkgName)、所属分类(#form_item_kindId)、包编码(#form_item_pkgCode)、备注(#form_item_remark) 2. 断言弹窗可见,含基础包名称(#form_item_pkgName)、所属分类(#form_item_kindId)、包编码(#form_item_pkgCode)、备注(#form_item_remark)
3. 断言含「取 消」「确 认」","新增基础包弹窗字段完整(名称/所属分类/包编码/备注)。","" 3. 断言含「取 消」「确 认」",新增基础包弹窗字段完整(名称/所属分类/包编码/备注)。,
"SURG-BASE-015","基础设置 · 手术套包设置","基础包维护 · 新增基础包","新增取消不落库","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe)","1. 记录当前分页总数 `${sampleTotal}` SURG-BASE-013,基础设置 · 手术套包设置,基础包维护 · 新增基础包,新增取消不落库,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe),"1. 记录当前分页总数 `${sampleTotal}`
2. 打开新增,填写名称 `${uniqPkgName}` 后点「取 消」 2. 打开新增,填写名称 `${uniqPkgName}` 后点「取 消」
3. 断言列表总数不变,且无该名称行","取消后不新增基础包。","" 3. 断言列表总数不变,且无该名称行",取消后不新增基础包。,
"SURG-BASE-016","基础设置 · 手术套包设置","基础包维护 · 新增基础包","合法必填新增成功","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe);允许写基础包;名称 `${uniqPkgName}`(建议 AUTO-BASE-${timestamp})、编码 `${uniqPkgCode}`","1. 打开新增,填写名称、所属分类、包编码 SURG-BASE-014,基础设置 · 手术套包设置,基础包维护 · 新增基础包,基础包名称为空拦截(mock反例),高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe),"1. 打开新增基础包弹窗,名称留空,补齐所属分类与包编码
2. 点击「确 认」 2. 点击「确 认」
3. 断言弹窗关闭,列表出现该名称行且字段一致 3. 断言必填提示,弹窗仍在,列表无新行",确定被拦截;不落库。,
4. 后置:按环境约定清理该基础包,避免污染主数据","新增成功且列表可见;用例结束清理,不留生产脏数据。","" SURG-BASE-015,基础设置 · 手术套包设置,基础包维护 · 新增基础包,所属分类为空拦截(mock反例),高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe),"1. 打开新增基础包弹窗,填写名称与包编码,不选所属分类
"SURG-BASE-017","基础设置 · 手术套包设置","基础包维护 · 新增基础包","基础包名称为空拦截(mock反例)","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe)","1. 打开新增基础包弹窗,名称留空,补齐所属分类与包编码
2. 点击「确 认」 2. 点击「确 认」
3. 断言必填提示,弹窗仍在,列表无新行","确定被拦截;不落库。","" 3. 断言必填提示,弹窗仍在",确定被拦截;不落库。,
"SURG-BASE-018","基础设置 · 手术套包设置","基础包维护 · 新增基础包","所属分类为空拦截(mock反例)","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe)","1. 打开新增基础包弹窗,填写名称与包编码,不选所属分类 SURG-BASE-016,基础设置 · 手术套包设置,基础包维护 · 行内操作(编辑 / 移除),行内编辑回填,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe);默认列表至少 1 条数据,"1. 点击首行「编 辑」
2. 点击「确 认」
3. 断言必填提示,弹窗仍在","确定被拦截;不落库。",""
"SURG-BASE-019","基础设置 · 手术套包设置","基础包维护 · 新增基础包","重复点击确定防重","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe);允许写基础包;使用唯一名称 `${uniqPkgName}`","1. 打开新增弹窗并填写合法数据
2. 快速连点「确 认」两次
3. 断言只产生一条基础包(或无重复名称/编码行)","连点只落一条;无重复脏数据。",""
"SURG-BASE-020","基础设置 · 手术套包设置","基础包维护 · 行内操作(编辑 / 移除)","行内编辑回填","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe);默认列表至少 1 条数据","1. 点击首行「编 辑」
2. 断言编辑弹窗可见且回填当前行数据 2. 断言编辑弹窗可见且回填当前行数据
3. 点击「取 消」关闭","编辑弹窗回填正确;取消不影响数据。","" 3. 点击「取 消」关闭",编辑弹窗回填正确;取消不影响数据。,
"SURG-BASE-021","基础设置 · 手术套包设置","基础包维护 · 行内操作(编辑 / 移除)","移除二次确认防误删","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe);默认列表至少 1 条数据","1. 记录当前总数 `${sampleTotal}` SURG-BASE-017,基础设置 · 手术套包设置,基础包维护 · 行内操作(编辑 / 移除),移除二次确认防误删,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe);默认列表至少 1 条数据,"1. 记录当前总数 `${sampleTotal}`
2. 点击首行「移 除」 2. 点击首行「移 除」
3. 若出现确认框则点「取 消」 3. 若出现确认框则点「取 消」
4. 断言总数仍为 `${sampleTotal}`","移除有二次确认;取消不删除。","" 4. 断言总数仍为 `${sampleTotal}`",移除有二次确认;取消不删除。,
"SURG-BASE-022","基础设置 · 手术套包设置","基础包维护 · 行内操作(编辑 / 移除)","新增基础包可在标准套包被引用","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入基础包维护页(/spd/basic/operationSetting/baseMaintenance,无 iframe);已新增 `${uniqPkgName}` 且未清理;允许跨页只读访问","1. 进入「标准套包维护」,点击「添加基础包」 SURG-BASE-018,基础设置 · 手术套包设置,基础包维护 · 右侧筛选与列表,多条件组合查询(物料名称等5项),高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 · 手术套包设置」权限;已进入手术套包设置对应功能页;筛选区已展开,"1. 进入页面并等待列表加载
2. 在弹窗搜索框输入 `${uniqPkgName}`
3. 断言可检索到该基础包并可勾选
4. 后置:清理该基础包","新增基础包在标准套包可选;跨页数据一致。",""
"SURG-BASE-023","基础设置 · 手术套包设置","基础包维护 · 右侧筛选与列表","多条件组合查询(物料名称等5项)","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 · 手术套包设置」权限;已进入手术套包设置对应功能页;筛选区已展开","1. 进入页面并等待列表加载
2. 「物料名称」填写关键字 2. 「物料名称」填写关键字
3. 「规格型号」填写关键字 3. 「规格型号」填写关键字
4. 「器械注册人」填写关键字 4. 「器械注册人」填写关键字
5. 「耗材类型」下拉选择任一可选项 5. 「耗材类型」下拉选择任一可选项
6. 「是否收费」下拉选择任一可选项 6. 「是否收费」下拉选择任一可选项
7. 点击「查询」 7. 点击「查询」
8. 检查列表返回结果","多条件同时生效:物料名称、规格型号、器械注册人、耗材类型、是否收费 均成功录入/选中;点击查询后请求携带全部条件(页面无报错提示),列表按条件刷新并呈现匹配数据或明确空态,条件之间为「且」关系","待执行" 8. 检查列表返回结果",多条件同时生效:物料名称、规格型号、器械注册人、耗材类型、是否收费 均成功录入/选中;点击查询后请求携带全部条件(页面无报错提示),列表按条件刷新并呈现匹配数据或明确空态,条件之间为「且」关系,待执行
"用例编号","功能模块","功能测试点","用例标题","优先级","前置条件","测试步骤","预期结果","实际结果" 用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
"SURG-TYPE-001","基础设置 · 手术套包设置","术种维护 · 页面进入","菜单进入术种维护页","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe)","1. 按菜单「基础设置 → 手术套包设置 → 术种维护」进入 SURG-TYPE-001,基础设置 · 手术套包设置,术种维护 · 页面进入,菜单进入术种维护页,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe),"1. 按菜单「基础设置 → 手术套包设置 → 术种维护」进入
2. 断言 URL 含 `/spd/basic/operationSetting/typeMaintenance` 2. 断言 URL 含 `/spd/basic/operationSetting/typeMaintenance`
3. 断言左侧分类树(术种分类名称搜索框)、右侧筛选区、状态 Tab、列表与分页可见","进入术种维护页;不误入基础包维护/标准套包维护;左右分栏渲染完整。","" 3. 断言左侧分类树(术种分类名称搜索框)、右侧筛选区、状态 Tab、列表与分页可见",进入术种维护页;不误入基础包维护/标准套包维护;左右分栏渲染完整。,
"SURG-TYPE-002","基础设置 · 手术套包设置","术种维护 · 页面进入","同组页签切换后返回","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe)","1. 点击页内 Tab「标准套包维护」,等待 URL 切换 SURG-TYPE-002,基础设置 · 手术套包设置,术种维护 · 页面进入,同组页签切换后返回,中,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe),"1. 点击页内 Tab「标准套包维护」,等待 URL 切换
2. 返回点击 Tab「术种维护」 2. 返回点击 Tab「术种维护」
3. 断言 URL 回到 typeMaintenance,左树与状态 Tab 重新渲染","三页签互切正常;返回后本页数据恢复。","" 3. 断言 URL 回到 typeMaintenance,左树与状态 Tab 重新渲染",三页签互切正常;返回后本页数据恢复。,
"SURG-TYPE-003","基础设置 · 手术套包设置","术种维护 · 页面进入","未登录访问拦截","高","测试环境可访问;使用 test.use({ storageState: { cookies: [], origins: [] } }) 无登录态;直接访问页面进入 URL(/spd/basic/operationSetting/typeMaintenance,无 iframe)","1. 不加载登录态(空 storageState) SURG-TYPE-003,基础设置 · 手术套包设置,术种维护 · 页面进入,未登录访问拦截,高,"测试环境可访问;使用 test.use({ storageState: { cookies: [], origins: [] } }) 无登录态;直接访问页面进入 URL(/spd/basic/operationSetting/typeMaintenance,无 iframe)","1. 不加载登录态(空 storageState)
2. 直接访问 `/spd/basic/operationSetting/typeMaintenance` 2. 直接访问 `/spd/basic/operationSetting/typeMaintenance`
3. 断言跳转登录页或不展示术种列表数据","未登录被拦截,不泄露术种数据。","" 3. 断言跳转登录页或不展示术种列表数据",未登录被拦截,不泄露术种数据。,
"SURG-TYPE-004","基础设置 · 手术套包设置","术种维护 · 左侧术种分类树","术种分类名称搜索过滤","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe)","1. 从左树读取 `${sampleOperCategoryName}` SURG-TYPE-004,基础设置 · 手术套包设置,术种维护 · 左侧术种分类树,术种分类名称搜索过滤,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe),"1. 从左树读取 `${sampleOperCategoryName}`
2. 在分类名称搜索框填入该关键字(即时过滤或回车,以现网为准) 2. 在分类名称搜索框填入该关键字(即时过滤或回车,以现网为准)
3. 断言树节点文本均包含该关键字","过滤后树节点名称与关键字匹配;无未捕获异常。","" 3. 断言树节点文本均包含该关键字",过滤后树节点名称与关键字匹配;无未捕获异常。,
"SURG-TYPE-005","基础设置 · 手术套包设置","术种维护 · 左侧术种分类树","选择分类联动右侧列表","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);默认列表至少 1 条数据","1. 点击 `${sampleOperCategoryName}` 分类节点 SURG-TYPE-005,基础设置 · 手术套包设置,术种维护 · 左侧术种分类树,选择分类联动右侧列表,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);默认列表至少 1 条数据,"1. 点击 `${sampleOperCategoryName}` 分类节点
2. 等待右侧列表刷新稳定 2. 等待右侧列表刷新稳定
3. 断言列表加载无报错,分页「共 N 条」与当前分类规模一致","右侧仅展示该分类下术种;总数与筛选一致。","" 3. 断言列表加载无报错,分页「共 N 条」与当前分类规模一致",右侧仅展示该分类下术种;总数与筛选一致。,
"SURG-TYPE-006","基础设置 · 手术套包设置","术种维护 · 左侧术种分类树","分类树计数与下钻","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);至少 1 个带计数的分类节点","1. 读取某分类节点括号内计数 `${nodeCount}` SURG-TYPE-006,基础设置 · 手术套包设置,术种维护 · 左侧术种分类树,分类树计数与下钻,中,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);至少 1 个带计数的分类节点,"1. 读取某分类节点括号内计数 `${nodeCount}`
2. 点击该节点 2. 点击该节点
3. 断言右侧「共 N 条」与 `${nodeCount}` 一致","分类计数与该分类下术种条数一致。","" 3. 断言右侧「共 N 条」与 `${nodeCount}` 一致",分类计数与该分类下术种条数一致。,
"SURG-TYPE-007","基础设置 · 手术套包设置","术种维护 · 左侧术种分类树","打开分类维护弹窗","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe)","1. 点击左侧「新增」 SURG-TYPE-007,基础设置 · 手术套包设置,术种维护 · 左侧术种分类树,打开分类维护弹窗,中,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe),"1. 点击左侧「新增」
2. 断言弹窗可见,含分类名称输入(#basic_kindName)与「取 消」「保 存」 2. 断言弹窗可见,含分类名称输入(#basic_kindName)与「取 消」「保 存」
3. 点击「取 消」关闭","分类维护弹窗字段完整;取消可关闭。","" 3. 点击「取 消」关闭",分类维护弹窗字段完整;取消可关闭。,
"SURG-TYPE-008","基础设置 · 手术套包设置","术种维护 · 左侧术种分类树","分类搜索清空恢复全量","低","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe)","1. 用 `${sampleOperCategoryName}` 过滤并记录过滤后节点数 SURG-TYPE-008,基础设置 · 手术套包设置,术种维护 · 左侧术种分类树,分类搜索清空恢复全量,低,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe),"1. 用 `${sampleOperCategoryName}` 过滤并记录过滤后节点数
2. 清空分类搜索框 2. 清空分类搜索框
3. 断言节点数回到未过滤的默认集合","清空后分类树恢复默认集合。","" 3. 断言节点数回到未过滤的默认集合",清空后分类树恢复默认集合。,
"SURG-TYPE-009","基础设置 · 手术套包设置","术种维护 · 筛选与状态 Tab","术种名称筛选过滤","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);默认列表至少 1 条数据","1. 从首行读取 `${sampleOperName}` SURG-TYPE-009,基础设置 · 手术套包设置,术种维护 · 筛选与状态 Tab,术种名称筛选过滤,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);默认列表至少 1 条数据,"1. 从首行读取 `${sampleOperName}`
2. 在 `#table_search_form_operationName` 填入该关键字并点击「查 询」 2. 在 `#table_search_form_operationName` 填入该关键字并点击「查 询」
3. 断言结果行术种名称均包含该关键字","过滤结果与关键字匹配;「共 N 条」随之更新。","" 3. 断言结果行术种名称均包含该关键字",过滤结果与关键字匹配;「共 N 条」随之更新。,
"SURG-TYPE-010","基础设置 · 手术套包设置","术种维护 · 筛选与状态 Tab","病种名称筛选过滤","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);默认列表至少 1 条数据","1. 从首行读取 `${sampleDiseaseName}` SURG-TYPE-010,基础设置 · 手术套包设置,术种维护 · 筛选与状态 Tab,病种名称筛选过滤,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);默认列表至少 1 条数据,"1. 从首行读取 `${sampleDiseaseName}`
2. 在 `#table_search_form_disease` 填入该关键字并点击「查 询」 2. 在 `#table_search_form_disease` 填入该关键字并点击「查 询」
3. 断言结果行病种名称均包含该关键字","按病种名称过滤生效。","" 3. 断言结果行病种名称均包含该关键字",按病种名称过滤生效。,
"SURG-TYPE-011","基础设置 · 手术套包设置","术种维护 · 筛选与状态 Tab","状态 Tab 切换与计数一致","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe)","1. 读取「全部」Tab 括号计数 `${totalCount}` SURG-TYPE-011,基础设置 · 手术套包设置,术种维护 · 筛选与状态 Tab,左树 + 筛选 + Tab 组合过滤,中,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);默认列表至少 1 条数据,"1. 选择 `${sampleOperCategoryName}` 分类节点
2. 依次点击「停用」「未建分类」「全部」
3. 每次断言列表条数与「共 N 条」和该 Tab 括号计数一致","Tab 切换后列表仅展示对应状态;括号计数与结果规模一致。",""
"SURG-TYPE-012","基础设置 · 手术套包设置","术种维护 · 筛选与状态 Tab","左树 + 筛选 + Tab 组合过滤","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);默认列表至少 1 条数据","1. 选择 `${sampleOperCategoryName}` 分类节点
2. 填入术种名称关键字并点「查 询」 2. 填入术种名称关键字并点「查 询」
3. 切到「全部」Tab 3. 切到「全部」Tab
4. 断言结果为三者交集且无未捕获异常","三条件叠加后结果正确,总数一致。","" 4. 断言结果为三者交集且无未捕获异常",三条件叠加后结果正确,总数一致。,
"SURG-TYPE-013","基础设置 · 手术套包设置","术种维护 · 筛选与状态 Tab","重置清空筛选","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);默认列表至少 1 条数据","1. 用关键字过滤后点击「重 置」 SURG-TYPE-012,基础设置 · 手术套包设置,术种维护 · 筛选与状态 Tab,重置清空筛选,中,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);默认列表至少 1 条数据,"1. 用关键字过滤后点击「重 置」
2. 断言筛选输入框被清空、列表恢复默认集合","重置清空筛选并恢复默认列表。","" 2. 断言筛选输入框被清空、列表恢复默认集合",重置清空筛选并恢复默认列表。,
"SURG-TYPE-014","基础设置 · 手术套包设置","术种维护 · 筛选与状态 Tab","无匹配组合空态(mock反例)","低","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe)","1. 在 `#table_search_form_operationName` 输入 mock 不存在关键字 `__NOT_EXIST_OPER__99999` SURG-TYPE-013,基础设置 · 手术套包设置,术种维护 · 筛选与状态 Tab,无匹配组合空态(mock反例),低,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe),"1. 在 `#table_search_form_operationName` 输入 mock 不存在关键字 `__NOT_EXIST_OPER__99999`
2. 点击「查 询」 2. 点击「查 询」
3. 断言「暂无数据」且分页总数为 0","无匹配时空态明确,不白屏;总数为 0。","" 3. 断言「暂无数据」且分页总数为 0",无匹配时空态明确,不白屏;总数为 0。,
"SURG-TYPE-015","基础设置 · 手术套包设置","术种维护 · 列表与编码展示","列表核心列完整","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);默认列表至少 1 条数据","1. 断言表头包含序号、术种名称、病种名称、诊断编码(ICD-10)、诊断名称(ICD-10)、操作编码(ICD-9-CM-3)、操作名称(ICD-9-CM-3)、操作","核心列均可见,操作列含「编 辑」「停用/启用」。","" SURG-TYPE-014,基础设置 · 手术套包设置,术种维护 · 列表与编码展示,列表核心列完整,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);默认列表至少 1 条数据,1. 断言表头包含序号、术种名称、病种名称、诊断编码(ICD-10)、诊断名称(ICD-10)、操作编码(ICD-9-CM-3)、操作名称(ICD-9-CM-3)、操作,核心列均可见,操作列含「编 辑」「停用/启用」。,
"SURG-TYPE-016","基础设置 · 手术套包设置","术种维护 · 列表与编码展示","ICD-10 诊断编码展示完整","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);默认列表至少 1 条数据;至少 1 条含诊断编码的数据","1. 读取含 ICD-10 编码的行 `${sampleIcd10Code}` SURG-TYPE-015,基础设置 · 手术套包设置,术种维护 · 列表与编码展示,ICD-10 诊断编码展示完整,中,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);默认列表至少 1 条数据;至少 1 条含诊断编码的数据,"1. 读取含 ICD-10 编码的行 `${sampleIcd10Code}`
2. 断言编码文本完整(如 A02.000x010)不截断、无乱码","ICD-10 编码完整展示。","" 2. 断言编码文本完整(如 A02.000x010)不截断、无乱码",ICD-10 编码完整展示。,
"SURG-TYPE-017","基础设置 · 手术套包设置","术种维护 · 列表与编码展示","ICD-9-CM-3 操作编码展示完整","低","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);默认列表至少 1 条数据;至少 1 条含操作编码的数据","1. 读取含操作编码的行 `${sampleIcd9Code}` SURG-TYPE-016,基础设置 · 手术套包设置,术种维护 · 列表与编码展示,ICD-9-CM-3 操作编码展示完整,低,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);默认列表至少 1 条数据;至少 1 条含操作编码的数据,"1. 读取含操作编码的行 `${sampleIcd9Code}`
2. 断言操作编码(如 00.0200)与操作名称(如 心脏治疗性超声)对应展示无乱码","ICD-9-CM-3 编码与操作名称对应正确。","" 2. 断言操作编码(如 00.0200)与操作名称(如 心脏治疗性超声)对应展示无乱码",ICD-9-CM-3 编码与操作名称对应正确。,
"SURG-TYPE-018","基础设置 · 手术套包设置","术种维护 · 列表与编码展示","分页与页大小切换","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);默认列表至少 1 条数据;列表总数大于单页行数上限","1. 切换每页条数(如 50 → 100) SURG-TYPE-017,基础设置 · 手术套包设置,术种维护 · 列表与编码展示,分页与页大小切换,中,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);默认列表至少 1 条数据;列表总数大于单页行数上限,"1. 切换每页条数(如 50 → 100)
2. 断言单页行数不超过所选值,分页总数不变","页大小切换生效;总数保持稳定。","" 2. 断言单页行数不超过所选值,分页总数不变",页大小切换生效;总数保持稳定。,
"SURG-TYPE-019","基础设置 · 手术套包设置","术种维护 · 列表与编码展示","首页上一页不可用","低","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe)","1. 处于第 1 页 SURG-TYPE-018,基础设置 · 手术套包设置,术种维护 · 列表与编码展示,首页上一页不可用,低,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe),"1. 处于第 1 页
2. 断言「上一页」置灰或点击无效果","第 1 页无法回到上一页。","" 2. 断言「上一页」置灰或点击无效果",第 1 页无法回到上一页。,
"SURG-TYPE-020","基础设置 · 手术套包设置","术种维护 · 新增术种","打开新增术种入口","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe)","1. 点击「新增术种」 SURG-TYPE-019,基础设置 · 手术套包设置,术种维护 · 新增术种,打开新增术种入口,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe),"1. 点击「新增术种」
2. 断言新增弹窗/页面可见,含术种名称、病种名称、分类与编码相关字段 2. 断言新增弹窗/页面可见,含术种名称、病种名称、分类与编码相关字段
3. 断言含「取 消」「保 存」","新增术种入口字段完整。","" 3. 断言含「取 消」「保 存」",新增术种入口字段完整。,
"SURG-TYPE-021","基础设置 · 手术套包设置","术种维护 · 新增术种","新增取消不落库","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe)","1. 记录当前分页总数 `${sampleTotal}` SURG-TYPE-020,基础设置 · 手术套包设置,术种维护 · 新增术种,新增取消不落库,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe),"1. 记录当前分页总数 `${sampleTotal}`
2. 打开新增,填写名称 `${uniqOperName}` 后点「取 消」 2. 打开新增,填写名称 `${uniqOperName}` 后点「取 消」
3. 断言列表总数不变,且无该名称行","取消后不新增术种。","" 3. 断言列表总数不变,且无该名称行",取消后不新增术种。,
"SURG-TYPE-022","基础设置 · 手术套包设置","术种维护 · 新增术种","术种名称为空拦截(mock反例)","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe)","1. 打开新增术种弹窗,名称留空 SURG-TYPE-021,基础设置 · 手术套包设置,术种维护 · 新增术种,术种名称为空拦截(mock反例),高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe),"1. 打开新增术种弹窗,名称留空
2. 点击「保 存」 2. 点击「保 存」
3. 断言必填提示,弹窗仍在,列表无新行","保存被拦截;不落库。","" 3. 断言必填提示,弹窗仍在,列表无新行",保存被拦截;不落库。,
"SURG-TYPE-023","基础设置 · 手术套包设置","术种维护 · 行内操作(编辑 / 停用)","行内编辑回填","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);默认列表至少 1 条数据","1. 点击首行「编 辑」 SURG-TYPE-022,基础设置 · 手术套包设置,术种维护 · 行内操作(编辑 / 停用),行内编辑回填,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);默认列表至少 1 条数据,"1. 点击首行「编 辑」
2. 断言编辑弹窗可见且回填当前术种数据 2. 断言编辑弹窗可见且回填当前术种数据
3. 点击「取 消」关闭","编辑弹窗回填正确;取消不影响数据。","" 3. 点击「取 消」关闭",编辑弹窗回填正确;取消不影响数据。,
"SURG-TYPE-024","基础设置 · 手术套包设置","术种维护 · 行内操作(编辑 / 停用)","停用状态流转","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);存在启用状态术种(优先选 `${uniqOperName}` 自建数据);允许写术种","1. 记录「停用」Tab 当前计数 `${disabledCount}` SURG-TYPE-023,基础设置 · 手术套包设置,术种维护 · 行内操作(编辑 / 停用),停用状态流转,中,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);存在启用状态术种(优先选 `${uniqOperName}` 自建数据);允许写术种,"1. 记录「停用」Tab 当前计数 `${disabledCount}`
2. 点击目标行「停用」,若有确认框则点「确 定」 2. 点击目标行「停用」,若有确认框则点「确 定」
3. 断言「停用」Tab 计数 +1 3. 断言「停用」Tab 计数 +1
4. 后置:对该术种执行「启用」恢复","术种状态变为停用;「停用」计数 +1;结束恢复原状态。","" 4. 后置:对该术种执行「启用」恢复",术种状态变为停用;「停用」计数 +1;结束恢复原状态。,
"SURG-TYPE-025","基础设置 · 手术套包设置","术种维护 · 行内操作(编辑 / 停用)","停用二次确认防误操作","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);存在启用状态术种","1. 记录「停用」Tab 当前计数 SURG-TYPE-024,基础设置 · 手术套包设置,术种维护 · 行内操作(编辑 / 停用),停用二次确认防误操作,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入术种维护页(/spd/basic/operationSetting/typeMaintenance,无 iframe);存在启用状态术种,"1. 记录「停用」Tab 当前计数
2. 点击首行「停用」 2. 点击首行「停用」
3. 若出现确认框则点「取 消」 3. 若出现确认框则点「取 消」
4. 断言计数未变化","停用有二次确认;取消不改状态。","" 4. 断言计数未变化",停用有二次确认;取消不改状态。,
"用例编号","功能模块","功能测试点","用例标题","优先级","前置条件","测试步骤","预期结果","实际结果" 用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
"SURG-STD-001","基础设置 · 手术套包设置","标准套包维护 · 页面进入","菜单进入标准套包维护页","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe)","1. 按菜单「基础设置 → 手术套包设置 → 标准套包维护」进入 SURG-STD-001,基础设置 · 手术套包设置,标准套包维护 · 页面进入,菜单进入标准套包维护页,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe),"1. 按菜单「基础设置 → 手术套包设置 → 标准套包维护」进入
2. 断言 URL 含 `/spd/basic/operationSetting/standardMaintenance` 2. 断言 URL 含 `/spd/basic/operationSetting/standardMaintenance`
3. 断言左侧分类树、右侧筛选区、构成列表与分页可见","进入标准套包维护页;不误入基础包维护/术种维护;左右分栏渲染完整。","" 3. 断言左侧分类树、右侧筛选区、构成列表与分页可见",进入标准套包维护页;不误入基础包维护/术种维护;左右分栏渲染完整。,
"SURG-STD-002","基础设置 · 手术套包设置","标准套包维护 · 页面进入","同组页签切换后返回","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe)","1. 点击页内 Tab「术种维护」,等待 URL 切换 SURG-STD-002,基础设置 · 手术套包设置,标准套包维护 · 页面进入,同组页签切换后返回,中,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe),"1. 点击页内 Tab「术种维护」,等待 URL 切换
2. 返回点击 Tab「标准套包维护」 2. 返回点击 Tab「标准套包维护」
3. 断言 URL 回到 standardMaintenance,左树与构成列表重新渲染","三页签互切正常;返回后本页数据恢复。","" 3. 断言 URL 回到 standardMaintenance,左树与构成列表重新渲染",三页签互切正常;返回后本页数据恢复。,
"SURG-STD-003","基础设置 · 手术套包设置","标准套包维护 · 页面进入","未登录访问拦截","高","测试环境可访问;使用 test.use({ storageState: { cookies: [], origins: [] } }) 无登录态;直接访问页面进入 URL(/spd/basic/operationSetting/standardMaintenance,无 iframe)","1. 不加载登录态(空 storageState) SURG-STD-003,基础设置 · 手术套包设置,标准套包维护 · 页面进入,未登录访问拦截,高,"测试环境可访问;使用 test.use({ storageState: { cookies: [], origins: [] } }) 无登录态;直接访问页面进入 URL(/spd/basic/operationSetting/standardMaintenance,无 iframe)","1. 不加载登录态(空 storageState)
2. 直接访问 `/spd/basic/operationSetting/standardMaintenance` 2. 直接访问 `/spd/basic/operationSetting/standardMaintenance`
3. 断言跳转登录页或不展示套包列表数据","未登录被拦截,不泄露套包数据。","" 3. 断言跳转登录页或不展示套包列表数据",未登录被拦截,不泄露套包数据。,
"SURG-STD-004","基础设置 · 手术套包设置","标准套包维护 · 左侧术种分类树","术种分类名称搜索过滤","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe)","1. 从左树读取 `${sampleOperCategoryName}` SURG-STD-004,基础设置 · 手术套包设置,标准套包维护 · 左侧术种分类树,分类搜索清空恢复全量,低,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe),"1. 用 `${sampleOperCategoryName}` 过滤并记录过滤后节点数
2. 在分类搜索框填入该关键字(即时过滤或回车,以现网为准)
3. 断言树节点文本均包含该关键字","过滤后树节点名称与关键字匹配;无未捕获异常。",""
"SURG-STD-005","基础设置 · 手术套包设置","标准套包维护 · 左侧术种分类树","选择分类联动构成列表","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);默认列表至少 1 条数据","1. 点击 `${sampleOperCategoryName}` 分类节点
2. 等待右侧构成列表刷新稳定
3. 断言列表加载无报错,分页「共 N 条」与当前分类规模一致","右侧仅展示该分类下标准套包;总数与筛选一致。",""
"SURG-STD-006","基础设置 · 手术套包设置","标准套包维护 · 左侧术种分类树","分类搜索清空恢复全量","低","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe)","1. 用 `${sampleOperCategoryName}` 过滤并记录过滤后节点数
2. 清空分类搜索框 2. 清空分类搜索框
3. 断言节点数回到未过滤的默认集合","清空后分类树恢复默认集合。","" 3. 断言节点数回到未过滤的默认集合",清空后分类树恢复默认集合。,
"SURG-STD-007","基础设置 · 手术套包设置","标准套包维护 · 筛选与构成列表","默认展示标准套包构成","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe)","1. 等待列表稳定 SURG-STD-005,基础设置 · 手术套包设置,标准套包维护 · 筛选与构成列表,产品名称筛选过滤,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);默认列表至少 1 条数据,"1. 从首行读取 `${sampleProductName}`
2. 断言按「包名称」分组出现数据行,或「暂无数据」且分页总数为 0","加载无报错;有数据时「共 N 条」N≥1;无数据时空态明确。",""
"SURG-STD-008","基础设置 · 手术套包设置","标准套包维护 · 筛选与构成列表","产品名称筛选过滤","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);默认列表至少 1 条数据","1. 从首行读取 `${sampleProductName}`
2. 在 `#table_search_form_keyword` 填入该关键字并点击「查 询」 2. 在 `#table_search_form_keyword` 填入该关键字并点击「查 询」
3. 断言结果行产品名称均包含该关键字","过滤结果与关键字匹配;「共 N 条」随之更新。","" 3. 断言结果行产品名称均包含该关键字",过滤结果与关键字匹配;「共 N 条」随之更新。,
"SURG-STD-009","基础设置 · 手术套包设置","标准套包维护 · 筛选与构成列表","规格型号筛选过滤","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);默认列表至少 1 条数据","1. 从首行读取 `${sampleSpecModel}` SURG-STD-006,基础设置 · 手术套包设置,标准套包维护 · 筛选与构成列表,规格型号筛选过滤,中,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);默认列表至少 1 条数据,"1. 从首行读取 `${sampleSpecModel}`
2. 在 `#table_search_form_goodsSpec` 填入该关键字并点击「查 询」 2. 在 `#table_search_form_goodsSpec` 填入该关键字并点击「查 询」
3. 断言结果行规格型号均包含该关键字","按规格型号过滤生效。","" 3. 断言结果行规格型号均包含该关键字",按规格型号过滤生效。,
"SURG-STD-010","基础设置 · 手术套包设置","标准套包维护 · 筛选与构成列表","器械注册人筛选过滤","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);默认列表至少 1 条数据","1. 从首行读取 `${sampleMfrsName}` SURG-STD-007,基础设置 · 手术套包设置,标准套包维护 · 筛选与构成列表,器械注册人筛选过滤,中,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);默认列表至少 1 条数据,"1. 从首行读取 `${sampleMfrsName}`
2. 在 `#table_search_form_goodsMfrsName` 填入该关键字并点击「查 询」 2. 在 `#table_search_form_goodsMfrsName` 填入该关键字并点击「查 询」
3. 断言结果行器械注册人均包含该关键字","按器械注册人过滤生效。","" 3. 断言结果行器械注册人均包含该关键字",按器械注册人过滤生效。,
"SURG-STD-011","基础设置 · 手术套包设置","标准套包维护 · 筛选与构成列表","构成列表核心列完整","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);默认列表至少 1 条数据;存在分组","1. 断言表头/首行包含包名称、包数量/每包含量、产品编号、产品名称、规格型号、器械注册人、单位、产地、耗材类型、操作","核心列均可见,操作列含「编 辑」「移 除」。","" SURG-STD-008,基础设置 · 手术套包设置,标准套包维护 · 筛选与构成列表,包名称展开/收起子项,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);默认列表至少 1 条数据;存在可展开的包分组,"1. 读取首个包分组名称 `${samplePkgGroupName}`
"SURG-STD-012","基础设置 · 手术套包设置","标准套包维护 · 筛选与构成列表","包名称展开/收起子项","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);默认列表至少 1 条数据;存在可展开的包分组","1. 读取首个包分组名称 `${samplePkgGroupName}`
2. 点击展开该分组,断言出现子项行 2. 点击展开该分组,断言出现子项行
3. 再次点击收起,断言子项行隐藏","展开显示子项、收起隐藏子项;分组计数不受影响。","" 3. 再次点击收起,断言子项行隐藏",展开显示子项、收起隐藏子项;分组计数不受影响。,
"SURG-STD-013","基础设置 · 手术套包设置","标准套包维护 · 筛选与构成列表","查询与重置","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);默认列表至少 1 条数据","1. 用关键字过滤后点击「重 置」 SURG-STD-009,基础设置 · 手术套包设置,标准套包维护 · 筛选与构成列表,查询与重置,中,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);默认列表至少 1 条数据,"1. 用关键字过滤后点击「重 置」
2. 断言筛选输入框被清空、列表恢复默认集合","重置清空筛选并恢复默认列表。","" 2. 断言筛选输入框被清空、列表恢复默认集合",重置清空筛选并恢复默认列表。,
"SURG-STD-014","基础设置 · 手术套包设置","标准套包维护 · 筛选与构成列表","分页与页大小切换","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);默认列表至少 1 条数据;列表总数大于单页行数上限","1. 切换每页条数(如 50 → 100) SURG-STD-010,基础设置 · 手术套包设置,标准套包维护 · 筛选与构成列表,无匹配组合空态(mock反例),低,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe),"1. 在 `#table_search_form_keyword` 输入 mock 不存在关键字 `__NOT_EXIST_STD__99999`
2. 断言单页行数不超过所选值,分页总数不变","页大小切换生效;总数保持稳定。",""
"SURG-STD-015","基础设置 · 手术套包设置","标准套包维护 · 筛选与构成列表","无匹配组合空态(mock反例)","低","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe)","1. 在 `#table_search_form_keyword` 输入 mock 不存在关键字 `__NOT_EXIST_STD__99999`
2. 点击「查 询」 2. 点击「查 询」
3. 断言「暂无数据」且分页总数为 0","无匹配时空态明确,不白屏;总数为 0。","" 3. 断言「暂无数据」且分页总数为 0",无匹配时空态明确,不白屏;总数为 0。,
"SURG-STD-016","基础设置 · 手术套包设置","标准套包维护 · 添加基础包弹窗","打开添加基础包弹窗","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe)","1. 点击「添加基础包」 SURG-STD-011,基础设置 · 手术套包设置,标准套包维护 · 添加基础包弹窗,打开添加基础包弹窗,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe),"1. 点击「添加基础包」
2. 断言弹窗可见,含左侧基础包分类树与右侧基础包明细 2. 断言弹窗可见,含左侧基础包分类树与右侧基础包明细
3. 断言含「取 消」「确定(N)」","添加基础包弹窗字段完整;确定按钮带选择计数。","" 3. 断言含「取 消」「确定(N)」",添加基础包弹窗字段完整;确定按钮带选择计数。,
"SURG-STD-017","基础设置 · 手术套包设置","标准套包维护 · 添加基础包弹窗","弹窗内筛选与选择计数联动","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe)","1. 打开添加基础包弹窗,在搜索框输入基础包关键字 SURG-STD-012,基础设置 · 手术套包设置,标准套包维护 · 添加基础包弹窗,弹窗内筛选与选择计数联动,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe),"1. 打开添加基础包弹窗,在搜索框输入基础包关键字
2. 勾选 1 个基础包 2. 勾选 1 个基础包
3. 断言「确定(N)」计数由 0 变为 1","筛选生效;选择数与确定按钮计数联动。","" 3. 断言「确定(N)」计数由 0 变为 1",筛选生效;选择数与确定按钮计数联动。,
"SURG-STD-018","基础设置 · 手术套包设置","标准套包维护 · 添加基础包弹窗","弹窗内构成数量可编辑","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);已勾选至少 1 个基础包","1. 定位明细行「构成数量」步进器,点击「Increase Value」 SURG-STD-013,基础设置 · 手术套包设置,标准套包维护 · 添加基础包弹窗,弹窗内构成数量可编辑,中,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);已勾选至少 1 个基础包,"1. 定位明细行「构成数量」步进器,点击「Increase Value」
2. 断言数量 +1 且合计随之更新","构成数量可编辑;加减生效。","" 2. 断言数量 +1 且合计随之更新",构成数量可编辑;加减生效。,
"SURG-STD-019","基础设置 · 手术套包设置","标准套包维护 · 添加基础包弹窗","添加基础包取消不落库","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe)","1. 记录当前分页总数 `${sampleTotal}` SURG-STD-014,基础设置 · 手术套包设置,标准套包维护 · 添加基础包弹窗,添加基础包取消不落库,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe),"1. 记录当前分页总数 `${sampleTotal}`
2. 打开添加基础包,勾选 1 个基础包后点「取 消」 2. 打开添加基础包,勾选 1 个基础包后点「取 消」
3. 断言构成列表总数不变","取消后不新增构成行。","" 3. 断言构成列表总数不变",取消后不新增构成行。,
"SURG-STD-020","基础设置 · 手术套包设置","标准套包维护 · 添加基础包弹窗","确定按钮零选禁用","低","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);已打开添加基础包弹窗且未选择","1. 断言「确定(0)」置灰或点击无效果","未选择时确定不可用。","" SURG-STD-015,基础设置 · 手术套包设置,标准套包维护 · 添加基础包弹窗,重复添加同一基础包,中,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);标准套包已含某基础包(或先添加一个);允许写套包,"1. 再次打开添加基础包,选择同一基础包并确定
"SURG-STD-021","基础设置 · 手术套包设置","标准套包维护 · 添加基础包弹窗","重复添加同一基础包","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);标准套包已含某基础包(或先添加一个);允许写套包","1. 再次打开添加基础包,选择同一基础包并确定 2. 断言按产品规则拒绝/合并/累加,不产生重复脏行",重复添加不产生重复行(策略以现网为准)。,
2. 断言按产品规则拒绝/合并/累加,不产生重复脏行","重复添加不产生重复行(策略以现网为准)。","" SURG-STD-016,基础设置 · 手术套包设置,标准套包维护 · 添加散件弹窗,打开添加散件弹窗,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe),"1. 点击「添加散件」
"SURG-STD-022","基础设置 · 手术套包设置","标准套包维护 · 添加散件弹窗","打开添加散件弹窗","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe)","1. 点击「添加散件」 2. 断言弹窗可见并展示「产品列表」视图,含产品名称/规格型号/器械注册人/耗材类型筛选与分页",添加散件弹窗产品列表视图完整。,
2. 断言弹窗可见并展示「产品列表」视图,含产品名称/规格型号/器械注册人/耗材类型筛选与分页","添加散件弹窗产品列表视图完整。","" SURG-STD-017,基础设置 · 手术套包设置,标准套包维护 · 添加散件弹窗,产品列表筛选与选择散件,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);已打开添加散件弹窗,"1. 在产品名称筛选框输入 `${sampleProductName}`
"SURG-STD-023","基础设置 · 手术套包设置","标准套包维护 · 添加散件弹窗","产品列表筛选与选择散件","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);已打开添加散件弹窗","1. 在产品名称筛选框输入 `${sampleProductName}`
2. 勾选首个匹配散件 2. 勾选首个匹配散件
3. 断言散件进入应拣明细,计数同步变化","筛选生效;选中散件进入应拣明细。","" 3. 断言散件进入应拣明细,计数同步变化",筛选生效;选中散件进入应拣明细。,
"SURG-STD-024","基础设置 · 手术套包设置","标准套包维护 · 添加散件弹窗","散件规格/应拣明细视图","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);已勾选至少 1 个散件","1. 切换到规格明细/应拣明细视图 SURG-STD-018,基础设置 · 手术套包设置,标准套包维护 · 添加散件弹窗,散件规格/应拣明细视图,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);已勾选至少 1 个散件,"1. 切换到规格明细/应拣明细视图
2. 断言展示耗材品种数、耗材总数,以及应拣数量、产品编号/名称/规格/注册人/单位/耗材类型/是否收费列","应拣明细视图字段完整。","" 2. 断言展示耗材品种数、耗材总数,以及应拣数量、产品编号/名称/规格/注册人/单位/耗材类型/是否收费列",应拣明细视图字段完整。,
"SURG-STD-025","基础设置 · 手术套包设置","标准套包维护 · 添加散件弹窗","明细统计与实际一致","中","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);应拣明细含至少 1 个散件","1. 读取「耗材品种数」`${itemKindCount}` 与「耗材总数」`${itemTotalCount}` SURG-STD-019,基础设置 · 手术套包设置,标准套包维护 · 添加散件弹窗,明细统计与实际一致,中,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);应拣明细含至少 1 个散件,"1. 读取「耗材品种数」`${itemKindCount}` 与「耗材总数」`${itemTotalCount}`
2. 断言品种数 = 明细去重产品数;总数 = 应拣数量合计","统计口径与实际所选一致。","" 2. 断言品种数 = 明细去重产品数;总数 = 应拣数量合计",统计口径与实际所选一致。,
"SURG-STD-026","基础设置 · 手术套包设置","标准套包维护 · 添加散件弹窗","添加散件取消不落库","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe)","1. 记录当前分页总数 `${sampleTotal}` SURG-STD-020,基础设置 · 手术套包设置,标准套包维护 · 添加散件弹窗,添加散件取消不落库,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe),"1. 记录当前分页总数 `${sampleTotal}`
2. 打开添加散件,勾选散件后点「取 消」 2. 打开添加散件,勾选散件后点「取 消」
3. 断言构成列表总数不变","取消后不新增散件行。","" 3. 断言构成列表总数不变",取消后不新增散件行。,
"SURG-STD-027","基础设置 · 手术套包设置","标准套包维护 · 添加散件弹窗","万级散件列表首屏可交互","低","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);添加散件产品列表总量达万级(示例「共 16299 条」)","1. 打开添加散件弹窗 SURG-STD-021,基础设置 · 手术套包设置,标准套包维护 · 添加散件弹窗,万级散件列表首屏可交互,低,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);添加散件产品列表总量达万级(示例「共 16299 条」),"1. 打开添加散件弹窗
2. 断言首屏可交互(筛选/分页可用),不卡死 2. 断言首屏可交互(筛选/分页可用),不卡死
3. 避免全量断言,仅校验首行与总数格式","万级列表首屏可用;无超时白屏。","" 3. 避免全量断言,仅校验首行与总数格式",万级列表首屏可用;无超时白屏。,
"SURG-STD-028","基础设置 · 手术套包设置","标准套包维护 · 行内操作(编辑 / 移除)","行内编辑构成项","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);默认列表至少 1 条数据;先展开目标包","1. 点击子项行「编 辑」 SURG-STD-022,基础设置 · 手术套包设置,标准套包维护 · 行内操作(编辑 / 移除),行内编辑构成项,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);默认列表至少 1 条数据;先展开目标包,"1. 点击子项行「编 辑」
2. 断言编辑弹窗/表单可见并回填当前值 2. 断言编辑弹窗/表单可见并回填当前值
3. 点击「取 消」关闭","编辑回填正确;取消不影响数据。","" 3. 点击「取 消」关闭",编辑回填正确;取消不影响数据。,
"SURG-STD-029","基础设置 · 手术套包设置","标准套包维护 · 行内操作(编辑 / 移除)","移除二次确认防误删整包","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);默认列表至少 1 条数据;先展开目标包","1. 记录当前行数 SURG-STD-023,基础设置 · 手术套包设置,标准套包维护 · 行内操作(编辑 / 移除),移除二次确认防误删整包,高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 → 手术套包设置」权限;已进入标准套包维护页(/spd/basic/operationSetting/standardMaintenance,无 iframe);默认列表至少 1 条数据;先展开目标包,"1. 记录当前行数
2. 点击子项行「移 除」 2. 点击子项行「移 除」
3. 若出现确认框则点「取 消」 3. 若出现确认框则点「取 消」
4. 断言行数未变化","移除有二次确认;取消不删除。","" 4. 断言行数未变化",移除有二次确认;取消不删除。,
"SURG-STD-030","基础设置 · 手术套包设置","标准套包维护 · 筛选与构成列表","多条件组合查询(物料名称等5项)","高","测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 · 手术套包设置」权限;已进入手术套包设置对应功能页;筛选区已展开","1. 进入页面并等待列表加载 SURG-STD-024,基础设置 · 手术套包设置,标准套包维护 · 筛选与构成列表,多条件组合查询(物料名称等5项),高,测试环境可访问;已通过 auth.setup 写入 storageState 登录;具备「基础设置 · 手术套包设置」权限;已进入手术套包设置对应功能页;筛选区已展开,"1. 进入页面并等待列表加载
2. 「物料名称」填写关键字 2. 「物料名称」填写关键字
3. 「规格型号」填写关键字 3. 「规格型号」填写关键字
4. 「器械注册人」填写关键字 4. 「器械注册人」填写关键字
5. 「耗材类型」下拉选择任一可选项 5. 「耗材类型」下拉选择任一可选项
6. 「是否收费」下拉选择任一可选项 6. 「是否收费」下拉选择任一可选项
7. 点击「查询」 7. 点击「查询」
8. 检查列表返回结果","多条件同时生效:物料名称、规格型号、器械注册人、耗材类型、是否收费 均成功录入/选中;点击查询后请求携带全部条件(页面无报错提示),列表按条件刷新并呈现匹配数据或明确空态,条件之间为「且」关系","待执行" 8. 检查列表返回结果",多条件同时生效:物料名称、规格型号、器械注册人、耗材类型、是否收费 均成功录入/选中;点击查询后请求携带全部条件(页面无报错提示),列表按条件刷新并呈现匹配数据或明确空态,条件之间为「且」关系,待执行
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果 用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
FLOW-INS-001,基础设置 · 流程设置,审批流实例 · 页面进入,菜单进入审批流实例页,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 FLOW-INS-001,基础设置 · 流程设置,审批流实例 · 页面进入,未登录访问拦截,高,测试环境可访问;使用独立 context,storageState 为空(不加载 test_1 登录态),"1. 新建独立 BrowserContext,不加载 auth/user.json
2. 按菜单「基础设置 → 流程设置 → 审批流实例」进入,或 `openPath` 打开 `/spd/basic/flowSet/workflow/flowCase`
3. 断言 URL 含 `/spd/basic/flowSet/workflow/flowCase`
4. 断言单据编号、审批状态、发起时间、业务类型、摘要、查询、重置、列表与分页可见",进入审批流实例;不误入审批流程设置。,
FLOW-INS-002,基础设置 · 流程设置,审批流实例 · 页面进入,未登录访问拦截,高,测试环境可访问;使用独立 context,storageState 为空(不加载 test_1 登录态),"1. 新建独立 BrowserContext,不加载 auth/user.json
2. 清除登录态后直接打开 `/spd/basic/flowSet/workflow/flowCase` 2. 清除登录态后直接打开 `/spd/basic/flowSet/workflow/flowCase`
3. 断言跳转登录或不展示审批单据列表",未登录不可见审批实例。, 3. 断言跳转登录或不展示审批单据列表",未登录不可见审批实例。,
FLOW-INS-003,基础设置 · 流程设置,审批流实例 · 筛选与查询,默认日期区间查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 FLOW-INS-002,基础设置 · 流程设置,审批流实例 · 筛选与查询,默认日期区间查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」并等待列表稳定 2. 点击「查 询」并等待列表稳定
3. 断言出现数据行或空态明确,「共 N 条」与结果逻辑一致",默认查询无报错;有数据时 N≥1。, 3. 断言出现数据行或空态明确,「共 N 条」与结果逻辑一致",默认查询无报错;有数据时 N≥1。,
FLOW-INS-004,基础设置 · 流程设置,审批流实例 · 筛选与查询,单据编号精确查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe);默认查询至少 1 条且单据编号非空,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 FLOW-INS-003,基础设置 · 流程设置,审批流实例 · 筛选与查询,单据编号精确查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe);默认查询至少 1 条且单据编号非空,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 从首行读取 `${sampleOrderNo}` 2. 从首行读取 `${sampleOrderNo}`
3. 单据编号填入完整单号,点击「查 询」 3. 单据编号填入完整单号,点击「查 询」
4. 断言至多 1 条,且编号、业务类型与该行一致",精确单号命中当前行。, 4. 断言至多 1 条,且编号、业务类型与该行一致",精确单号命中当前行。,
FLOW-INS-005,基础设置 · 流程设置,审批流实例 · 筛选与查询,按审批状态筛选,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 FLOW-INS-004,基础设置 · 流程设置,审批流实例 · 筛选与查询,按业务类型筛选,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe);默认查询至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 审批状态下拉选择「审批通过」(无该选项则选列表中已出现的状态)
3. 点击「查 询」
4. 断言结果「审批状态」列与所选一致",状态筛选生效。,
FLOW-INS-006,基础设置 · 流程设置,审批流实例 · 筛选与查询,按业务类型筛选,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe);默认查询至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 从首行读取 `${sampleBizType}` 2. 从首行读取 `${sampleBizType}`
3. 业务类型选择该值,点击「查 询」 3. 业务类型选择该值,点击「查 询」
4. 断言结果「业务类型」均为该类型",业务类型筛选生效。, 4. 断言结果「业务类型」均为该类型",业务类型筛选生效。,
FLOW-INS-007,基础设置 · 流程设置,审批流实例 · 筛选与查询,按发起时间区间筛选,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 FLOW-INS-005,基础设置 · 流程设置,审批流实例 · 筛选与查询,按发起时间区间筛选,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录当前默认起止日期 2. 记录当前默认起止日期
3. 点击「查 询」 3. 点击「查 询」
4. 抽样结果行「发起时间」落在起止日内(含边界)",发起时间落在区间内。, 4. 抽样结果行「发起时间」落在起止日内(含边界)",发起时间落在区间内。,
FLOW-INS-008,基础设置 · 流程设置,审批流实例 · 筛选与查询,按摘要关键字筛选,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 FLOW-INS-006,基础设置 · 流程设置,审批流实例 · 筛选与查询,按摘要关键字筛选,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 找到摘要非 `--` 的行读取 `${sampleSummary}` 关键字;若全为 `--` 则填 mock 关键字 2. 找到摘要非 `--` 的行读取 `${sampleSummary}` 关键字;若全为 `--` 则填 mock 关键字
3. 点击「查 询」 3. 点击「查 询」
4. 有关键字命中时摘要包含该关键字;mock 无命中时空态且 `--` 行不被命中",非空摘要可检索;`--` 不被非空关键字命中。, 4. 有关键字命中时摘要包含该关键字;mock 无命中时空态且 `--` 行不被命中",非空摘要可检索;`--` 不被非空关键字命中。,
FLOW-INS-009,基础设置 · 流程设置,审批流实例 · 筛选与查询,状态+类型组合查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe);默认查询至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 FLOW-INS-007,基础设置 · 流程设置,审批流实例 · 筛选与查询,重置恢复默认,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 填写 `${sampleStatus}` 与 `${sampleBizType}` 后点击「查 询」
3. 断言抽样行同时满足全部已填条件",组合条件同时生效。,
FLOW-INS-010,基础设置 · 流程设置,审批流实例 · 筛选与查询,重置恢复默认,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 填写单据编号等条件后点击「重 置」 2. 填写单据编号等条件后点击「重 置」
3. 断言日期回到默认区间,其余条件清空,列表刷新",重置后日期与其它条件恢复默认。, 3. 断言日期回到默认区间,其余条件清空,列表刷新",重置后日期与其它条件恢复默认。,
FLOW-INS-011,基础设置 · 流程设置,审批流实例 · 筛选与查询,无匹配空态(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 FLOW-INS-008,基础设置 · 流程设置,审批流实例 · 筛选与查询,无匹配空态(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 单据编号填入 `__NOT_EXIST_FLOW__99999`,点击「查 询」 2. 单据编号填入 `__NOT_EXIST_FLOW__99999`,点击「查 询」
3. 断言空态且分页总数为 0",无匹配不报错;总数为 0。, 3. 断言空态且分页总数为 0",无匹配不报错;总数为 0。,
FLOW-INS-012,基础设置 · 流程设置,审批流实例 · 列表与分页,列表核心列完整,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 FLOW-INS-009,基础设置 · 流程设置,审批流实例 · 列表与分页,列表核心列完整,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言表头含序号、单据编号、业务类型、发起人、发起部门、发起时间、摘要、审批状态、操作 2. 断言表头含序号、单据编号、业务类型、发起人、发起部门、发起时间、摘要、审批状态、操作
3. 断言行内可见「详情」",核心列完整;详情入口可见。, 3. 断言行内可见「详情」",核心列完整;详情入口可见。,
FLOW-INS-013,基础设置 · 流程设置,审批流实例 · 列表与分页,单据编号前缀与业务类型对应,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe);默认查询有数据,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 FLOW-INS-010,基础设置 · 流程设置,审批流实例 · 列表与分页,单据编号前缀与业务类型对应,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe);默认查询有数据,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 抽样 `PLAN`/`DB`/`GC`/`BUY` 前缀行(有则断言) 2. 抽样 `PLAN`/`DB`/`GC`/`BUY` 前缀行(有则断言)
3. 断言 PLAN→采购计划、DB→二级库调拨、GC→产品信息变更、BUY→请领单(以现网枚举为准,缺前缀 skip 该项)",前缀与类型对应。, 3. 断言 PLAN→采购计划、DB→二级库调拨、GC→产品信息变更、BUY→请领单(以现网枚举为准,缺前缀 skip 该项)",前缀与类型对应。,
FLOW-INS-014,基础设置 · 流程设置,审批流实例 · 列表与分页,分页翻至第 2 页,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe);总条数大于一页,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 FLOW-INS-011,基础设置 · 流程设置,审批流实例 · 列表与分页,分页翻至第 2 页,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe);总条数大于一页,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录第 1 页首行单据编号 2. 记录第 1 页首行单据编号
3. 翻到第 2 页 3. 翻到第 2 页
4. 断言数据更换;筛选条件保持",翻页成功;筛选不丢失。, 4. 断言数据更换;筛选条件保持",翻页成功;筛选不丢失。,
FLOW-INS-015,基础设置 · 流程设置,审批流实例 · 审批详情,打开详情对应当前行,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 FLOW-INS-012,基础设置 · 流程设置,审批流实例 · 审批详情,打开详情对应当前行,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录首行 `${sampleOrderNo}` 2. 记录首行 `${sampleOrderNo}`
3. 点击「详情」 3. 点击「详情」
4. 断言打开该单审批过程,标题或单号含 `${sampleOrderNo}`",详情单号与当前行一致。, 4. 断言打开该单审批过程,标题或单号含 `${sampleOrderNo}`",详情单号与当前行一致。,
FLOW-INS-016,基础设置 · 流程设置,审批流实例 · 审批详情,关闭详情保留列表状态,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 FLOW-INS-013,基础设置 · 流程设置,审批流实例 · 审批详情,关闭详情保留列表状态,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 填写单据编号查询后打开详情 2. 填写单据编号查询后打开详情
3. 点返回/关闭 3. 点返回/关闭
4. 断言筛选条件与列表仍是打开前的查询结果",返回后条件与页码保持。, 4. 断言筛选条件与列表仍是打开前的查询结果",返回后条件与页码保持。,
FLOW-INS-017,基础设置 · 流程设置,审批流实例 · 审批详情,详情只读,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 FLOW-INS-014,基础设置 · 流程设置,审批流实例 · 审批详情,详情只读,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限;已进入审批流实例页(/spd/basic/flowSet/workflow/flowCase,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开首行详情 2. 打开首行详情
3. 断言无保存审批人/改条件的提交按钮,或此类控件不可用 3. 断言无保存审批人/改条件的提交按钮,或此类控件不可用
4. 返回列表",详情只读;改配置须到审批流程设置。, 4. 返回列表",详情只读;改配置须到审批流程设置。,
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果 用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
FLOW-DEF-001,基础设置 · 流程设置,审批流程设置 · 页面进入,菜单进入审批流程设置页,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流程设置」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 FLOW-DEF-001,基础设置 · 流程设置,审批流程设置 · 页面进入,菜单进入审批流程设置页,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流程设置」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 按菜单「基础设置 → 流程设置 → 审批流程设置」进入,或 `openPath` 打开 `/spd/basic/flowSet/workflow/flowSet` 2. 按菜单「基础设置 → 流程设置 → 审批流程设置」进入,或 `openPath` 打开 `/spd/basic/flowSet/workflow/flowSet`
3. 断言 URL 含 `/spd/basic/flowSet/workflow/flowSet` 3. 断言 URL 含 `/spd/basic/flowSet/workflow/flowSet`
4. 断言左侧业务类型、右侧默认审批流与自定义审批流、「保 存」「重 置」可见",进入审批流程设置;不误入审批流实例。, 4. 断言左侧业务类型、右侧默认审批流与自定义审批流、「保 存」「重 置」可见",进入审批流程设置;不误入审批流实例。,
FLOW-DEF-002,基础设置 · 流程设置,审批流程设置 · 页面进入,未登录访问拦截,高,测试环境可访问;使用独立 context,storageState 为空(不加载 test_1 登录态),"1. 新建独立 BrowserContext,不加载 auth/user.json FLOW-DEF-002,基础设置 · 流程设置,审批流程设置 · 页面进入,未登录访问拦截,高,测试环境可访问;使用独立 context,storageState 为空(不加载 test_1 登录态),"1. 新建独立 BrowserContext,不加载 auth/user.json
2. 清除登录态后直接打开 `/spd/basic/flowSet/workflow/flowSet` 2. 清除登录态后直接打开 `/spd/basic/flowSet/workflow/flowSet`
3. 断言跳转登录或不展示审批流配置",未登录不可见审批流配置。, 3. 断言跳转登录或不展示审批流配置",未登录不可见审批流配置。,
FLOW-DEF-003,基础设置 · 流程设置,审批流程设置 · 左侧业务类型,业务类型列表可见,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流程设置」权限;已进入审批流程设置页(/spd/basic/flowSet/workflow/flowSet,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 FLOW-DEF-003,基础设置 · 流程设置,审批流程设置 · 左侧业务类型,业务类型列表可见,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流程设置」权限;已进入审批流程设置页(/spd/basic/flowSet/workflow/flowSet,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言左侧可见采购计划等类型且有当前高亮项 2. 断言左侧可见采购计划等类型且有当前高亮项
3. 读取 `${sampleBizType}`",类型列表可见;当前项高亮。, 3. 读取 `${sampleBizType}`",类型列表可见;当前项高亮。,
FLOW-DEF-004,基础设置 · 流程设置,审批流程设置 · 左侧业务类型,按流程名称过滤类型,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流程设置」权限;已进入审批流程设置页(/spd/basic/flowSet/workflow/flowSet,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 FLOW-DEF-004,基础设置 · 流程设置,审批流程设置 · 左侧业务类型,清空关键字恢复全量,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流程设置」权限;已进入审批流程设置页(/spd/basic/flowSet/workflow/flowSet,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 在「流程名称」输入 `${sampleBizType}` 关键字
3. 断言可见类型名称均匹配关键字",类型过滤与关键字匹配。,
FLOW-DEF-005,基础设置 · 流程设置,审批流程设置 · 左侧业务类型,清空关键字恢复全量,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流程设置」权限;已进入审批流程设置页(/spd/basic/flowSet/workflow/flowSet,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录过滤前类型数量 2. 记录过滤前类型数量
3. 输入关键字后再清空 3. 输入关键字后再清空
4. 断言数量恢复",清空后类型列表恢复全量。, 4. 断言数量恢复",清空后类型列表恢复全量。,
FLOW-DEF-006,基础设置 · 流程设置,审批流程设置 · 左侧业务类型,切换类型刷新右侧配置,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流程设置」权限;已进入审批流程设置页(/spd/basic/flowSet/workflow/flowSet,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 FLOW-DEF-005,基础设置 · 流程设置,审批流程设置 · 默认审批流,默认审批流节点可见,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流程设置」权限;已进入审批流程设置页(/spd/basic/flowSet/workflow/flowSet,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录当前类型默认流节点文案
3. 点选另一业务类型(仅 1 个则 skip)
4. 断言右侧默认流/自定义流已刷新,不残留上一类型节点人员",切换类型后右侧与该类型已保存配置一致。,
FLOW-DEF-007,基础设置 · 流程设置,审批流程设置 · 左侧业务类型,无匹配类型(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流程设置」权限;已进入审批流程设置页(/spd/basic/flowSet/workflow/flowSet,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 流程名称填入 `__NOT_EXIST_FLOW__99999`
3. 断言左侧无匹配或空,右侧不把上一类型配置展示为当前成功配置",无匹配不报错。,
FLOW-DEF-008,基础设置 · 流程设置,审批流程设置 · 默认审批流,默认审批流节点可见,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流程设置」权限;已进入审批流程设置页(/spd/basic/flowSet/workflow/flowSet,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 选中「采购计划」(或当前默认类型) 2. 选中「采购计划」(或当前默认类型)
3. 断言「默认审批流」区域可见节点卡片,含节点/账号/人员三行信息(按卡片容器取文本)",默认流节点结构可见;不点保存。, 3. 断言「默认审批流」区域可见节点卡片,含节点/账号/人员三行信息(按卡片容器取文本)",默认流节点结构可见;不点保存。,
FLOW-DEF-009,基础设置 · 流程设置,审批流程设置 · 自定义审批流,新增流程增加一行后重置,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流程设置」权限;已进入审批流程设置页(/spd/basic/flowSet/workflow/flowSet,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 FLOW-DEF-006,基础设置 · 流程设置,审批流程设置 · 自定义审批流,新增流程增加一行后重置,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流程设置」权限;已进入审批流程设置页(/spd/basic/flowSet/workflow/flowSet,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录当前自定义流行数 2. 记录当前自定义流行数
3. 点击「新增流程」 3. 点击「新增流程」
4. 断言行数 +1,新行含流程名称、条件、审批流程、删除 4. 断言行数 +1,新行含流程名称、条件、审批流程、删除
5. 点击「重 置」,断言行数回到操作前,不点「保 存」",可新增行;重置放弃未保存行。, 5. 点击「重 置」,断言行数回到操作前,不点「保 存」",可新增行;重置放弃未保存行。,
FLOW-DEF-010,基础设置 · 流程设置,审批流程设置 · 自定义审批流,空行保存被拦截后重置,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流程设置」权限;已进入审批流程设置页(/spd/basic/flowSet/workflow/flowSet,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 FLOW-DEF-007,基础设置 · 流程设置,审批流程设置 · 自定义审批流,空行保存被拦截后重置,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流程设置」权限;已进入审批流程设置页(/spd/basic/flowSet/workflow/flowSet,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「新增流程」得到空行 2. 点击「新增流程」得到空行
3. 点击「保 存」 3. 点击「保 存」
4. 断言出现必填拦截提示,配置未按成功态关闭 4. 断言出现必填拦截提示,配置未按成功态关闭
5. 点击「重 置」,放弃该空行",空名称/条件/节点不能落库;拦截后重置恢复。, 5. 点击「重 置」,放弃该空行",空名称/条件/节点不能落库;拦截后重置恢复。,
FLOW-DEF-011,基础设置 · 流程设置,审批流程设置 · 条件配置,打开条件配置后取消,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流程设置」权限;已进入审批流程设置页(/spd/basic/flowSet/workflow/flowSet,无 iframe);当前类型至少 1 条自定义流,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 FLOW-DEF-008,基础设置 · 流程设置,审批流程设置 · 条件配置,打开条件配置后取消,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流程设置」权限;已进入审批流程设置页(/spd/basic/flowSet/workflow/flowSet,无 iframe);当前类型至少 1 条自定义流,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 若无自定义行则 skip 2. 若无自定义行则 skip
3. 点击首条自定义流条件列「编辑」 3. 点击首条自定义流条件列「编辑」
4. 断言打开「条件配置」 4. 断言打开「条件配置」
5. 点「取 消」,断言行内条件文案与打开前一致",条件配置可打开;取消不改行内条件。, 5. 点「取 消」,断言行内条件文案与打开前一致",条件配置可打开;取消不改行内条件。,
FLOW-DEF-012,基础设置 · 流程设置,审批流程设置 · 保存与重置,重置放弃未保存改动,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流程设置」权限;已进入审批流程设置页(/spd/basic/flowSet/workflow/flowSet,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 FLOW-DEF-009,基础设置 · 流程设置,审批流程设置 · 保存与重置,重置放弃未保存改动,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流程设置」权限;已进入审批流程设置页(/spd/basic/flowSet/workflow/flowSet,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「新增流程」增加一行 2. 点击「新增流程」增加一行
3. 点击「重 置」 3. 点击「重 置」
4. 断言自定义流行回到上次保存结果",重置不提交;未保存行消失。, 4. 断言自定义流行回到上次保存结果",重置不提交;未保存行消失。,
FLOW-DEF-013,基础设置 · 流程设置,审批流程设置 · 左侧业务类型,类型与审批流实例业务类型同源,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流程设置」权限;已进入审批流程设置页(/spd/basic/flowSet/workflow/flowSet,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录本页左侧类型名称集合(可见范围)
3. 打开审批流实例,展开「业务类型」下拉
4. 断言选项与本页类型同源(允许按权限裁剪,本页有的关键类型如采购计划应能对应)",两页业务类型同源。,
...@@ -2,70 +2,51 @@ ...@@ -2,70 +2,51 @@
USER-UNI-001,基础设置 · 用户管理,医共体用户管理 · 筛选与查询,默认查询列表有数据或空态明确,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-UNI-001,基础设置 · 用户管理,医共体用户管理 · 筛选与查询,默认查询列表有数据或空态明确,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」并等待列表稳定 2. 点击「查 询」并等待列表稳定
3. 断言出现数据行,或空态且分页总数为 0",查询无报错;有数据时「共 N 条」N≥1。, 3. 断言出现数据行,或空态且分页总数为 0",查询无报错;有数据时「共 N 条」N≥1。,
USER-UNI-002,基础设置 · 用户管理,医共体用户管理 · 筛选与查询,姓名、所属医院、联系方式、科室、角色等条件组合查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe);默认查询至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-UNI-002,基础设置 · 用户管理,医共体用户管理 · 筛选与查询,重置恢复默认医院,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」后读取首行 `${sampleUserName}`、`${sampleLoginName}`、`${sampleHospital}`、`${samplePhone}`、`${sampleDept}`、`${sampleRole}`(科室或联系方式为 `--`/空时换一行)
3. 填写姓名、所属医院,展开高级筛选填写「联系方式」、选择科室与角色后点「筛 选」(无则点「查 询」)
4. 断言结果非空;首行登录账号与采样行一致;可见行姓名/所属医院/联系方式/科室/角色与已填条件一致",组合查询无报错;结果与采样条件一致且同时满足全部已填条件。,
USER-UNI-003,基础设置 · 用户管理,医共体用户管理 · 筛选与查询,重置恢复默认医院,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 更改所属医院或姓名后点击「重 置」 2. 更改所属医院或姓名后点击「重 置」
3. 断言所属医院恢复进入页时的默认值,列表刷新",医院等条件恢复默认。, 3. 断言所属医院恢复进入页时的默认值,列表刷新",医院等条件恢复默认。,
USER-UNI-004,基础设置 · 用户管理,医共体用户管理 · 筛选与查询,展开高级筛选,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-UNI-003,基础设置 · 用户管理,医共体用户管理 · 筛选与查询,无匹配空态(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「高级筛选」
3. 断言可见所属医院、联系方式、科室、角色及「筛 选」",高级筛选含医院维度字段。,
USER-UNI-005,基础设置 · 用户管理,医共体用户管理 · 筛选与查询,无匹配空态(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 姓名框填入 `__NOT_EXIST_USER__99999`,点击「查 询」 2. 姓名框填入 `__NOT_EXIST_USER__99999`,点击「查 询」
3. 断言空态且分页总数为 0",无匹配不报错;总数为 0。, 3. 断言空态且分页总数为 0",无匹配不报错;总数为 0。,
USER-UNI-006,基础设置 · 用户管理,医共体用户管理 · 列表与分页,列表列顺序含所属医院,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-UNI-004,基础设置 · 用户管理,医共体用户管理 · 列表与分页,列表列顺序含所属医院,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言列顺序为登录账号、姓名、联系方式、所属医院、所属科室、医院员工编号、角色、科室任职数、操作 2. 断言列顺序为登录账号、姓名、联系方式、所属医院、所属科室、医院员工编号、角色、科室任职数、操作
3. 勿用用户管理页列断言(用户管理无所属医院且姓名在登录账号前)",列顺序与用户管理页不同;含所属医院。, 3. 勿用用户管理页列断言(用户管理无所属医院且姓名在登录账号前)",列顺序与用户管理页不同;含所属医院。,
USER-UNI-007,基础设置 · 用户管理,医共体用户管理 · 列表与分页,分页翻至第 2 页,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe);总条数大于一页,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-UNI-005,基础设置 · 用户管理,医共体用户管理 · 列表与分页,分页翻至第 2 页,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe);总条数大于一页,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录第 1 页首行登录账号 2. 记录第 1 页首行登录账号
3. 翻到第 2 页 3. 翻到第 2 页
4. 断言数据更换且所属医院筛选仍保持",翻页成功;医院条件不丢失。, 4. 断言数据更换且所属医院筛选仍保持",翻页成功;医院条件不丢失。,
USER-UNI-008,基础设置 · 用户管理,医共体用户管理 · 列表与分页,与用户管理页同一用户字段一致,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe);两页都能查到同一账号,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-UNI-006,基础设置 · 用户管理,医共体用户管理 · 列表与分页,与用户管理页同一用户字段一致,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe);两页都能查到同一账号,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录本页首行 `${sampleLoginName}`、姓名、所属科室、角色 2. 记录本页首行 `${sampleLoginName}`、姓名、所属科室、角色
3. 打开用户管理页,按登录账号查询同一用户 3. 打开用户管理页,按登录账号查询同一用户
4. 断言姓名、角色、所属科室一致;本页仅多「所属医院」",同一登录账号跨页字段一致。, 4. 断言姓名、角色、所属科室一致;本页仅多「所属医院」",同一登录账号跨页字段一致。,
USER-UNI-009,基础设置 · 用户管理,医共体用户管理 · 新增与编辑,打开新增弹窗,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-UNI-007,基础设置 · 用户管理,医共体用户管理 · 新增与编辑,打开新增弹窗,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「新 增」 2. 点击「新 增」
3. 断言弹出用户表单,含账号、姓名、联系方式及取消/确定",新增弹窗可见。, 3. 断言弹出用户表单,含账号、姓名、联系方式及取消/确定",新增弹窗可见。,
USER-UNI-010,基础设置 · 用户管理,医共体用户管理 · 新增与编辑,新增取消不落库,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-UNI-008,基础设置 · 用户管理,医共体用户管理 · 新增与编辑,新增取消不落库,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开新增,账号填 `${uniqLogin}` 后点「取 消」 2. 打开新增,账号填 `${uniqLogin}` 后点「取 消」
3. 当前医院下列表查询该账号,断言不存在",取消后当前医院列表不出现该账号。, 3. 当前医院下列表查询该账号,断言不存在",取消后当前医院列表不出现该账号。,
USER-UNI-011,基础设置 · 用户管理,医共体用户管理 · 新增与编辑,必填为空拦截,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-UNI-009,基础设置 · 用户管理,医共体用户管理 · 新增与编辑,必填为空拦截,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开新增,账号或姓名留空后点「确 定」 2. 打开新增,账号或姓名留空后点「确 定」
3. 断言被拦截,弹窗仍打开,不落库",必填为空不可保存。, 3. 断言被拦截,弹窗仍打开,不落库",必填为空不可保存。,
USER-UNI-012,基础设置 · 用户管理,医共体用户管理 · 新增与编辑,打开编辑并回填,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-UNI-010,基础设置 · 用户管理,医共体用户管理 · 新增与编辑,打开编辑并回填,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击首行「编辑」 2. 点击首行「编辑」
3. 断言弹窗回填与该行登录账号、姓名、所属医院一致 3. 断言弹窗回填与该行登录账号、姓名、所属医院一致
4. 点「取 消」",编辑回填正确;本条不保存。, 4. 点「取 消」",编辑回填正确;本条不保存。,
USER-UNI-013,基础设置 · 用户管理,医共体用户管理 · 筛选与查询,高级筛选按科室过滤,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe);默认查询至少 1 条且所属科室非空/--,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-UNI-011,基础设置 · 用户管理,医共体用户管理 · 列表与分页,切换20条每页页面正常且列表同步,中,"测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe);默认查询总条数大于 10 且切换前可见行数不等于 min(N,20),否则 skip","1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」后读取首行 `${sampleDept}`(空或 `--` 时换一行)
3. 展开高级筛选,选择该科室后点「筛 选」
4. 断言结果非空或空态明确;有数据时可见行「所属科室」与所选科室一致",按科室过滤成功;无报错;结果所属科室与条件一致。,
USER-UNI-014,基础设置 · 用户管理,医共体用户管理 · 列表与分页,切换20条每页页面正常且列表同步,中,"测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe);默认查询总条数大于 10 且切换前可见行数不等于 min(N,20),否则 skip","1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」,记录分页「共 N 条」与当前页可见行数 2. 点击「查 询」,记录分页「共 N 条」与当前页可见行数
3. 分页区切换每页条数为「20 条/页」 3. 分页区切换每页条数为「20 条/页」
4. 断言分页显示 20 条/页;总条数 N 不变;当前页行数为 min(N,20) 且与切换前不同;所属医院筛选、表头可见无报错",切换 20 条/页成功;页面正常;列表可见行数随每页条数同步变化且总数不变。, 4. 断言分页显示 20 条/页;总条数 N 不变;当前页行数为 min(N,20) 且与切换前不同;所属医院筛选、表头可见无报错",切换 20 条/页成功;页面正常;列表可见行数随每页条数同步变化且总数不变。,
USER-UNI-015,基础设置 · 用户管理,医共体用户管理 · 列表与分页,打开列设置面板,低,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe);默认查询至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-UNI-012,基础设置 · 用户管理,医共体用户管理 · 授权,打开授权后取消不生效,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」等待列表稳定
3. 点击表格工具栏列设置(齿轮)图标
4. 断言弹出面板含「列展示」「字段设置」「重置」,关闭面板",列设置面板可打开;关键项可见;关闭后列表正常。,
USER-UNI-016,基础设置 · 用户管理,医共体用户管理 · 列表与分页,列设置取消勾选后列表列恢复,低,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe);默认查询至少 1 条;存在可 toggle 的非核心列,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」后打开列设置,取消勾选一列非核心字段并关闭
3. 断言该列表头隐藏;再次打开列设置勾选恢复并关闭
4. 断言该列表头重新可见",取消勾选后表头隐藏;再勾选后表头恢复;无报错遮罩。,
USER-UNI-017,基础设置 · 用户管理,医共体用户管理 · 授权,打开授权后取消不生效,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击首行「授权」 2. 点击首行「授权」
3. 断言打开用户角色授权层,可见可勾选菜单/功能 3. 断言打开用户角色授权层,可见可勾选菜单/功能
4. 如可勾选则改一处勾选后点取消/关闭 4. 如可勾选则改一处勾选后点取消/关闭
5. 再次打开同一用户授权,断言勾选与操作前一致",授权层可打开;取消后勾选不落库。, 5. 再次打开同一用户授权,断言勾选与操作前一致",授权层可打开;取消后勾选不落库。,
USER-UNI-018,基础设置 · 用户管理,医共体用户管理 · 授权,授权弹框账号与所选行一致,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe);列表至少 1 条且登录账号非空,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-UNI-013,基础设置 · 用户管理,医共体用户管理 · 授权,授权弹框账号与所选行一致,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe);列表至少 1 条且登录账号非空,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」,任选列表一条登录账号非空的行,记录 `${sampleLoginName}`、`${sampleUserName}` 2. 点击「查 询」,任选列表一条登录账号非空的行,记录 `${sampleLoginName}`、`${sampleUserName}`
3. 点击该行「授权」 3. 点击该行「授权」
4. 断言弹出用户角色授权弹框,弹框展示的账号信息与所选行登录账号、姓名一致 4. 断言弹出用户角色授权弹框,弹框展示的账号信息与所选行登录账号、姓名一致
5. 关闭弹框",用户角色授权弹框打开;弹框账号与所选列表行一致。, 5. 关闭弹框",用户角色授权弹框打开;弹框账号与所选列表行一致。,
USER-UNI-019,基础设置 · 用户管理,医共体用户管理 · 授权,授权弹框添加移除角色行,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe);列表至少 1 条;授权弹框含「添加/移除」(非仅权限树模式),否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-UNI-014,基础设置 · 用户管理,医共体用户管理 · 授权,授权弹框添加移除角色行,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe);列表至少 1 条;授权弹框含「添加/移除」(非仅权限树模式),否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」,任选列表一条数据行,点击该行「授权」 2. 点击「查 询」,任选列表一条数据行,点击该行「授权」
3. 断言弹出用户角色授权弹框 3. 断言弹出用户角色授权弹框
4. 记录弹框内可「移除」的角色行数,点击「添加」 4. 记录弹框内可「移除」的角色行数,点击「添加」
......
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果 用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
USER-USR-001,基础设置 · 用户管理,用户管理 · 筛选与查询,姓名+科室+角色+状态组合查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;默认查询至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-USR-001,基础设置 · 用户管理,用户管理 · 筛选与查询,重置恢复默认,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」后读取首行 `${sampleUserName}`、`${sampleLoginName}`、`${sampleDept}`、`${sampleRole}`、`${sampleStatus}`(角色取截断前列名;状态优先读列表「状态」列,否则按行内启用/禁用文案推断)
3. 填写姓名、科室、角色,展开高级筛选选择 `${sampleStatus}` 后点「筛 选」(无「筛 选」则点「查 询」)
4. 断言结果非空;首行登录账号与采样行一致;可见行姓名/科室/角色/状态与已填条件一致",组合查询无报错;查询结果与首行采样条件一致且同时满足全部已填条件。,
USER-USR-002,基础设置 · 用户管理,用户管理 · 筛选与查询,重置恢复默认,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 填写姓名等筛选条件后点击「重 置」 2. 填写姓名等筛选条件后点击「重 置」
3. 断言筛选字段恢复默认,列表按默认规则刷新",条件恢复默认;列表刷新。, 3. 断言筛选字段恢复默认,列表按默认规则刷新",条件恢复默认;列表刷新。,
USER-USR-003,基础设置 · 用户管理,用户管理 · 筛选与查询,展开高级筛选,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-USR-002,基础设置 · 用户管理,用户管理 · 筛选与查询,高级筛选按状态过滤,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「高级筛选」
3. 断言展开后面板可见姓名/科室/角色/状态及「重 置」「筛 选」",高级筛选面板展开;关键字段与筛选按钮可见。,
USER-USR-004,基础设置 · 用户管理,用户管理 · 筛选与查询,高级筛选按状态过滤,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 展开高级筛选,状态下拉选择「启用」或「禁用」 2. 展开高级筛选,状态下拉选择「启用」或「禁用」
3. 点击「筛 选」 3. 点击「筛 选」
4. 断言列表仅保留对应状态用户(无匹配则空态且总数为 0)",按状态过滤成功;无报错。, 4. 断言列表仅保留对应状态用户(无匹配则空态且总数为 0)",按状态过滤成功;无报错。,
USER-USR-005,基础设置 · 用户管理,用户管理 · 筛选与查询,无匹配结果空态(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-USR-003,基础设置 · 用户管理,用户管理 · 筛选与查询,无匹配结果空态(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 姓名框填入 `__NOT_EXIST_USER__99999` 2. 姓名框填入 `__NOT_EXIST_USER__99999`
3. 点击「查 询」 3. 点击「查 询」
4. 断言空态或「暂无数据」,分页总数为 0",无匹配时不报错;空态明确;总数为 0。, 4. 断言空态或「暂无数据」,分页总数为 0",无匹配时不报错;空态明确;总数为 0。,
USER-USR-006,基础设置 · 用户管理,用户管理 · 列表与分页,分页翻至第 2 页,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);默认查询总条数大于一页,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-USR-004,基础设置 · 用户管理,用户管理 · 列表与分页,分页翻至第 2 页,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);默认查询总条数大于一页,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录第 1 页首行登录账号 2. 记录第 1 页首行登录账号
3. 点击页码「2」或「下一页」 3. 点击页码「2」或「下一页」
4. 断言页码高亮为 2,首行账号与第 1 页不同",翻页成功;数据更换。, 4. 断言页码高亮为 2,首行账号与第 1 页不同",翻页成功;数据更换。,
USER-USR-007,基础设置 · 用户管理,用户管理 · 新增用户,打开新增用户弹窗,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-USR-005,基础设置 · 用户管理,用户管理 · 新增用户,打开新增用户弹窗,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「新 增」 2. 点击「新 增」
3. 断言弹出用户表单,可见账号、姓名、联系方式、医院员工编号、启用/禁用、「取 消」「确 定」",新增弹窗可见;关键字段与按钮齐全。, 3. 断言弹出用户表单,可见账号、姓名、联系方式、医院员工编号、启用/禁用、「取 消」「确 定」",新增弹窗可见;关键字段与按钮齐全。,
USER-USR-008,基础设置 · 用户管理,用户管理 · 新增用户,新增取消不落库,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-USR-006,基础设置 · 用户管理,用户管理 · 新增用户,新增取消不落库,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开新增,账号填 `${uniqLogin}`,姓名填任意合法值 2. 打开新增,账号填 `${uniqLogin}`,姓名填任意合法值
3. 点击「取 消」 3. 点击「取 消」
4. 按账号查询,断言无该记录",弹窗关闭;列表不出现 `${uniqLogin}`。, 4. 按账号查询,断言无该记录",弹窗关闭;列表不出现 `${uniqLogin}`。,
USER-USR-009,基础设置 · 用户管理,用户管理 · 新增用户,必填为空拦截,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-USR-007,基础设置 · 用户管理,用户管理 · 新增用户,必填为空拦截,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开新增,账号或姓名留空后点击「确 定」 2. 打开新增,账号或姓名留空后点击「确 定」
3. 断言出现必填提示,弹窗仍打开",确定被拦截;不落库;弹窗不关闭。, 3. 断言出现必填提示,弹窗仍打开",确定被拦截;不落库;弹窗不关闭。,
USER-USR-010,基础设置 · 用户管理,用户管理 · 新增用户,登录账号重复拦截,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);默认查询至少 1 条且登录账号非空,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-USR-008,基础设置 · 用户管理,用户管理 · 新增用户,登录账号重复拦截,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);默认查询至少 1 条且登录账号非空,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开新增,账号填入已存在的 `${sampleLoginName}`,补齐其它必填后点「确 定」 2. 打开新增,账号填入已存在的 `${sampleLoginName}`,补齐其它必填后点「确 定」
3. 断言保存失败并提示,弹窗仍打开 3. 断言保存失败并提示,弹窗仍打开
4. 查询该账号,断言原用户未被覆盖",重复账号被拒绝;不覆盖原用户。, 4. 查询该账号,断言原用户未被覆盖",重复账号被拒绝;不覆盖原用户。,
USER-USR-011,基础设置 · 用户管理,用户管理 · 编辑用户,打开编辑用户弹窗并回填,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-USR-009,基础设置 · 用户管理,用户管理 · 编辑用户,打开编辑用户弹窗并回填,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击首行「编辑」 2. 点击首行「编辑」
3. 断言弹窗标题含「编辑用户」 3. 断言弹窗标题含「编辑用户」
4. 断言账号、姓名与该行 `${sampleLoginName}`、`${sampleUserName}` 一致(允许规范化空白)",编辑弹窗可见;回填与列表行一致。, 4. 断言账号、姓名与该行 `${sampleLoginName}`、`${sampleUserName}` 一致(允许规范化空白)",编辑弹窗可见;回填与列表行一致。,
USER-USR-012,基础设置 · 用户管理,用户管理 · 编辑用户,编辑取消不保存,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-USR-010,基础设置 · 用户管理,用户管理 · 编辑用户,编辑取消不保存,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开首行编辑,记录原姓名 2. 打开首行编辑,记录原姓名
3. 将姓名改为临时值后点「取 消」 3. 将姓名改为临时值后点「取 消」
4. 再次打开编辑,断言姓名仍为原值",取消后列表与回看均为修改前姓名。, 4. 再次打开编辑,断言姓名仍为原值",取消后列表与回看均为修改前姓名。,
USER-USR-013,基础设置 · 用户管理,用户管理 · 编辑用户,编辑时账号只读,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-USR-011,基础设置 · 用户管理,用户管理 · 编辑用户,编辑时账号只读,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开首行编辑 2. 打开首行编辑
3. 断言登录账号不可改(disabled/readonly 或无法输入)",编辑态登录账号只读。, 3. 断言登录账号不可改(disabled/readonly 或无法输入)",编辑态登录账号只读。,
USER-USR-014,基础设置 · 用户管理,用户管理 · 编辑用户,编辑弹窗可见签名图片,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-USR-012,基础设置 · 用户管理,用户管理 · 编辑用户,编辑弹窗可见签名图片,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开首行编辑 2. 打开首行编辑
3. 断言可见「签名图片」区域(有图则展示,无图则上传入口可见) 3. 断言可见「签名图片」区域(有图则展示,无图则上传入口可见)
4. 点「取 消」,不保存",签名图片控件可见;本条不上传、不保存。, 4. 点「取 消」,不保存",签名图片控件可见;本条不上传、不保存。,
USER-USR-015,基础设置 · 用户管理,用户管理 · 授权,打开授权后取消不生效,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-USR-013,基础设置 · 用户管理,用户管理 · 授权,打开授权后取消不生效,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击首行「授权」 2. 点击首行「授权」
3. 断言打开授权层(弹窗或权限树),可见可勾选菜单/功能 3. 断言打开授权层(弹窗或权限树),可见可勾选菜单/功能
4. 如可勾选则改一处勾选后点取消/关闭 4. 如可勾选则改一处勾选后点取消/关闭
5. 再次打开同一用户授权,断言勾选与操作前一致",授权层可打开;取消后勾选不落库。, 5. 再次打开同一用户授权,断言勾选与操作前一致",授权层可打开;取消后勾选不落库。,
USER-USR-016,基础设置 · 用户管理,用户管理 · 列表与分页,切换20条每页页面正常且列表同步,中,"测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);默认查询总条数大于 10 且切换前可见行数不等于 min(N,20),否则 skip","1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-USR-014,基础设置 · 用户管理,用户管理 · 列表与分页,切换20条每页页面正常且列表同步,中,"测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);默认查询总条数大于 10 且切换前可见行数不等于 min(N,20),否则 skip","1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」,记录分页「共 N 条」与当前页可见行数 2. 点击「查 询」,记录分页「共 N 条」与当前页可见行数
3. 分页区切换每页条数为「20 条/页」 3. 分页区切换每页条数为「20 条/页」
4. 断言分页显示 20 条/页;总条数 N 不变;当前页行数为 min(N,20) 且与切换前不同;筛选区、表头可见无报错",切换 20 条/页成功;页面正常;列表可见行数随每页条数同步变化且总数不变。, 4. 断言分页显示 20 条/页;总条数 N 不变;当前页行数为 min(N,20) 且与切换前不同;筛选区、表头可见无报错",切换 20 条/页成功;页面正常;列表可见行数随每页条数同步变化且总数不变。,
USER-USR-017,基础设置 · 用户管理,用户管理 · 列表与分页,打开列设置面板,低,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);默认查询至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-USR-015,基础设置 · 用户管理,用户管理 · 授权,授权弹框账号与所选行一致,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);列表至少 1 条且登录账号非空,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」等待列表稳定
3. 点击表格工具栏列设置(齿轮)图标
4. 断言弹出面板含「列展示」「字段设置」「重置」,关闭面板",列设置面板可打开;关键项可见;关闭后列表正常。,
USER-USR-018,基础设置 · 用户管理,用户管理 · 列表与分页,列设置取消勾选后列表列恢复,低,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);默认查询至少 1 条;存在可 toggle 的非核心列,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」后打开列设置,取消勾选一列非核心字段并关闭
3. 断言该列表头隐藏;再次打开列设置勾选恢复并关闭
4. 断言该列表头重新可见",取消勾选后表头隐藏;再勾选后表头恢复;无报错遮罩。,
USER-USR-019,基础设置 · 用户管理,用户管理 · 授权,授权弹框账号与所选行一致,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);列表至少 1 条且登录账号非空,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」,任选列表一条登录账号非空的行,记录 `${sampleLoginName}`、`${sampleUserName}` 2. 点击「查 询」,任选列表一条登录账号非空的行,记录 `${sampleLoginName}`、`${sampleUserName}`
3. 点击该行「授权」 3. 点击该行「授权」
4. 断言弹出用户角色授权弹框,弹框展示的账号信息与所选行登录账号、姓名一致 4. 断言弹出用户角色授权弹框,弹框展示的账号信息与所选行登录账号、姓名一致
5. 关闭弹框",用户角色授权弹框打开;弹框账号与所选列表行一致。, 5. 关闭弹框",用户角色授权弹框打开;弹框账号与所选列表行一致。,
USER-USR-020,基础设置 · 用户管理,用户管理 · 授权,授权弹框添加移除角色行,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);列表至少 1 条;授权弹框含「添加/移除」(非仅权限树模式),否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-USR-016,基础设置 · 用户管理,用户管理 · 授权,授权弹框添加移除角色行,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);列表至少 1 条;授权弹框含「添加/移除」(非仅权限树模式),否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点击「查 询」,任选列表一条数据行,点击该行「授权」 2. 点击「查 询」,任选列表一条数据行,点击该行「授权」
3. 断言弹出用户角色授权弹框 3. 断言弹出用户角色授权弹框
4. 记录弹框内可「移除」的角色行数,点击「添加」 4. 记录弹框内可「移除」的角色行数,点击「添加」
......
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果 用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
USER-ROL-001,基础设置 · 用户管理,角色管理 · 右侧菜单权限树,权限树按应用与模块展开,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-ROL-001,基础设置 · 用户管理,角色管理 · 右侧菜单权限树,权限树按应用与模块展开,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 选中任一角色 2. 选中任一角色
3. 断言右侧树根为「SPD内网系统PC端」,可见基础设置/运维管理/厂商管理/产品管理等模块 3. 断言右侧树根为「SPD内网系统PC端」,可见基础设置/运维管理/厂商管理/产品管理等模块
4. 展开「基础设置」,断言可见子菜单(如医院资料)",权限树层级可见;节点可展开。, 4. 展开「基础设置」,断言可见子菜单(如医院资料)",权限树层级可见;节点可展开。,
USER-ROL-002,基础设置 · 用户管理,角色管理 · 右侧菜单权限树,权限树模块节点收起正常,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-ROL-002,基础设置 · 用户管理,角色管理 · 右侧菜单权限树,权限树模块节点收起正常,高,测试环境可访问;正例账号 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-003,基础设置 · 用户管理,角色管理 · 左侧角色列表,切换角色右侧权限树同步更新,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe);左栏至少 2 个角色,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-ROL-003,基础设置 · 用户管理,角色管理 · 左侧角色列表,切换角色右侧权限树同步更新,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe);左栏至少 2 个角色,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点选左栏第一个角色,记录右侧权限树勾选快照 2. 点选左栏第一个角色,记录右侧权限树勾选快照
3. 点选左栏第二个不同角色,断言该行选中且右侧权限树仍可见 3. 点选左栏第二个不同角色,断言该行选中且右侧权限树仍可见
4. 再次点选第一个角色,断言右侧权限树勾选快照与步骤 2 一致",切换后右侧与当前角色一致;切回后恢复该角色已保存勾选,无错乱残留。, 4. 再次点选第一个角色,断言右侧权限树勾选快照与步骤 2 一致",切换后右侧与当前角色一致;切回后恢复该角色已保存勾选,无错乱残留。,
USER-ROL-004,基础设置 · 用户管理,角色管理 · 角色增删改,编辑角色弹框回填名称一致,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe);左栏至少 1 个角色,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录 USER-ROL-004,基础设置 · 用户管理,角色管理 · 角色增删改,编辑角色弹框回填名称一致,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe);左栏至少 1 个角色,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点选左栏任一角色,记录其角色名称 2. 点选左栏任一角色,记录其角色名称
3. 点击左栏右下角(或行内)编辑图标 3. 点击左栏右下角(或行内)编辑图标
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 个可编辑角色;环境允许写操作(非 SKIP_BASIC_WRITE=1),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点选左栏任一角色 2. 点选左栏任一角色
3. 点击左栏右下角(或行内)编辑图标,断言弹出编辑角色弹框 3. 点击左栏右下角(或行内)编辑图标,断言弹出编辑角色弹框
4. 不修改角色名称,点击弹框内「保 存」 4. 不修改角色名称,点击弹框内「保 存」
5. 断言页面无报错提示,且出现「编辑成功」类成功提示 5. 断言页面无报错提示,且出现「编辑成功」类成功提示
6. 断言编辑弹框关闭",保存成功;提示编辑成功;角色数据无异常报错。, 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),无需在用例内重复登录 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-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. 断言同字段下方提示:请输入角色名称!
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-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. 断言页面无报错提示,左栏角色数量不增加",取消后弹框关闭;页面无报错;未新增角色。,
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-009,基础设置 · 用户管理,角色管理 · 角色增删改,新增弹框查询配置化复选框可勾选,高,测试环境可访问;正例账号 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-010,基础设置 · 用户管理,角色管理 · 角色增删改,新增角色弹框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-011,基础设置 · 用户管理,角色管理 · 右侧菜单权限树,右侧权限树子菜单可上下滑动,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe);已选中任一角色且右侧权限树高度溢出可滚动(不足则 skip),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 定位左栏角色列表滚动区域
3. 向下滚动列表,断言 scrollTop 增加且列表可继续交互
4. 向上滚回(滚轮或滑至顶部),断言 scrollTop 减小
5. 断言页面无报错遮罩",左栏可正常上下滑动;滚动后页面无异常。,
USER-ROL-012,基础设置 · 用户管理,角色管理 · 右侧菜单权限树,右侧权限树子菜单可上下滑动,中,测试环境可访问;正例账号 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 增加
5. 向上滚回,断言 scrollTop 减小 5. 向上滚回,断言 scrollTop 减小
6. 断言页面无报错遮罩",右侧子菜单列表可正常上下滑动;滚动后页面无异常。, 6. 断言页面无报错遮罩",右侧子菜单列表可正常上下滑动;滚动后页面无异常。,
...@@ -17,8 +17,8 @@ STAT-PSI-005,统计报表·中心库出入库报表,中心库产品进销存· ...@@ -17,8 +17,8 @@ STAT-PSI-005,统计报表·中心库出入库报表,中心库产品进销存·
3. 点击「筛 选」 3. 点击「筛 选」
4. 检查主表",表头可见;无数据行或空状态;无报错;若页面存在底部汇总区则汇总为 0 或「-」,无汇总区则不检查。, 4. 检查主表",表头可见;无数据行或空状态;无报错;若页面存在底部汇总区则汇总为 0 或「-」,无汇总区则不检查。,
STAT-PSI-006,统计报表·中心库出入库报表,中心库产品进销存·主表列表,查询后核心列展示与横向滚动列对齐,高,测试环境可访问;测试账号已登录并进入中心库产品进销存页(iframe centerPages/psi);已默认查询有数据且主表列宽超出视口,"1. 默认条件点击「查 询」 STAT-PSI-006,统计报表·中心库出入库报表,中心库产品进销存·主表列表,查询后核心列展示与横向滚动列对齐,高,测试环境可访问;测试账号已登录并进入中心库产品进销存页(iframe centerPages/psi);已默认查询有数据且主表列宽超出视口,"1. 默认条件点击「查 询」
2. 检查表头含产品编号、产品名称、规格型号、期初数量、净入数量、净出数量等核心列 2. 检查表头含物料编号、产品名称、规格型号、期初数量、净入数量、净出数量等核心列
3. 确认左侧「产品编号」等核心列可见 3. 确认左侧「物料编号」等核心列可见
4. 在表格数据区横向向左拖拉使列表向右滚动 4. 在表格数据区横向向左拖拉使列表向右滚动
5. 检查远侧列(如「净出数量」「调拨出库数量」等)进入可视区 5. 检查远侧列(如「净出数量」「调拨出库数量」等)进入可视区
6. 检查表头无空白列、表头列数与数据列数一致;相邻列无异常空白间隙或重叠;表头与首行数据列左右对齐无错位",核心列完整可见;横向拖拉后列表可正常左右滚动;远侧列可见;表头无空白列;表头列数与数据列数一致;表头相邻列无变形空格/重叠;表头与数据列对齐正常, 6. 检查表头无空白列、表头列数与数据列数一致;相邻列无异常空白间隙或重叠;表头与首行数据列左右对齐无错位",核心列完整可见;横向拖拉后列表可正常左右滚动;远侧列可见;表头无空白列;表头列数与数据列数一致;表头相邻列无变形空格/重叠;表头与数据列对齐正常,
......
...@@ -17,8 +17,8 @@ STAT-LMP-005,统计报表·中心库出入库报表,中心库进销存(后勤)· ...@@ -17,8 +17,8 @@ STAT-LMP-005,统计报表·中心库出入库报表,中心库进销存(后勤)·
3. 点击「查 询」 3. 点击「查 询」
4. 检查主表",表头可见;无数据行或空状态;无报错;若页面存在底部汇总区则汇总为 0 或「-」,无汇总区则不检查。, 4. 检查主表",表头可见;无数据行或空状态;无报错;若页面存在底部汇总区则汇总为 0 或「-」,无汇总区则不检查。,
STAT-LMP-006,统计报表·中心库出入库报表,中心库进销存(后勤)·主表列表,查询后核心列展示与横向滚动列对齐,高,测试环境可访问;测试账号已登录并进入中心库进销存(后勤)页(iframe centerPages/lmmPsi);已默认查询有数据且主表列宽超出视口,"1. 默认条件点击「查 询」 STAT-LMP-006,统计报表·中心库出入库报表,中心库进销存(后勤)·主表列表,查询后核心列展示与横向滚动列对齐,高,测试环境可访问;测试账号已登录并进入中心库进销存(后勤)页(iframe centerPages/lmmPsi);已默认查询有数据且主表列宽超出视口,"1. 默认条件点击「查 询」
2. 检查表头含库区名称、产品编号、产品名称、规格型号、期初数量、采购入库数量、请领出库数量等核心列 2. 检查表头含库区名称、物料编号、产品名称、规格型号、期初数量、采购入库数量、请领出库数量等核心列
3. 确认左侧「库区名称」「产品编号」等核心列可见 3. 确认左侧「库区名称」「物料编号」等核心列可见
4. 在表格数据区横向向左拖拉使列表向右滚动 4. 在表格数据区横向向左拖拉使列表向右滚动
5. 检查远侧列(如「请领出库数量」「请领出库金额」等)进入可视区 5. 检查远侧列(如「请领出库数量」「请领出库金额」等)进入可视区
6. 检查表头无空白列、表头列数与数据列数一致;相邻列无异常空白间隙或重叠;表头与首行数据列左右对齐无错位",核心列完整可见;横向拖拉后列表可正常左右滚动;远侧列可见;表头无空白列;表头列数与数据列数一致;表头相邻列无变形空格/重叠;表头与数据列对齐正常, 6. 检查表头无空白列、表头列数与数据列数一致;相邻列无异常空白间隙或重叠;表头与首行数据列左右对齐无错位",核心列完整可见;横向拖拉后列表可正常左右滚动;远侧列可见;表头无空白列;表头列数与数据列数一致;表头相邻列无变形空格/重叠;表头与数据列对齐正常,
......
...@@ -10,8 +10,8 @@ STAT-PTR-003,统计报表·中心库出入库报表,产品周转率报表·快 ...@@ -10,8 +10,8 @@ STAT-PTR-003,统计报表·中心库出入库报表,产品周转率报表·快
STAT-PTR-004,统计报表·中心库出入库报表,产品周转率报表·快捷筛选查询,无匹配数据空列表(mock反例),中,测试环境可访问;测试账号已登录并进入产品周转率报表页(iframe statistics/pro),"1. 产品名称填 __NOT_EXIST_PRODUCT__99999(mock) STAT-PTR-004,统计报表·中心库出入库报表,产品周转率报表·快捷筛选查询,无匹配数据空列表(mock反例),中,测试环境可访问;测试账号已登录并进入产品周转率报表页(iframe statistics/pro),"1. 产品名称填 __NOT_EXIST_PRODUCT__99999(mock)
2. 查询",空态;无报错;若页面存在底部汇总区则汇总为 0 或「-」,无汇总区则不检查。, 2. 查询",空态;无报错;若页面存在底部汇总区则汇总为 0 或「-」,无汇总区则不检查。,
STAT-PTR-005,统计报表·中心库出入库报表,产品周转率报表·周转指标列表,查询后基础列展示,高,测试环境可访问;测试账号已登录并进入产品周转率报表页(iframe statistics/pro);已默认查询有数据且列宽超出视口,"1. 默认条件点击「查 询」 STAT-PTR-005,统计报表·中心库出入库报表,产品周转率报表·周转指标列表,查询后基础列展示,高,测试环境可访问;测试账号已登录并进入产品周转率报表页(iframe statistics/pro);已默认查询有数据且列宽超出视口,"1. 默认条件点击「查 询」
2. 检查表头含产品编号、产品名称、规格型号、生产厂家、耗材类型、默认供应商 2. 检查表头含物料编号、产品名称、规格型号、生产厂家、耗材类型、默认供应商
3. 确认「产品编号」等核心列可见 3. 确认「物料编号」等核心列可见
4. 横向拖拉滚动列表 4. 横向拖拉滚动列表
5. 检查「库存周转率」等远侧列进入可视区 5. 检查「库存周转率」等远侧列进入可视区
6. 检查表头无空白列、表头列数与数据列数一致;相邻列无异常间隙/重叠;表头与数据列对齐正常",基础列完整;列表可正常横向拖拉滚动;远侧列可见;表头无空白列;表头列数与数据列数一致;表头相邻列无变形空格/重叠;表头与数据列对齐正常, 6. 检查表头无空白列、表头列数与数据列数一致;相邻列无异常间隙/重叠;表头与数据列对齐正常",基础列完整;列表可正常横向拖拉滚动;远侧列可见;表头无空白列;表头列数与数据列数一致;表头相邻列无变形空格/重叠;表头与数据列对齐正常,
......
...@@ -33,8 +33,8 @@ STAT-IES-009,统计报表·中心库出入库报表,入库汇总查询·行展 ...@@ -33,8 +33,8 @@ STAT-IES-009,统计报表·中心库出入库报表,入库汇总查询·行展
STAT-IES-010,统计报表·中心库出入库报表,入库汇总查询·行展开明细子表,收起展开行,高,测试环境可访问;测试账号已登录并进入入库汇总查询页;已展开首行,"1. 展开首行 STAT-IES-010,统计报表·中心库出入库报表,入库汇总查询·行展开明细子表,收起展开行,高,测试环境可访问;测试账号已登录并进入入库汇总查询页;已展开首行,"1. 展开首行
2. 再次点击「关闭行」或展开图标 2. 再次点击「关闭行」或展开图标
3. 检查子表是否隐藏",子表区域不可见;展开图标恢复折叠态, 3. 检查子表是否隐藏",子表区域不可见;展开图标恢复折叠态,
STAT-IES-011,统计报表·中心库出入库报表,入库汇总查询·主表列表与汇总,产品编号列升序降序切换,中,测试环境可访问;测试账号已登录并进入入库汇总查询页;已默认查询且主表至少有 2 条数据,"1. 默认条件点击「查 询」\n STAT-IES-011,统计报表·中心库出入库报表,入库汇总查询·主表列表与汇总,物料编号列升序降序切换,中,测试环境可访问;测试账号已登录并进入入库汇总查询页;已默认查询且主表至少有 2 条数据,"1. 默认条件点击「查 询」\n
2. 横向滚动使「产品编号」列表头可见\n 2. 横向滚动使「物料编号」列表头可见\n
3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)\n 3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)\n
4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示, 4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示,
STAT-IES-012,统计报表·中心库出入库报表,入库汇总查询·主表列表与汇总,产品名称列升序降序切换,中,测试环境可访问;测试账号已登录并进入入库汇总查询页;已默认查询且主表至少有 2 条数据,"1. 默认条件点击「查 询」\n STAT-IES-012,统计报表·中心库出入库报表,入库汇总查询·主表列表与汇总,产品名称列升序降序切换,中,测试环境可访问;测试账号已登录并进入入库汇总查询页;已默认查询且主表至少有 2 条数据,"1. 默认条件点击「查 询」\n
...@@ -100,7 +100,7 @@ STAT-IES-027,统计报表·中心库出入库报表,入库汇总查询·行展 ...@@ -100,7 +100,7 @@ STAT-IES-027,统计报表·中心库出入库报表,入库汇总查询·行展
3. 点击「查看」 3. 点击「查看」
4. 检查无报错且详情含单号",详情页/弹窗打开成功;无 error 提示;详情区域包含 ${sampleInboundOrderNo}, 4. 检查无报错且详情含单号",详情页/弹窗打开成功;无 error 提示;详情区域包含 ${sampleInboundOrderNo},
STAT-IES-028,统计报表·中心库出入库报表,入库汇总查询·主表列表与汇总,列表横向拖拉滚动与列对齐正常,中,测试环境可访问;测试账号已登录并进入入库汇总查询页;已默认查询有数据且主表列宽超出视口,"1. 默认条件点击「查 询」 STAT-IES-028,统计报表·中心库出入库报表,入库汇总查询·主表列表与汇总,列表横向拖拉滚动与列对齐正常,中,测试环境可访问;测试账号已登录并进入入库汇总查询页;已默认查询有数据且主表列宽超出视口,"1. 默认条件点击「查 询」
2. 确认「产品编号」等核心列可见 2. 确认「物料编号」等核心列可见
3. 在表格数据区横向向左拖拉使列表向右滚动 3. 在表格数据区横向向左拖拉使列表向右滚动
4. 检查「型号」等远侧列进入可视区 4. 检查「型号」等远侧列进入可视区
5. 检查表头无空白列、表头列数与数据列数一致;相邻列无异常间隙/重叠;表头与数据列对齐正常",横向拖拉后列表可正常滚动;远侧列可见;表头无空白列;表头列数与数据列数一致;表头相邻列无变形空格/重叠;表头与数据列对齐正常, 5. 检查表头无空白列、表头列数与数据列数一致;相邻列无异常间隙/重叠;表头与数据列对齐正常",横向拖拉后列表可正常滚动;远侧列可见;表头无空白列;表头列数与数据列数一致;表头相邻列无变形空格/重叠;表头与数据列对齐正常,
......
...@@ -22,78 +22,74 @@ STAT-NES-008,统计报表·中心库出入库报表,净入库汇总查询·主 ...@@ -22,78 +22,74 @@ STAT-NES-008,统计报表·中心库出入库报表,净入库汇总查询·主
4. 在表格数据区横向向左拖拉使列表向右滚动 4. 在表格数据区横向向左拖拉使列表向右滚动
5. 检查右侧列(如「金额」)进入可视区 5. 检查右侧列(如「金额」)进入可视区
6. 检查表头无空白列、表头列数与数据列数一致;相邻列无异常空白间隙或重叠;表头与首行数据列左右对齐无错位",核心列完整可见;横向拖拉后列表可正常左右滚动;远侧列可见;表头无空白列;表头列数与数据列数一致;表头相邻列无变形空格/重叠;表头与数据列对齐正常, 6. 检查表头无空白列、表头列数与数据列数一致;相邻列无异常空白间隙或重叠;表头与首行数据列左右对齐无错位",核心列完整可见;横向拖拉后列表可正常左右滚动;远侧列可见;表头无空白列;表头列数与数据列数一致;表头相邻列无变形空格/重叠;表头与数据列对齐正常,
STAT-NES-009,统计报表·中心库出入库报表,净入库汇总查询·主表列表,院区列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」 STAT-NES-009,统计报表·中心库出入库报表,净入库汇总查询·主表列表,产品编码列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」
2. 横向滚动使「院区」列表头可见
3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)
4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示,
STAT-NES-010,统计报表·中心库出入库报表,净入库汇总查询·主表列表,产品编码列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」
2. 横向滚动使「产品编码」列表头可见 2. 横向滚动使「产品编码」列表头可见
3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending) 3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)
4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示, 4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示,
STAT-NES-011,统计报表·中心库出入库报表,净入库汇总查询·主表列表,产品名称列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」 STAT-NES-010,统计报表·中心库出入库报表,净入库汇总查询·主表列表,产品名称列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」
2. 横向滚动使「产品名称」列表头可见 2. 横向滚动使「产品名称」列表头可见
3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending) 3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)
4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示, 4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示,
STAT-NES-012,统计报表·中心库出入库报表,净入库汇总查询·主表列表,单位列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」 STAT-NES-011,统计报表·中心库出入库报表,净入库汇总查询·主表列表,单位列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」
2. 横向滚动使「单位」列表头可见 2. 横向滚动使「单位」列表头可见
3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending) 3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)
4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示, 4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示,
STAT-NES-013,统计报表·中心库出入库报表,净入库汇总查询·主表列表,耗材类型列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」 STAT-NES-012,统计报表·中心库出入库报表,净入库汇总查询·主表列表,耗材类型列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」
2. 横向滚动使「耗材类型」列表头可见 2. 横向滚动使「耗材类型」列表头可见
3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending) 3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)
4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示, 4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示,
STAT-NES-014,统计报表·中心库出入库报表,净入库汇总查询·主表列表,是否集采列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」 STAT-NES-013,统计报表·中心库出入库报表,净入库汇总查询·主表列表,是否集采列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」
2. 横向滚动使「是否集采」列表头可见 2. 横向滚动使「是否集采」列表头可见
3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending) 3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)
4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示, 4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示,
STAT-NES-015,统计报表·中心库出入库报表,净入库汇总查询·主表列表,是否计费列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」 STAT-NES-014,统计报表·中心库出入库报表,净入库汇总查询·主表列表,是否计费列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」
2. 横向滚动使「是否计费」列表头可见 2. 横向滚动使「是否计费」列表头可见
3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending) 3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)
4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示, 4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示,
STAT-NES-016,统计报表·中心库出入库报表,净入库汇总查询·主表列表,厂家列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」 STAT-NES-015,统计报表·中心库出入库报表,净入库汇总查询·主表列表,厂家列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」
2. 横向滚动使「厂家」列表头可见 2. 横向滚动使「厂家」列表头可见
3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending) 3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)
4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示, 4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示,
STAT-NES-017,统计报表·中心库出入库报表,净入库汇总查询·主表列表,进院供应商列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」 STAT-NES-016,统计报表·中心库出入库报表,净入库汇总查询·主表列表,进院供应商列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」
2. 横向滚动使「进院供应商」列表头可见 2. 横向滚动使「进院供应商」列表头可见
3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending) 3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)
4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示, 4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示,
STAT-NES-018,统计报表·中心库出入库报表,净入库汇总查询·主表列表,供应商编码列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」 STAT-NES-017,统计报表·中心库出入库报表,净入库汇总查询·主表列表,供应商编码列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」
2. 横向滚动使「供应商编码」列表头可见 2. 横向滚动使「供应商编码」列表头可见
3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending) 3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)
4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示, 4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示,
STAT-NES-019,统计报表·中心库出入库报表,净入库汇总查询·主表列表,医保单件名称列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」 STAT-NES-018,统计报表·中心库出入库报表,净入库汇总查询·主表列表,医保单件名称列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」
2. 横向滚动使「医保单件名称」列表头可见 2. 横向滚动使「医保单件名称」列表头可见
3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending) 3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)
4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示, 4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示,
STAT-NES-020,统计报表·中心库出入库报表,净入库汇总查询·主表列表,注册证号列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」 STAT-NES-019,统计报表·中心库出入库报表,净入库汇总查询·主表列表,注册证号列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」
2. 横向滚动使「注册证号」列表头可见 2. 横向滚动使「注册证号」列表头可见
3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending) 3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)
4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示, 4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示,
STAT-NES-021,统计报表·中心库出入库报表,净入库汇总查询·主表列表,数量列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」 STAT-NES-020,统计报表·中心库出入库报表,净入库汇总查询·主表列表,数量列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」
2. 横向滚动使「数量」列表头可见 2. 横向滚动使「数量」列表头可见
3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending) 3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)
4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示, 4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示,
STAT-NES-022,统计报表·中心库出入库报表,净入库汇总查询·主表列表,金额列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」 STAT-NES-021,统计报表·中心库出入库报表,净入库汇总查询·主表列表,金额列升序降序切换,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;至少 2 条数据,"1. 默认条件点击「查 询」
2. 横向滚动使「金额」列表头可见 2. 横向滚动使「金额」列表头可见
3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending) 3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)
4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示, 4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示,
STAT-NES-023,统计报表·中心库出入库报表,净入库汇总查询·分页,有数据时展示分页总条数,高,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;已默认查询有数据,"1. 默认查询 STAT-NES-022,统计报表·中心库出入库报表,净入库汇总查询·分页,有数据时展示分页总条数,高,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;已默认查询有数据,"1. 默认查询
2. 查看分页",显示「共 N 条」, 2. 查看分页",显示「共 N 条」,
STAT-NES-024,统计报表·中心库出入库报表,净入库汇总查询·分页,切换至第2页,高,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;超过 1 页,1. 点击页码 2,第 2 页正确;列表无数据或不足2页时 skip。, STAT-NES-023,统计报表·中心库出入库报表,净入库汇总查询·分页,切换至第2页,高,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;超过 1 页,1. 点击页码 2,第 2 页正确;列表无数据或不足2页时 skip。,
STAT-NES-025,统计报表·中心库出入库报表,净入库汇总查询·分页,切换每页条数,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;有多页,1. 切换每页条数,行数与档位一致;列表无数据时 skip。, STAT-NES-024,统计报表·中心库出入库报表,净入库汇总查询·分页,切换每页条数,中,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;有多页,1. 切换每页条数,行数与档位一致;列表无数据时 skip。,
STAT-NES-026,统计报表·中心库出入库报表,净入库汇总查询·导出,按当前条件导出文件,高,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;含维度查询有数据,"1. 默认条件点击「查 询」 STAT-NES-025,统计报表·中心库出入库报表,净入库汇总查询·导出,按当前条件导出文件,高,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;含维度查询有数据,"1. 默认条件点击「查 询」
2. 点击「导 出」 2. 点击「导 出」
3. 检查无报错信息,页面、接口、系统正常,无系统异常",点击导出按钮后,无报错信息,页面、接口、系统正常,无系统异常。, 3. 检查无报错信息,页面、接口、系统正常,无系统异常",点击导出按钮后,无报错信息,页面、接口、系统正常,无系统异常。,
STAT-NES-027,统计报表·中心库出入库报表,净入库汇总查询·高级筛选抽屉,快捷区条件自动带入高级筛选,高,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;已默认查询至少有 1 条数据,"1. 默认查询并从列表首行读取样本(物资编码/物资名称/单据日期) STAT-NES-026,统计报表·中心库出入库报表,净入库汇总查询·高级筛选抽屉,快捷区条件自动带入高级筛选,高,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;已默认查询至少有 1 条数据,"1. 默认查询并从列表首行读取样本(物资编码/物资名称/单据日期)
2. 将样本对应条件填入快捷区 2. 将样本对应条件填入快捷区
3. 点击「查 询」 3. 点击「查 询」
4. 打开高级筛选抽屉(不手动修改抽屉字段) 4. 打开高级筛选抽屉(不手动修改抽屉字段)
5. 检查抽屉内同名字段值与快捷区一致",抽屉「物资编码」「物资名称」「单据日期」与快捷区已填值一致;无需重复录入, 5. 检查抽屉内同名字段值与快捷区一致",抽屉「物资编码」「物资名称」「单据日期」与快捷区已填值一致;无需重复录入,
STAT-NES-028,统计报表·中心库出入库报表,净入库汇总查询·主表列表,打开列设置面板,低,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;已默认查询有数据,"1. 默认查询 STAT-NES-027,统计报表·中心库出入库报表,净入库汇总查询·主表列表,打开列设置面板,低,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;已默认查询有数据,"1. 默认查询
2. 点击表格右上角列设置齿轮 2. 点击表格右上角列设置齿轮
3. 检查面板",列设置面板可见;含「列展示」「字段设置」;字段列表含可勾选列, 3. 检查面板",列设置面板可见;含「列展示」「字段设置」;字段列表含可勾选列,
STAT-NES-029,统计报表·中心库出入库报表,净入库汇总查询·主表列表,列设置取消勾选后再勾选列表列恢复,低,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;已默认查询有数据;已确认目标非核心列默认显示,"1. 打开列设置面板 STAT-NES-028,统计报表·中心库出入库报表,净入库汇总查询·主表列表,列设置取消勾选后再勾选列表列恢复,低,测试环境可访问;测试账号已登录并进入净入库汇总查询(多维度)页(iframe centerPages/netEntrySummary);勿误点入库汇总查询;已默认查询有数据;已确认目标非核心列默认显示,"1. 打开列设置面板
2. 取消勾选「27位医保编码」(若无则选「规格型号」「生产厂家」等非核心列) 2. 取消勾选「27位医保编码」(若无则选「规格型号」「生产厂家」等非核心列)
3. 关闭面板 3. 关闭面板
4. 检查表头不再显示该列 4. 检查表头不再显示该列
......
...@@ -25,8 +25,8 @@ STAT-IOD-006,统计报表·中心库出入库报表,出入库明细查询·列 ...@@ -25,8 +25,8 @@ STAT-IOD-006,统计报表·中心库出入库报表,出入库明细查询·列
STAT-IOD-007,统计报表·中心库出入库报表,出入库明细查询·列表与汇总,无匹配数据空列表(mock反例),中,测试环境可访问;test_1 已登录并进入报表页,"1. 产品名称填 __NOT_EXIST_PRODUCT__99999(唯一写死的反例 mock 值)\n STAT-IOD-007,统计报表·中心库出入库报表,出入库明细查询·列表与汇总,无匹配数据空列表(mock反例),中,测试环境可访问;test_1 已登录并进入报表页,"1. 产品名称填 __NOT_EXIST_PRODUCT__99999(唯一写死的反例 mock 值)\n
2. 点击「查 询」\n 2. 点击「查 询」\n
3. 检查表格;若存在底部汇总区则一并检查,无则跳过",表头可见;无数据行或空状态;若页面存在底部汇总区则汇总为 0 或「-」,无汇总区则不检查。, 3. 检查表格;若存在底部汇总区则一并检查,无则跳过",表头可见;无数据行或空状态;若页面存在底部汇总区则汇总为 0 或「-」,无汇总区则不检查。,
STAT-IOD-008,统计报表·中心库出入库报表,出入库明细查询·列表与汇总,产品编号列升序降序切换,中,测试环境可访问;test_1 已登录并进入报表页;已默认查询且列表至少有 2 条数据,"1. 默认条件点击「查 询」\n STAT-IOD-008,统计报表·中心库出入库报表,出入库明细查询·列表与汇总,物料编号列升序降序切换,中,测试环境可访问;test_1 已登录并进入报表页;已默认查询且列表至少有 2 条数据,"1. 默认条件点击「查 询」\n
2. 横向滚动使「产品编号」列表头可见\n 2. 横向滚动使「物料编号」列表头可见\n
3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)\n 3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)\n
4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示, 4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示,
STAT-IOD-009,统计报表·中心库出入库报表,出入库明细查询·列表与汇总,产品名称列升序降序切换,中,测试环境可访问;test_1 已登录并进入报表页;已默认查询且列表至少有 2 条数据,"1. 默认条件点击「查 询」\n STAT-IOD-009,统计报表·中心库出入库报表,出入库明细查询·列表与汇总,产品名称列升序降序切换,中,测试环境可访问;test_1 已登录并进入报表页;已默认查询且列表至少有 2 条数据,"1. 默认条件点击「查 询」\n
...@@ -170,7 +170,7 @@ STAT-IOD-043,统计报表·中心库出入库报表,出入库明细查询·导 ...@@ -170,7 +170,7 @@ STAT-IOD-043,统计报表·中心库出入库报表,出入库明细查询·导
2. 点击「导 出」 2. 点击「导 出」
3. 检查无报错信息,页面、接口、系统正常,无系统异常",点击导出按钮后,无报错信息,页面、接口、系统正常,无系统异常。, 3. 检查无报错信息,页面、接口、系统正常,无系统异常",点击导出按钮后,无报错信息,页面、接口、系统正常,无系统异常。,
STAT-IOD-044,统计报表·中心库出入库报表,出入库明细查询·列表与汇总,列表横向拖拉滚动与列对齐正常,中,测试环境可访问;test_1 已登录并进入报表页;已默认查询有数据且列表列宽超出视口,"1. 默认条件点击「查 询」\n STAT-IOD-044,统计报表·中心库出入库报表,出入库明细查询·列表与汇总,列表横向拖拉滚动与列对齐正常,中,测试环境可访问;test_1 已登录并进入报表页;已默认查询有数据且列表列宽超出视口,"1. 默认条件点击「查 询」\n
2. 确认左侧「产品编号」等核心列可见\n 2. 确认左侧「物料编号」等核心列可见\n
3. 在表格数据区按住鼠标左键横向向左拖拉(或滚轮/滚动条)使列表向右滚动\n 3. 在表格数据区按住鼠标左键横向向左拖拉(或滚轮/滚动条)使列表向右滚动\n
4. 检查右侧列(如「医保编码」)进入可视区\n 4. 检查右侧列(如「医保编码」)进入可视区\n
5. 检查表头无空白列、表头列数与数据列数一致;相邻表头列之间无异常空白间隙或重叠\n 5. 检查表头无空白列、表头列数与数据列数一致;相邻表头列之间无异常空白间隙或重叠\n
......
...@@ -33,8 +33,8 @@ STAT-OOS-009,统计报表·中心库出入库报表,出库汇总查询·行展 ...@@ -33,8 +33,8 @@ STAT-OOS-009,统计报表·中心库出入库报表,出库汇总查询·行展
STAT-OOS-010,统计报表·中心库出入库报表,出库汇总查询·行展开明细子表,收起展开行,高,测试环境可访问;测试账号已登录并进入出库汇总查询页;已展开首行,"1. 展开首行 STAT-OOS-010,统计报表·中心库出入库报表,出库汇总查询·行展开明细子表,收起展开行,高,测试环境可访问;测试账号已登录并进入出库汇总查询页;已展开首行,"1. 展开首行
2. 再次点击「关闭行」或展开图标 2. 再次点击「关闭行」或展开图标
3. 检查子表是否隐藏",子表区域不可见;展开图标恢复折叠态, 3. 检查子表是否隐藏",子表区域不可见;展开图标恢复折叠态,
STAT-OOS-011,统计报表·中心库出入库报表,出库汇总查询·主表列表与汇总,产品编号列升序降序切换,中,测试环境可访问;测试账号已登录并进入出库汇总查询页;已默认查询且主表至少有 2 条数据,"1. 默认条件点击「查 询」\n STAT-OOS-011,统计报表·中心库出入库报表,出库汇总查询·主表列表与汇总,物料编号列升序降序切换,中,测试环境可访问;测试账号已登录并进入出库汇总查询页;已默认查询且主表至少有 2 条数据,"1. 默认条件点击「查 询」\n
2. 横向滚动使「产品编号」列表头可见\n 2. 横向滚动使「物料编号」列表头可见\n
3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)\n 3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)\n
4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示, 4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示,
STAT-OOS-012,统计报表·中心库出入库报表,出库汇总查询·主表列表与汇总,产品名称列升序降序切换,中,测试环境可访问;测试账号已登录并进入出库汇总查询页;已默认查询且主表至少有 2 条数据,"1. 默认条件点击「查 询」\n STAT-OOS-012,统计报表·中心库出入库报表,出库汇总查询·主表列表与汇总,产品名称列升序降序切换,中,测试环境可访问;测试账号已登录并进入出库汇总查询页;已默认查询且主表至少有 2 条数据,"1. 默认条件点击「查 询」\n
...@@ -106,7 +106,7 @@ STAT-OOS-028,统计报表·中心库出入库报表,出库汇总查询·批量 ...@@ -106,7 +106,7 @@ STAT-OOS-028,统计报表·中心库出入库报表,出库汇总查询·批量
5. 点击「批量打印」 5. 点击「批量打印」
6. 观察系统响应",批量打印按钮计数变为 1;打印流程可启动(打印对话框/预览/toast);无 error 提示;无未捕获异常, 6. 观察系统响应",批量打印按钮计数变为 1;打印流程可启动(打印对话框/预览/toast);无 error 提示;无未捕获异常,
STAT-OOS-029,统计报表·中心库出入库报表,出库汇总查询·主表列表与汇总,列表横向拖拉滚动与列对齐正常,中,测试环境可访问;测试账号已登录并进入出库汇总查询页;已默认查询有数据且主表列宽超出视口,"1. 默认条件点击「查 询」 STAT-OOS-029,统计报表·中心库出入库报表,出库汇总查询·主表列表与汇总,列表横向拖拉滚动与列对齐正常,中,测试环境可访问;测试账号已登录并进入出库汇总查询页;已默认查询有数据且主表列宽超出视口,"1. 默认条件点击「查 询」
2. 确认「产品编号」等核心列可见 2. 确认「物料编号」等核心列可见
3. 在表格数据区横向向左拖拉使列表向右滚动 3. 在表格数据区横向向左拖拉使列表向右滚动
4. 检查「医保编码」等远侧列进入可视区 4. 检查「医保编码」等远侧列进入可视区
5. 检查表头无空白列、表头列数与数据列数一致;相邻列无异常间隙/重叠;表头与数据列对齐正常",横向拖拉后列表可正常滚动;远侧列可见;表头无空白列;表头列数与数据列数一致;表头相邻列无变形空格/重叠;表头与数据列对齐正常, 5. 检查表头无空白列、表头列数与数据列数一致;相邻列无异常间隙/重叠;表头与数据列对齐正常",横向拖拉后列表可正常滚动;远侧列可见;表头无空白列;表头列数与数据列数一致;表头相邻列无变形空格/重叠;表头与数据列对齐正常,
......
...@@ -42,8 +42,8 @@ STAT-CHC-011,统计报表·发放消耗报表,高值消耗追溯·数据维度 ...@@ -42,8 +42,8 @@ STAT-CHC-011,统计报表·发放消耗报表,高值消耗追溯·数据维度
STAT-CHC-012,统计报表·发放消耗报表,高值消耗追溯·数据维度切换,维度切换后重置,中,测试环境可访问;测试账号已登录并进入高值消耗追溯页(iframe consume/highConsume);已切换至「退回数据」并查询,"1. 切换至「退回数据」并查询 STAT-CHC-012,统计报表·发放消耗报表,高值消耗追溯·数据维度切换,维度切换后重置,中,测试环境可访问;测试账号已登录并进入高值消耗追溯页(iframe consume/highConsume);已切换至「退回数据」并查询,"1. 切换至「退回数据」并查询
2. 点击「重 置」 2. 点击「重 置」
3. 检查维度与筛选恢复默认",数据维度与快捷筛选恢复默认。, 3. 检查维度与筛选恢复默认",数据维度与快捷筛选恢复默认。,
STAT-CHC-013,统计报表·发放消耗报表,高值消耗追溯·主表列表与汇总,产品编号列升序降序切换,中,测试环境可访问;测试账号已登录并进入高值消耗追溯页(iframe consume/highConsume);已默认查询且主表至少有 2 条数据,"1. 默认条件查询 STAT-CHC-013,统计报表·发放消耗报表,高值消耗追溯·主表列表与汇总,物料编号列升序降序切换,中,测试环境可访问;测试账号已登录并进入高值消耗追溯页(iframe consume/highConsume);已默认查询且主表至少有 2 条数据,"1. 默认条件查询
2. 必要时横向滚动使「产品编号」列表头可见 2. 必要时横向滚动使「物料编号」列表头可见
3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器 3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器
4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示。, 4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示。,
STAT-CHC-014,统计报表·发放消耗报表,高值消耗追溯·主表列表与汇总,产品名称列升序降序切换,中,测试环境可访问;测试账号已登录并进入高值消耗追溯页(iframe consume/highConsume);已默认查询且主表至少有 2 条数据,"1. 默认条件查询 STAT-CHC-014,统计报表·发放消耗报表,高值消耗追溯·主表列表与汇总,产品名称列升序降序切换,中,测试环境可访问;测试账号已登录并进入高值消耗追溯页(iframe consume/highConsume);已默认查询且主表至少有 2 条数据,"1. 默认条件查询
......
...@@ -12,7 +12,7 @@ STAT-RNI-004,统计报表·对账报表,科室净入汇总表·高级筛选抽 ...@@ -12,7 +12,7 @@ STAT-RNI-004,统计报表·对账报表,科室净入汇总表·高级筛选抽
2. 快捷区填入产品名称、统计日期、耗材类型 2. 快捷区填入产品名称、统计日期、耗材类型
3. 打开高级筛选,填入院区名称、科室名称 3. 打开高级筛选,填入院区名称、科室名称
4. 点击「筛 选」并等待刷新 4. 点击「筛 选」并等待刷新
5. 检查首行产品编号/名称、数量、金额与条件一致",查询正常无报错;查询条件写值正常;查询结果与查询条件一致。, 5. 检查首行物料编号/名称、数量、金额与条件一致",查询正常无报错;查询条件写值正常;查询结果与查询条件一致。,
STAT-RNI-005,统计报表·对账报表,科室净入汇总表·高级筛选抽屉,快捷区条件自动带入高级筛选,高,测试环境可访问;测试账号已登录并进入科室净入汇总表页(iframe checkAccount/outRequest);已默认查询有数据,"1. searchAndExtractSample() 读取样本 STAT-RNI-005,统计报表·对账报表,科室净入汇总表·高级筛选抽屉,快捷区条件自动带入高级筛选,高,测试环境可访问;测试账号已登录并进入科室净入汇总表页(iframe checkAccount/outRequest);已默认查询有数据,"1. searchAndExtractSample() 读取样本
2. 快捷区填入产品名称、统计日期 2. 快捷区填入产品名称、统计日期
3. 点击「查 询」 3. 点击「查 询」
...@@ -84,8 +84,8 @@ STAT-RNI-023,统计报表·对账报表,科室净入汇总表·列排序,型号 ...@@ -84,8 +84,8 @@ STAT-RNI-023,统计报表·对账报表,科室净入汇总表·列排序,型号
2. 必要时横向滚动使「型号」列表头可见 2. 必要时横向滚动使「型号」列表头可见
3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending) 3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)
4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示。, 4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示。,
STAT-RNI-024,统计报表·对账报表,科室净入汇总表·列排序,产品编号列升序降序切换,中,测试环境可访问;测试账号已登录并进入科室净入汇总表页(iframe checkAccount/outRequest);已默认查询且主表至少有 2 条数据,"1. 默认条件查询 STAT-RNI-024,统计报表·对账报表,科室净入汇总表·列排序,物料编号列升序降序切换,中,测试环境可访问;测试账号已登录并进入科室净入汇总表页(iframe checkAccount/outRequest);已默认查询且主表至少有 2 条数据,"1. 默认条件查询
2. 必要时横向滚动使「产品编号」列表头可见 2. 必要时横向滚动使「物料编号」列表头可见
3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending) 3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)
4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示。, 4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)",排序按钮可点击;升序与降序指示器分别激活;列表数据正常展示。,
STAT-RNI-025,统计报表·对账报表,科室净入汇总表·列排序,规格型号列升序降序切换,中,测试环境可访问;测试账号已登录并进入科室净入汇总表页(iframe checkAccount/outRequest);已默认查询且主表至少有 2 条数据,"1. 默认条件查询 STAT-RNI-025,统计报表·对账报表,科室净入汇总表·列排序,规格型号列升序降序切换,中,测试环境可访问;测试账号已登录并进入科室净入汇总表页(iframe checkAccount/outRequest);已默认查询且主表至少有 2 条数据,"1. 默认条件查询
......
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