Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
test
autotest-playwright-web-spd
Commits
6a181bea
Commit
6a181bea
authored
Oct 20, 2026
by
liguangyu06
Browse files
将基础管理等未入库改动暂存到 temp 分支,便于远程备份。
新模块用例尚未具备通关凭证,本次按临时备份跳过本地门禁。
parent
f6eec849
Changes
214
Hide whitespace changes
Inline
Side-by-side
Too many changes to show.
To preserve performance only
20 of 214+
files are displayed.
Plain diff
Email patch
testcase/基础管理-流程设置-审批流实例-UI自动化测试用例-01.csv
0 → 100644
View file @
6a181bea
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
FLOW-INS-001,基础设置 · 流程设置,审批流实例 · 页面进入,菜单进入审批流实例页,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 流程设置 → 审批流实例」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
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`
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),无需在用例内重复登录
2. 点击「查 询」并等待列表稳定
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),无需在用例内重复登录
2. 从首行读取 `${sampleOrderNo}`
3. 单据编号填入完整单号,点击「查 询」
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),无需在用例内重复登录
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}`
3. 业务类型选择该值,点击「查 询」
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),无需在用例内重复登录
2. 记录当前默认起止日期
3. 点击「查 询」
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),无需在用例内重复登录
2. 找到摘要非 `--` 的行读取 `${sampleSummary}` 关键字;若全为 `--` 则填 mock 关键字
3. 点击「查 询」
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),无需在用例内重复登录
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. 填写单据编号等条件后点击「重 置」
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),无需在用例内重复登录
2. 单据编号填入 `__NOT_EXIST_FLOW__99999`,点击「查 询」
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),无需在用例内重复登录
2. 断言表头含序号、单据编号、业务类型、发起人、发起部门、发起时间、摘要、审批状态、操作
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),无需在用例内重复登录
2. 抽样 `PLAN`/`DB`/`GC`/`BUY` 前缀行(有则断言)
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),无需在用例内重复登录
2. 记录第 1 页首行单据编号
3. 翻到第 2 页
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),无需在用例内重复登录
2. 记录首行 `${sampleOrderNo}`
3. 点击「详情」
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),无需在用例内重复登录
2. 填写单据编号查询后打开详情
3. 点返回/关闭
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),无需在用例内重复登录
2. 打开首行详情
3. 断言无保存审批人/改条件的提交按钮,或此类控件不可用
4. 返回列表",详情只读;改配置须到审批流程设置。,
testcase/基础管理-流程设置-审批流程设置-UI自动化测试用例-01.csv
0 → 100644
View file @
6a181bea
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
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`
3. 断言 URL 含 `/spd/basic/flowSet/workflow/flowSet`
4. 断言左侧业务类型、右侧默认审批流与自定义审批流、「保 存」「重 置」可见",进入审批流程设置;不误入审批流实例。,
FLOW-DEF-002,基础设置 · 流程设置,审批流程设置 · 页面进入,未登录访问拦截,高,测试环境可访问;使用独立 context,storageState 为空(不加载 test_1 登录态),"1. 新建独立 BrowserContext,不加载 auth/user.json
2. 清除登录态后直接打开 `/spd/basic/flowSet/workflow/flowSet`
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),无需在用例内重复登录
2. 断言左侧可见采购计划等类型且有当前高亮项
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),无需在用例内重复登录
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. 记录过滤前类型数量
3. 输入关键字后再清空
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),无需在用例内重复登录
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. 选中「采购计划」(或当前默认类型)
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),无需在用例内重复登录
2. 记录当前自定义流行数
3. 点击「新增流程」
4. 断言行数 +1,新行含流程名称、条件、审批流程、删除
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),无需在用例内重复登录
2. 点击「新增流程」得到空行
3. 点击「保 存」
4. 断言出现必填拦截提示,配置未按成功态关闭
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),无需在用例内重复登录
2. 若无自定义行则 skip
3. 点击首条自定义流条件列「编辑」
4. 断言打开「条件配置」
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),无需在用例内重复登录
2. 点击「新增流程」增加一行
3. 点击「重 置」
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. 断言选项与本页类型同源(允许按权限裁剪,本页有的关键类型如采购计划应能对应)",两页业务类型同源。,
testcase/基础管理-用户管理-医共体用户管理-UI自动化测试用例-01.csv
0 → 100644
View file @
6a181bea
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
USER-UNI-001,基础设置 · 用户管理,医共体用户管理 · 页面进入,菜单进入医共体用户管理页,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 按菜单「基础设置 → 用户管理 → 医共体用户管理」进入,或 `openPath` 打开 `/spd/basic/user/platform/personCom`
3. 断言 URL 含 `/spd/basic/user/platform/personCom`
4. 断言所属医院筛选、工具栏、列表列头与分页可见",进入医共体用户管理页;不误入用户管理或角色管理。,
USER-UNI-002,基础设置 · 用户管理,医共体用户管理 · 页面进入,未登录访问拦截,高,测试环境可访问;使用独立 context,storageState 为空(不加载 test_1 登录态),"1. 新建独立 BrowserContext,不加载 auth/user.json
2. 清除登录态后直接打开 `/spd/basic/user/platform/personCom`
3. 断言跳转登录或不展示用户业务列表",未登录不可见医共体用户数据。,
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. 点击「查 询」并等待列表稳定
3. 断言出现数据行,或空态且分页总数为 0",查询无报错;有数据时「共 N 条」N≥1。,
USER-UNI-004,基础设置 · 用户管理,医共体用户管理 · 筛选与查询,姓名或登录账号关键字查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe);默认查询至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 从首行读取 `${sampleUserName}` 或 `${sampleLoginName}`
3. 在「姓名」框填入关键字,点击「查 询」
4. 断言结果行姓名或登录账号匹配",查询结果与关键字匹配。,
USER-UNI-005,基础设置 · 用户管理,医共体用户管理 · 筛选与查询,所属医院筛选,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录当前默认 `${sampleHospital}` 与分页总数
3. 切换「所属医院」为另一可选项(仅 1 家则 skip)
4. 点击「查 询」
5. 断言结果行「所属医院」均为所选值,「共 N 条」可与默认不同",列表仅该院用户;总数随医院变化。,
USER-UNI-006,基础设置 · 用户管理,医共体用户管理 · 筛选与查询,姓名+医院+联系方式组合查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe);默认查询至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 读取 `${sampleUserName}`、`${sampleHospital}`、`${samplePhone}`(电话非法占位如 `1` 时改用姓名+医院)
3. 填写后点击「查 询」
4. 断言结果同时满足已填条件",组合条件同时生效。,
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. 更改所属医院或姓名后点击「重 置」
3. 断言所属医院恢复进入页时的默认值,列表刷新",医院等条件恢复默认。,
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. 点击「高级筛选」
3. 断言可见所属医院、联系方式、科室、角色及「筛 选」",高级筛选含医院维度字段。,
USER-UNI-009,基础设置 · 用户管理,医共体用户管理 · 筛选与查询,无匹配空态(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`,点击「查 询」
3. 断言空态且分页总数为 0",无匹配不报错;总数为 0。,
USER-UNI-010,基础设置 · 用户管理,医共体用户管理 · 列表与分页,列表列顺序含所属医院,高,测试环境可访问;正例账号 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-011,基础设置 · 用户管理,医共体用户管理 · 列表与分页,分页翻至第 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 页首行登录账号
3. 翻到第 2 页
4. 断言数据更换且所属医院筛选仍保持",翻页成功;医院条件不丢失。,
USER-UNI-012,基础设置 · 用户管理,医共体用户管理 · 列表与分页,与用户管理页同一用户字段一致,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe);两页都能查到同一账号,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录本页首行 `${sampleLoginName}`、姓名、所属科室、角色
3. 打开用户管理页,按登录账号查询同一用户
4. 断言姓名、角色、所属科室一致;本页仅多「所属医院」",同一登录账号跨页字段一致。,
USER-UNI-013,基础设置 · 用户管理,医共体用户管理 · 新增与编辑,打开新增弹窗,高,测试环境可访问;正例账号 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-014,基础设置 · 用户管理,医共体用户管理 · 新增与编辑,新增取消不落库,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 医共体用户管理」权限;已进入医共体用户管理页(/spd/basic/user/platform/personCom,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开新增,账号填 `${uniqLogin}` 后点「取 消」
3. 当前医院下列表查询该账号,断言不存在",取消后当前医院列表不出现该账号。,
USER-UNI-015,基础设置 · 用户管理,医共体用户管理 · 新增与编辑,必填为空拦截,高,测试环境可访问;正例账号 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-016,基础设置 · 用户管理,医共体用户管理 · 新增与编辑,打开编辑并回填,高,测试环境可访问;正例账号 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. 点「取 消」",编辑回填正确;本条不保存。,
testcase/基础管理-用户管理-用户管理-UI自动化测试用例-01.csv
0 → 100644
View file @
6a181bea
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
USER-USR-001,基础设置 · 用户管理,用户管理 · 页面进入,菜单进入用户管理页,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 按菜单「基础设置 → 用户管理(子菜单)→ 用户管理(叶子)」进入,或 `openPath` 打开 `/spd/basic/user/platform/person`
3. 断言 URL 含 `/spd/basic/user/platform/person`
4. 断言筛选区、工具栏「新 增」「Excel导入」、列表列头与分页可见",进入用户管理页;不误入医共体用户管理或角色管理;无报错遮罩。,
USER-USR-002,基础设置 · 用户管理,用户管理 · 页面进入,未登录访问拦截,高,测试环境可访问;使用独立 context,storageState 为空(不加载 test_1 登录态),"1. 新建独立 BrowserContext,不加载 auth/user.json
2. 清除登录态后直接打开 `/spd/basic/user/platform/person`
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),无需在用例内重复登录
2. 点击「查 询」并等待列表稳定
3. 断言出现数据行,或「暂无数据」且分页总数为 0",查询无报错;有数据时分页「共 N 条」N≥1;无数据时空态明确。,
USER-USR-004,基础设置 · 用户管理,用户管理 · 筛选与查询,姓名或登录账号关键字查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);默认查询至少 1 条且姓名或登录账号非空,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 从首行读取 `${sampleUserName}` 或 `${sampleLoginName}` 取关键字
3. 在「姓名」框(占位「姓名、登录账号」)填入关键字,点击「查 询」
4. 断言结果行姓名或登录账号匹配该关键字",查询结果与已填关键字匹配;无未捕获异常。,
USER-USR-005,基础设置 · 用户管理,用户管理 · 筛选与查询,科室下拉筛选,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);列表存在所属科室非空行,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 取首条所属科室非 `--` 的行,读取 `${sampleDept}`
3. 科室下拉选择该值,点击「查 询」
4. 断言结果行「所属科室」与所选一致,且不含未分配 `--` 行",所属科室列与筛选条件一致。,
USER-USR-006,基础设置 · 用户管理,用户管理 · 筛选与查询,姓名+科室+角色组合查询,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);默认查询至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 读取 `${sampleUserName}`、`${sampleDept}`、`${sampleRole}`(角色可从该行截断前列名)
3. 填写姓名、科室、角色后点击「查 询」
4. 断言结果同时满足已填条件",组合查询无报错;结果同时满足全部已填条件。,
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. 填写姓名等筛选条件后点击「重 置」
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),无需在用例内重复登录
2. 点击「高级筛选」
3. 断言展开后面板可见姓名/科室/角色/状态及「重 置」「筛 选」",高级筛选面板展开;关键字段与筛选按钮可见。,
USER-USR-009,基础设置 · 用户管理,用户管理 · 筛选与查询,高级筛选按状态过滤,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 展开高级筛选,状态下拉选择「启用」或「禁用」
3. 点击「筛 选」
4. 断言列表仅保留对应状态用户(无匹配则空态且总数为 0)",按状态过滤成功;无报错。,
USER-USR-010,基础设置 · 用户管理,用户管理 · 筛选与查询,无匹配结果空态(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`
3. 点击「查 询」
4. 断言空态或「暂无数据」,分页总数为 0",无匹配时不报错;空态明确;总数为 0。,
USER-USR-011,基础设置 · 用户管理,用户管理 · 列表与分页,列表核心列完整,高,测试环境可访问;正例账号 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-012,基础设置 · 用户管理,用户管理 · 列表与分页,列表不含所属医院列,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言表头不含「所属医院」",本页无所属医院列,与医共体用户管理页区分。,
USER-USR-013,基础设置 · 用户管理,用户管理 · 列表与分页,分页翻至第 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 页首行登录账号
3. 点击页码「2」或「下一页」
4. 断言页码高亮为 2,首行账号与第 1 页不同",翻页成功;数据更换。,
USER-USR-014,基础设置 · 用户管理,用户管理 · 新增用户,打开新增用户弹窗,高,测试环境可访问;正例账号 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-015,基础设置 · 用户管理,用户管理 · 新增用户,新增取消不落库,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开新增,账号填 `${uniqLogin}`,姓名填任意合法值
3. 点击「取 消」
4. 按账号查询,断言无该记录",弹窗关闭;列表不出现 `${uniqLogin}`。,
USER-USR-016,基础设置 · 用户管理,用户管理 · 新增用户,必填为空拦截,高,测试环境可访问;正例账号 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-017,基础设置 · 用户管理,用户管理 · 新增用户,登录账号重复拦截,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);默认查询至少 1 条且登录账号非空,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开新增,账号填入已存在的 `${sampleLoginName}`,补齐其它必填后点「确 定」
3. 断言保存失败并提示,弹窗仍打开
4. 查询该账号,断言原用户未被覆盖",重复账号被拒绝;不覆盖原用户。,
USER-USR-018,基础设置 · 用户管理,用户管理 · 编辑用户,打开编辑用户弹窗并回填,高,测试环境可访问;正例账号 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. 断言账号、姓名与该行 `${sampleLoginName}`、`${sampleUserName}` 一致(允许规范化空白)",编辑弹窗可见;回填与列表行一致。,
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. 打开首行编辑,记录原姓名
3. 将姓名改为临时值后点「取 消」
4. 再次打开编辑,断言姓名仍为原值",取消后列表与回看均为修改前姓名。,
USER-USR-020,基础设置 · 用户管理,用户管理 · 编辑用户,编辑时账号只读,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 用户管理」权限;已进入用户管理页(/spd/basic/user/platform/person,无 iframe);列表至少 1 条,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 打开首行编辑
3. 断言登录账号不可改(disabled/readonly 或无法输入)",编辑态登录账号只读。,
USER-USR-021,基础设置 · 用户管理,用户管理 · 编辑用户,编辑弹窗可见签名图片,中,测试环境可访问;正例账号 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-022,基础设置 · 用户管理,用户管理 · 授权,打开授权后取消不生效,高,测试环境可访问;正例账号 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. 如可勾选则改一处勾选后点取消/关闭
5. 再次打开同一用户授权,断言勾选与操作前一致",授权层可打开;取消后勾选不落库。,
USER-USR-023,基础设置 · 用户管理,用户管理 · 重置密码,行内重置密码确认后取消,高,测试环境可访问;正例账号 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. 点取消/关闭
5. 断言仍停留本页且该行仍在",重置需确认;取消后不改密。本条不点确定,避免污染账号。,
testcase/基础管理-用户管理-角色管理-UI自动化测试用例-01.csv
0 → 100644
View file @
6a181bea
用例编号,功能模块,功能测试点,用例标题,优先级,前置条件,测试步骤,预期结果,实际结果
USER-ROL-001,基础设置 · 用户管理,角色管理 · 页面进入,菜单进入角色管理页,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 按菜单「基础设置 → 用户管理 → 角色管理」进入,或 `openPath` 打开 `/spd/basic/user/platform/role`
3. 断言 URL 含 `/spd/basic/user/platform/role`
4. 断言左侧角色列表、右侧菜单权限树、「保 存」「刷 新」可见,无独立分页",进入角色管理;左右分栏渲染完成;不误入用户管理页。,
USER-ROL-002,基础设置 · 用户管理,角色管理 · 页面进入,未登录访问拦截,高,测试环境可访问;使用独立 context,storageState 为空(不加载 test_1 登录态),"1. 新建独立 BrowserContext,不加载 auth/user.json
2. 清除登录态后直接打开 `/spd/basic/user/platform/role`
3. 断言跳转登录或不展示角色/权限树业务数据",未登录不可见角色配置。,
USER-ROL-003,基础设置 · 用户管理,角色管理 · 左侧角色列表,角色列表加载并可点选,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 断言左栏列出角色名称(如医院管理员、护士等)
3. 点击首个 `${sampleRoleName}`
4. 断言该行处于选中态",左栏有角色且可点选。,
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. 在角色名称框输入 `${sampleRoleName}` 的部分关键字
3. 断言左栏收敛为匹配项(即时或回车,以现网为准)",搜索结果角色名包含关键字。,
USER-ROL-005,基础设置 · 用户管理,角色管理 · 左侧角色列表,选中角色刷新右侧权限树,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe);左栏至少 2 个角色,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 依次点选两个不同角色
3. 断言右侧勾选随当前角色变化,无上一角色残留",权限树与当前角色配置一致。,
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. 先按关键字过滤,再清空搜索
3. 断言左栏恢复未过滤的完整角色列表",清空后角色列表恢复全量。,
USER-ROL-007,基础设置 · 用户管理,角色管理 · 左侧角色列表,搜索无匹配空态(mock反例),中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 角色名称框填入 `__NOT_EXIST_ROLE__99999`
3. 断言左栏空态明确",无匹配不报错;空态明确。,
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. 选中任一角色
3. 断言右侧树根为「SPD内网系统PC端」,可见基础设置/运维管理/厂商管理/产品管理等模块
4. 展开「基础设置」,断言可见子菜单(如医院资料)",权限树层级可见;节点可展开。,
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. 选中一自定义或可编辑角色(预置被锁则 skip)
3. 记录「厂商管理」父节点原勾选
4. 勾选「厂商管理」父节点
5. 断言其子菜单/功能全部勾选
6. 点击「刷 新」,不点「保 存」",父节点勾选联动子节点;本条不保存。,
USER-ROL-010,基础设置 · 用户管理,角色管理 · 右侧菜单权限树,刷新恢复未保存勾选,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 改一处勾选后点「刷 新」且未保存
3. 断言树恢复为进入该角色时的已保存状态",刷新丢弃未保存勾选。,
USER-ROL-011,基础设置 · 用户管理,角色管理 · 角色增删改,删除需确认且取消保留,高,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 点一自定义角色的删除入口(预置角色无删除则改点自定义;都没有则 skip)
3. 断言出现确认框,含取消/确定
4. 点「取 消」
5. 断言该角色仍在左栏",删除需二次确认;取消后角色仍在。本条不点确定。,
USER-ROL-012,基础设置 · 用户管理,角色管理 · 角色增删改,新增角色入口打开后取消,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 通过新增或「角色」工具按钮打开新增表单(扫描未打开则 skip)
3. 不填或填写后点取消/关闭
4. 断言左栏角色数量不增加",新增入口可达;取消不落库。,
USER-ROL-013,基础设置 · 用户管理,角色管理 · 角色增删改,预置角色不可删除,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe);左栏存在可识别的预置角色,否则 skip,"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 在左栏定位「医院管理员」(或其它预置角色,以现网为准)
3. 断言删除入口不可见;若可见则确定后被拒绝,角色仍在左栏
4. 若弹出确认则点取消,避免误删",预置角色不可删除。,
USER-ROL-014,基础设置 · 用户管理,角色管理 · 左侧角色列表,角色名与用户管理角色下拉同源,中,测试环境可访问;正例账号 test_1 已通过 auth.setup 写入 storageState 登录(密码仅存 .env TEST_PASS,勿写入本表);具备「基础设置 → 用户管理 → 角色管理」权限;已进入角色管理页(/spd/basic/user/platform/role,无 iframe),"1. 确认 chromium 已加载 storageState(auth.setup,正例账号 test_1),无需在用例内重复登录
2. 记录本页左栏角色名称集合
3. 打开用户管理,展开「角色」筛选项
4. 断言两边名称集合一致(允许按权限裁剪,本页有的名称用户页应能对应到)",角色主数据跨页一致,不串名。,
testcases/基础管理-准入管理-产品准入单列表-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-准入管理-产品准入单列表 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-准入管理-产品准入单列表-测试点分析-01.md`
**执行 CSV**
:
`testcase/基础管理-准入管理-产品准入单列表-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/dataSync/dataSync/productOrder/list`
**定位器 YAML**
:
`locators/spd/admit-product-list.locator.yaml`
**元素扫描**
:
`data/scan/admit-product-list-elements.json`
(77 项)
**版本**
:2026-09-22
**自动化框架**
:Playwright + TypeScript(规划
`tests/spd/admit-product-list.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:已执行
`auth.setup`
,
`storageState`
有效;测试账号具备「基础设置 → 准入管理 → 产品准入单列表」权限。
**页面约定**
:整页渲染,
**无报表 iframe**
。与物料准入单列表 URL 不同,列表多「备注」「附件」列。
**菜单导航**
:展开「基础设置 → 准入管理」后,点击
`.ant-menu-item`
文案精确为「产品准入单列表」。
**写操作**
:不确认「通过」,避免推进真实审批。
**动态取数约定**
:
1.
默认查询后从首行读取
`${sampleOrderNo}`
、
`${sampleProductName}`
、
`${sampleProductCount}`
、
`${sampleStatus}`
、
`${sampleAttachmentCount}`
。
2.
**禁止写死**
准入单号与产品名称。
3.
状态 Tab:全部、审批中、已通过、已驳回。
---
## 基础设置 · 准入管理
### 产品准入单列表 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-PLS-001】【TP_ADMIT_PLS_001】菜单进入产品准入单列表
-
前置条件:已登录且具备准入管理权限
-
操作步骤:
1.
按菜单「基础设置 → 准入管理 → 产品准入单列表」进入
2.
断言 URL 含
`/spd/basic/dataSync/dataSync/productOrder/list`
,且路径不是
`zrlist`
3.
断言制单日期、查询、状态 Tab、列表表头可见
-
自动化断言:规划与 CSV
`ADMIT-PLS-001`
及
`tests/spd/admit-product-list.spec.ts`
一致
###### 预期结果
进入产品准入单列表;不误入物料准入单列表。
---
### 产品准入单列表 · 筛选与状态
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-PLS-002】【TP_ADMIT_PLS_009】默认查询列表有数据或空态明确
-
前置条件:已进入产品准入单列表
-
操作步骤:
1.
点击「查 询」并等待列表稳定
2.
断言出现数据行,或「暂无数据」且分页总数为 0
-
自动化断言:规划与 CSV
`ADMIT-PLS-002`
一致
###### 预期结果
查询无报错;有数据时分页「共 N 条」N≥1;无数据时空态明确。
---
##### 【P0】【TC-UI-ADMIT-PLS-003】【TP_ADMIT_PLS_010】按产品名称筛选
-
前置条件:默认查询至少 1 条且产品名称非空
-
操作步骤:
1.
从首行读取
`${sampleProductName}`
2.
若筛选区无产品名称,则用注册证号或器械注册人中首行非空字段
3.
制单日期保持默认,点击「查 询」
4.
断言结果包含该关键字
-
自动化断言:规划与 CSV
`ADMIT-PLS-003`
一致
###### 预期结果
结果与已填关键字匹配。
---
##### 【P1】【TC-UI-ADMIT-PLS-004】【TP_ADMIT_PLS_011】重置恢复默认
-
前置条件:已填入筛选关键字
-
操作步骤:
1.
点击「重 置」
2.
断言筛选恢复默认
-
自动化断言:规划与 CSV
`ADMIT-PLS-004`
一致
###### 预期结果
筛选恢复默认;列表按默认规则刷新。
---
#### 异常验证点
##### 【P1】【TC-UI-ADMIT-PLS-005】【TP_ADMIT_PLS_019】无匹配结果空态(mock反例)
-
前置条件:已进入产品准入单列表
-
操作步骤:
1.
注册证号填入
`__NOT_EXIST_CERT__99999`
2.
点击「查 询」
3.
断言空态且分页总数为 0
-
自动化断言:规划与 CSV
`ADMIT-PLS-005`
一致
###### 预期结果
无匹配时不报错;总数为 0。
---
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-PLS-006】【TP_ADMIT_PLS_013】列表核心列与附件计数
-
前置条件:默认查询至少 1 条数据
-
操作步骤:
1.
断言表头含准入单号、进院供应商、二级供应商、产品名称、注册证号、耗材类型、产品条数、状态、备注、附件、操作
2.
断言首行附件列展示个数(可为 0 个)
-
自动化断言:规划与 CSV
`ADMIT-PLS-006`
一致
###### 预期结果
核心列可见;附件列有个数;操作为「详情」。本页列表不要求「准入类型」列。
---
##### 【P0】【TC-UI-ADMIT-PLS-007】【TP_ADMIT_PLS_012】切换已通过 Tab
-
前置条件:已进入产品准入单列表
-
操作步骤:
1.
点击「已通过」
2.
断言有数据时状态为已通过
3.
断言 Tab 括号数量等于分页「共 N 条」
-
自动化断言:规划与 CSV
`ADMIT-PLS-007`
一致
###### 预期结果
已通过 Tab 的状态与计数一致。
---
##### 【P1】【TC-UI-ADMIT-PLS-008】【TP_ADMIT_PLS_021】与物料准入单列表不串 URL
-
前置条件:当前在产品准入单列表
-
操作步骤:
1.
记录当前 URL
2.
断言 URL 含
`productOrder/list`
且不含
`zrlist`
3.
不点击物料准入单列表菜单
-
自动化断言:规划与 CSV
`ADMIT-PLS-008`
一致
###### 预期结果
停留在产品准入单列表路径,不串到物料单路径。
---
### 产品准入单列表 · 单据详情
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-PLS-009】【TP_ADMIT_PLS_022】打开详情后返回
-
前置条件:默认查询至少 1 条数据
-
操作步骤:
1.
记录首行
`${sampleOrderNo}`
2.
点击「详情」
3.
断言可见「审批进程」「单据日志」「返 回」
4.
返回后 URL 仍含
`productOrder/list`
-
自动化断言:规划与 CSV
`ADMIT-PLS-009`
一致
###### 预期结果
详情可打开;返回后仍是产品准入单列表。
---
##### 【P0】【TC-UI-ADMIT-PLS-010】【TP_ADMIT_PLS_023】详情产品条数与列表一致
-
前置条件:已打开首行详情
-
操作步骤:
1.
读取详情明细分页总数或当前行数
2.
断言等于列表「产品条数」
-
自动化断言:规划与 CSV
`ADMIT-PLS-010`
一致
###### 预期结果
明细条数与产品条数一致。
---
##### 【P1】【TC-UI-ADMIT-PLS-011】【TP_ADMIT_PLS_025】单据日志可打开
-
前置条件:已打开单据详情
-
操作步骤:
1.
点击「单据日志」
2.
断言日志层可见
3.
关闭后仍在该单据
-
自动化断言:规划与 CSV
`ADMIT-PLS-011`
一致
###### 预期结果
单据日志可查看;详情不被销毁。
---
#### 异常验证点
##### 【P1】【TC-UI-ADMIT-PLS-012】【TP_ADMIT_PLS_028】详情搜索无匹配(mock反例)
-
前置条件:已打开单据详情
-
操作步骤:
1.
搜索框填入
`__NOT_EXIST_GOODS__99999`
2.
断言明细空态,返回按钮仍在
-
自动化断言:规划与 CSV
`ADMIT-PLS-012`
一致
###### 预期结果
无匹配只影响明细;单据头仍在。
---
##### 【P0】【TC-UI-ADMIT-PLS-013】【TP_ADMIT_PLS_033】已通过单据不确认通过
-
前置条件:已通过 Tab 至少 1 条并打开详情
-
操作步骤:
1.
「通过」禁用或不可见时,断言状态保持已通过
2.
若可点且出现确认框,点「取 消」
3.
返回列表,断言状态仍为已通过
-
自动化断言:规划与 CSV
`ADMIT-PLS-013`
一致
###### 预期结果
不把已通过单据再次审批成功。无已通过数据则 skip。
---
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 |
**13**
条(P0=7 / P1=6) |
| 来源 | 从 34 条测试点选取查询、附件列、详情与审批门禁 |
| 未纳入自动化 | 未登录/权限、确认「通过」、与产品准入申请的跨页追单、附件文件内容打开 |
| 单一职责 | 每条只断言一个核心业务结果 |
testcases/基础管理-准入管理-产品准入申请-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-准入管理-产品准入申请 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-准入管理-产品准入申请-测试点分析-01.md`
**执行 CSV**
:
`testcase/基础管理-准入管理-产品准入申请-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/dataSync/dataSync/productApply/list`
**定位器 YAML**
:
`locators/spd/admit-product-apply.locator.yaml`
**元素扫描**
:
`data/scan/admit-product-apply-elements.json`
(467 项)
**版本**
:2026-09-22
**自动化框架**
:Playwright + TypeScript(规划
`tests/spd/admit-product-apply.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:已执行
`auth.setup`
,
`storageState`
有效;测试账号具备「基础设置 → 准入管理 → 产品准入申请」权限。
**页面约定**
:整页渲染,
**无报表 iframe**
。
**菜单导航**
:展开「基础设置 → 准入管理」后,点击
`.ant-menu-item`
文案精确为「产品准入申请」。
**写操作**
:不真实保存新产品、不导入 Excel、不确认生成申请单或作废。新增页只校验打开、取消和必填拦截。
**动态取数约定**
:
1.
默认查询后从首行读取
`${sampleProductName}`
、
`${sampleSpec}`
、
`${sampleConsumableType}`
、
`${sampleOrderNo}`
。
2.
筛选使用样本占位,
**禁止写死**
产品名称与单号。
3.
状态 Tab:全部、待申请、审批中、已通过、已驳回、已作废、生效失败、已生效。分页含「跳至」。总条数不足两页时翻页用例 skip。
---
## 基础设置 · 准入管理
### 产品准入申请 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-PAP-001】【TP_ADMIT_PAP_001】菜单进入产品准入申请页
-
前置条件:已登录且具备准入管理权限
-
操作步骤:
1.
按菜单「基础设置 → 准入管理 → 产品准入申请」进入
2.
断言 URL 含
`/spd/basic/dataSync/dataSync/productApply/list`
,且不是
`ZRlist`
3.
断言可见「查 询」、「Excel导入」「生成申请单」「一键生成」「新增产品」「作 废」及列表表头
-
自动化断言:规划与 CSV
`ADMIT-PAP-001`
及
`tests/spd/admit-product-apply.spec.ts`
一致
###### 预期结果
进入产品准入申请页;不误入物料准入管理(ZRlist)或产品准入单列表。
---
### 产品准入申请 · 筛选查询
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-PAP-002】【TP_ADMIT_PAP_009】默认查询列表有数据或空态明确
-
前置条件:已进入产品准入申请页
-
操作步骤:
1.
点击「查 询」并等待列表稳定
2.
断言出现数据行,或「暂无数据」且分页总数为 0
-
自动化断言:规划与 CSV
`ADMIT-PAP-002`
一致
###### 预期结果
查询无报错;有数据时分页「共 N 条」N≥1;无数据时空态明确。
---
##### 【P0】【TC-UI-ADMIT-PAP-003】【TP_ADMIT_PAP_012】产品名称筛选
-
前置条件:默认查询至少 1 条数据
-
操作步骤:
1.
从首行读取
`${sampleProductName}`
2.
填入产品名称,新增日期保持默认,点击「查 询」
3.
断言结果行「产品名称」均包含该关键字
-
自动化断言:规划与 CSV
`ADMIT-PAP-003`
一致
###### 预期结果
产品名称与已填关键字匹配。
---
##### 【P0】【TC-UI-ADMIT-PAP-004】【TP_ADMIT_PAP_013】名称与耗材类型组合查询
-
前置条件:默认查询至少 1 条数据
-
操作步骤:
1.
读取首行
`${sampleProductName}`
、
`${sampleConsumableType}`
2.
同时填入后点击「查 询」(日期保持默认)
3.
断言结果同时满足两个条件
-
自动化断言:规划与 CSV
`ADMIT-PAP-004`
一致
###### 预期结果
组合查询结果同时满足产品名称与耗材类型。类型为空则只断言名称。
---
##### 【P1】【TC-UI-ADMIT-PAP-005】【TP_ADMIT_PAP_014】重置恢复默认
-
前置条件:已进入产品准入申请页
-
操作步骤:
1.
填入
`${sampleProductName}`
2.
点击「重 置」
3.
断言筛选恢复默认
-
自动化断言:规划与 CSV
`ADMIT-PAP-005`
一致
###### 预期结果
筛选字段恢复默认;列表按默认规则刷新。
---
#### 异常验证点
##### 【P1】【TC-UI-ADMIT-PAP-006】【TP_ADMIT_PAP_018】无匹配结果空态(mock反例)
-
前置条件:已进入产品准入申请页
-
操作步骤:
1.
产品名称填入
`__NOT_EXIST_GOODS__99999`
2.
点击「查 询」
3.
断言空态且分页总数为 0
-
自动化断言:规划与 CSV
`ADMIT-PAP-006`
一致
###### 预期结果
无匹配时不报错;总数为 0。
---
### 产品准入申请 · 状态与列表
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-PAP-007】【TP_ADMIT_PAP_022】列表核心列完整
-
前置条件:默认查询至少 1 条数据
-
操作步骤:
1.
断言表头含准入单号、产品编号、产品名称、规格型号、注册规格、注册型号、器械注册人、单位、操作
-
自动化断言:规划与 CSV
`ADMIT-PAP-007`
一致
###### 预期结果
核心列可见;操作含「详情」「日志」。
---
##### 【P0】【TC-UI-ADMIT-PAP-008】【TP_ADMIT_PAP_020】切换待申请 Tab
-
前置条件:已进入产品准入申请页
-
操作步骤:
1.
点击「待申请」
2.
断言有数据时行不属于已生效/已作废;计数为 0 时为空态
-
自动化断言:规划与 CSV
`ADMIT-PAP-008`
一致
###### 预期结果
待申请 Tab 与列表状态一致。
---
##### 【P1】【TC-UI-ADMIT-PAP-009】【TP_ADMIT_PAP_023】翻至第 2 页
-
前置条件:分页总数大于每页条数
-
操作步骤:
1.
记录第 1 页首行准入单号
2.
点击页码「2」或「下一页」
3.
断言页码高亮为 2,首行单号与第 1 页不同
-
自动化断言:规划与 CSV
`ADMIT-PAP-009`
一致
###### 预期结果
翻页成功且数据更换。不足两页则 skip。
---
##### 【P1】【TC-UI-ADMIT-PAP-010】【TP_ADMIT_PAP_023】跳至指定页
-
前置条件:总页数不少于 2,分页存在「跳至」
-
操作步骤:
1.
在跳至输入框填入
`2`
并回车
2.
断言当前页为 2
-
自动化断言:规划与 CSV
`ADMIT-PAP-010`
一致
###### 预期结果
跳转到第 2 页。无跳至或仅 1 页则 skip。
---
### 产品准入申请 · 新增与导入
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-PAP-011】【TP_ADMIT_PAP_027】打开新增产品后返回
-
前置条件:已进入产品准入申请页
-
操作步骤:
1.
点击「新增产品」
2.
断言可见产品名称、器械注册人、规格型号、注册证号及返回
3.
点击返回,不保存
-
自动化断言:规划与 CSV
`ADMIT-PAP-011`
一致
###### 预期结果
新增页字段可见;返回后列表不新增记录。
---
##### 【P0】【TC-UI-ADMIT-PAP-012】【TP_ADMIT_PAP_029】新增取消不落库
-
前置条件:已进入产品准入申请页
-
操作步骤:
1.
记录分页总数
`${sampleTotal}`
2.
打开新增,产品名称填
`${uniqProductName}`
(建议
`AUTO-PAP-${timestamp}`
)后返回不保存
3.
按该名称查询,断言无此行,总数不变
-
自动化断言:规划与 CSV
`ADMIT-PAP-012`
一致
###### 预期结果
取消后不产生新产品。
---
##### 【P1】【TC-UI-ADMIT-PAP-013】【TP_ADMIT_PAP_030】Excel 导入打开后取消
-
前置条件:已进入产品准入申请页
-
操作步骤:
1.
记录总数
`${sampleTotal}`
2.
点击「Excel导入」
3.
断言导入层打开
4.
关闭或取消,不选择文件
5.
断言总数不变
-
自动化断言:规划与 CSV
`ADMIT-PAP-013`
一致
###### 预期结果
取消导入不增加产品。
---
#### 异常验证点
##### 【P0】【TC-UI-ADMIT-PAP-014】【TP_ADMIT_PAP_034】产品名称为空保存拦截(mock反例)
-
前置条件:已打开新增产品页
-
操作步骤:
1.
产品名称保持 mock 空值,其它能填的非名称字段可留空
2.
点击保存
3.
断言必填提示,页面不关闭
4.
返回列表,断言总数不变
-
自动化断言:规划与 CSV
`ADMIT-PAP-014`
一致
###### 预期结果
保存被拦截;不落库。
---
### 产品准入申请 · 详情、编辑与作废
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-PAP-015】【TP_ADMIT_PAP_046】打开详情后返回
-
前置条件:默认查询至少 1 条数据
-
操作步骤:
1.
记录首行
`${sampleProductName}`
2.
点击「详情」,断言名称一致
3.
返回列表
-
自动化断言:规划与 CSV
`ADMIT-PAP-015`
一致
###### 预期结果
详情与该行一致;返回后仍在产品准入申请列表。
---
##### 【P0】【TC-UI-ADMIT-PAP-016】【TP_ADMIT_PAP_047】待申请编辑回填
-
前置条件:待申请至少 1 行含「编辑」
-
操作步骤:
1.
读取该行
`${sampleProductName}`
、
`${sampleSpec}`
2.
点击「编辑」
3.
断言名称与规格型号回填一致
4.
返回不保存
-
自动化断言:规划与 CSV
`ADMIT-PAP-016`
一致
###### 预期结果
编辑回填与列表行一致。无编辑按钮则 skip。
---
##### 【P1】【TC-UI-ADMIT-PAP-017】【TP_ADMIT_PAP_049】编辑取消不保存
-
前置条件:存在可编辑行
-
操作步骤:
1.
打开编辑,把产品名称改为
`${uniqProductName}`
后返回不保存
2.
再次打开,断言名称仍为原值
-
自动化断言:规划与 CSV
`ADMIT-PAP-017`
一致
###### 预期结果
取消后数据不变。
---
##### 【P0】【TC-UI-ADMIT-PAP-018】【TP_ADMIT_PAP_041】作废确认后取消
-
前置条件:待申请至少 1 条可勾选
-
操作步骤:
1.
勾选 1 行并点击「作 废」
2.
断言确认框出现
3.
点击「取 消」
4.
断言该行仍在,状态未变为已作废
-
自动化断言:规划与 CSV
`ADMIT-PAP-018`
一致
###### 预期结果
取消作废不改变状态。本条不点击确定。
---
##### 【P1】【TC-UI-ADMIT-PAP-019】【TP_ADMIT_PAP_051】已通过行不提供编辑
-
前置条件:已通过 Tab 计数大于 0
-
操作步骤:
1.
切换「已通过」
2.
断言首行无「编辑」,或打开后保存被拒绝
-
自动化断言:规划与 CSV
`ADMIT-PAP-019`
一致
###### 预期结果
已通过行不能改写产品名称。计数为 0 则 skip。
---
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 |
**19**
条(P0=11 / P1=8) |
| 来源 | 从 56 条测试点选取可稳定自动化的主路径与关键反向 |
| 未纳入自动化 | 未登录/权限、合法新增落库、Excel 真实导入、确认生成申请单、一键生成、确认作废、跨单列表追溯 |
| 单一职责 | 每条只断言一个核心业务结果 |
testcases/基础管理-准入管理-供货目录申请-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-准入管理-供货目录申请 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-准入管理-供货目录申请-测试点分析-01.md`
**执行 CSV**
:
`testcase/基础管理-准入管理-供货目录申请-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/dataSync/dataSync/supplyApply/list`
**定位器 YAML**
:
`locators/spd/admit-supply.locator.yaml`
**元素扫描**
:
`data/scan/admit-supply-elements.json`
(117 项)
**版本**
:2026-09-22
**自动化框架**
:Playwright + TypeScript(规划
`tests/spd/admit-supply.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:已执行
`auth.setup`
,
`storageState`
有效;测试账号具备「基础设置 → 准入管理 → 供货目录申请」权限。
**页面约定**
:整页渲染,
**无报表 iframe**
。
**菜单导航**
:展开「基础设置 → 准入管理」后,点击
`.ant-menu-item`
文案精确为「供货目录申请」。
**写操作**
:不提交新申请、不导入 Excel、不确认批量提交。新增页只做打开、取消和空提交拦截。
**动态取数约定**
:
1.
默认查询后从首行读取
`${sampleOrderNo}`
、
`${sampleHospitalSupplier}`
、
`${sampleSecondSupplier}`
、
`${sampleBizMode}`
、
`${sampleDefaultFlag}`
。
2.
**禁止写死**
供应商名称与申请单号。
3.
状态 Tab:全部、待提交、审批中、已通过、已驳回。无待提交行时,编辑与批量勾选用例 skip。
---
## 基础设置 · 准入管理
### 供货目录申请 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-SUP-001】【TP_ADMIT_SUP_001】菜单进入供货目录申请页
-
前置条件:已登录且具备准入管理权限
-
操作步骤:
1.
按菜单「基础设置 → 准入管理 → 供货目录申请」进入
2.
断言 URL 含
`/spd/basic/dataSync/dataSync/supplyApply/list`
3.
断言可见「查 询」、「批量提交」、「新 增」及列表表头
-
自动化断言:规划与 CSV
`ADMIT-SUP-001`
及
`tests/spd/admit-supply.spec.ts`
一致
###### 预期结果
进入供货目录申请页;不误入准入任务分配。
---
### 供货目录申请 · 筛选与状态
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-SUP-002】【TP_ADMIT_SUP_009】默认查询列表有数据或空态明确
-
前置条件:已进入供货目录申请页
-
操作步骤:
1.
点击「查 询」并等待列表稳定
2.
断言出现数据行,或「暂无数据」且分页总数为 0
-
自动化断言:规划与 CSV
`ADMIT-SUP-002`
一致
###### 预期结果
查询无报错;有数据时分页「共 N 条」N≥1;无数据时空态明确。
---
##### 【P0】【TC-UI-ADMIT-SUP-003】【TP_ADMIT_SUP_010】按进院供应商筛选
-
前置条件:默认查询至少 1 条且进院供应商非空
-
操作步骤:
1.
从首行读取
`${sampleHospitalSupplier}`
2.
在进院供应商选择该值,制单日期保持默认,点击「查 询」
3.
断言结果行「进院供应商」与所选值一致
-
自动化断言:规划与 CSV
`ADMIT-SUP-003`
一致
###### 预期结果
进院供应商列与条件一致。
---
##### 【P1】【TC-UI-ADMIT-SUP-004】【TP_ADMIT_SUP_012】重置恢复默认
-
前置条件:已选择进院供应商
-
操作步骤:
1.
点击「重 置」
2.
断言进院供应商等筛选恢复默认
-
自动化断言:规划与 CSV
`ADMIT-SUP-004`
一致
###### 预期结果
筛选恢复默认;列表按默认规则刷新。
---
#### 异常验证点
##### 【P1】【TC-UI-ADMIT-SUP-005】【TP_ADMIT_SUP_019】变更单号无匹配空态(mock反例)
-
前置条件:已进入供货目录申请页
-
操作步骤:
1.
变更单号填入
`__NOT_EXIST_ORDER__99999`
;若筛选区无此框,则在产品名称填同一 mock
2.
点击「查 询」
3.
断言空态且分页总数为 0
-
自动化断言:规划与 CSV
`ADMIT-SUP-005`
一致
###### 预期结果
无匹配时不报错;总数为 0。
---
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-SUP-006】【TP_ADMIT_SUP_014】列表核心列完整
-
前置条件:默认查询至少 1 条数据
-
操作步骤:
1.
断言表头含申请单号、申请人、申请时间、进院供应商、二级供应商、业务模式、是否默认、备注、操作
-
自动化断言:规划与 CSV
`ADMIT-SUP-006`
一致
###### 预期结果
核心列可见;操作含「编辑」或「详情」(随状态变化)。
---
##### 【P0】【TC-UI-ADMIT-SUP-007】【TP_ADMIT_SUP_013】切换待提交 Tab 且计数一致
-
前置条件:已进入供货目录申请页
-
操作步骤:
1.
点击「待提交」
2.
读取括号数量
3.
断言分页「共 N 条」等于该数量;有数据时状态为待提交
-
自动化断言:规划与 CSV
`ADMIT-SUP-007`
一致
###### 预期结果
待提交 Tab 与分页总数一致。计数为 0 时为空态。
---
### 供货目录申请 · 新增与编辑
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-SUP-008】【TP_ADMIT_SUP_021】打开新增供货目录
-
前置条件:已进入供货目录申请页
-
操作步骤:
1.
点击「新 增」
2.
断言可见进院供应商、二级供应商、业务模式、是否默认、计划生效时间、添加产品、提交
3.
返回不提交
-
自动化断言:规划与 CSV
`ADMIT-SUP-008`
一致
###### 预期结果
新增页字段齐全;返回后列表不新增申请单。
---
##### 【P0】【TC-UI-ADMIT-SUP-009】【TP_ADMIT_SUP_026】新增放弃不落库
-
前置条件:已进入供货目录申请页
-
操作步骤:
1.
记录总数
`${sampleTotal}`
2.
打开新增,备注填
`${uniqRemark}`
(建议
`AUTO-SUP-${timestamp}`
)后返回不提交
3.
断言总数不变,列表无该备注
-
自动化断言:规划与 CSV
`ADMIT-SUP-009`
一致
###### 预期结果
未提交不产生申请单。
---
##### 【P1】【TC-UI-ADMIT-SUP-010】【TP_ADMIT_SUP_048】业务模式与是否默认只切换不提交
-
前置条件:已打开新增页
-
操作步骤:
1.
展开业务模式、是否默认,断言存在可选项
2.
各选一项后返回,不提交
3.
断言列表总数不变
-
自动化断言:规划与 CSV
`ADMIT-SUP-010`
一致
###### 预期结果
选项可见;不提交则无新单。
---
##### 【P0】【TC-UI-ADMIT-SUP-011】【TP_ADMIT_SUP_025】待提交编辑回填
-
前置条件:待提交至少 1 行含「编辑」
-
操作步骤:
1.
读取该行
`${sampleHospitalSupplier}`
、
`${sampleBizMode}`
、
`${sampleDefaultFlag}`
2.
点击「编辑」
3.
断言进院供应商、业务模式、是否默认与该行一致
4.
返回不提交
-
自动化断言:规划与 CSV
`ADMIT-SUP-011`
一致
###### 预期结果
编辑回填与列表行一致。无待提交或无编辑则 skip。
---
##### 【P1】【TC-UI-ADMIT-SUP-012】【TP_ADMIT_SUP_026】编辑取消不保存
-
前置条件:存在可编辑的待提交行
-
操作步骤:
1.
打开编辑,把备注改为
`${uniqRemark}`
后返回不提交
2.
再次打开,断言备注仍为原值
-
自动化断言:规划与 CSV
`ADMIT-SUP-012`
一致
###### 预期结果
取消后备注不变。
---
#### 异常验证点
##### 【P0】【TC-UI-ADMIT-SUP-013】【TP_ADMIT_SUP_030】进院供应商为空不可提交(mock反例)
-
前置条件:已打开新增页,进院供应商未选
-
操作步骤:
1.
不选进院供应商,点击「提 交」
2.
断言必填提示,页面不关闭
3.
返回列表,断言总数不变
-
自动化断言:规划与 CSV
`ADMIT-SUP-013`
一致
###### 预期结果
提交被拦截;不产生申请单。
---
##### 【P0】【TC-UI-ADMIT-SUP-014】【TP_ADMIT_SUP_031】未添加产品不可提交
-
前置条件:已打开新增页,产品明细为 0
-
操作步骤:
1.
若进院供应商、二级供应商、业务模式可从样本选择则先选上,但不添加产品
2.
点击「提 交」
3.
断言拦截提示,明细仍为 0,列表总数不变
-
自动化断言:规划与 CSV
`ADMIT-SUP-014`
一致
###### 预期结果
没有产品明细时不能提交。
---
### 供货目录申请 · 批量提交与详情
#### 功能验证点
##### 【P1】【TC-UI-ADMIT-SUP-015】【TP_ADMIT_SUP_042】未勾选时批量提交不可用
-
前置条件:已进入供货目录申请页,无勾选行
-
操作步骤:
1.
断言「批量提交」计数为 0,或按钮不可用
2.
若仍可点击,断言出现请选择提示,且无单据离开待提交
-
自动化断言:规划与 CSV
`ADMIT-SUP-015`
一致
###### 预期结果
未勾选不提交任何申请单。
---
##### 【P0】【TC-UI-ADMIT-SUP-016】【TP_ADMIT_SUP_038】勾选后批量提交取消
-
前置条件:待提交至少 1 条
-
操作步骤:
1.
勾选 1 行,记录申请单号与状态
2.
点击「批量提交」
3.
若出现确认框,点「取 消」
4.
断言该单仍为待提交
-
自动化断言:规划与 CSV
`ADMIT-SUP-016`
一致
###### 预期结果
取消批量提交不改变状态。本条不点击确定。无待提交则 skip。
---
##### 【P0】【TC-UI-ADMIT-SUP-017】【TP_ADMIT_SUP_039】打开详情后返回
-
前置条件:默认查询至少 1 条数据
-
操作步骤:
1.
点击首行「详情」
2.
断言可见「审批进程」「单据日志」「返 回」
3.
返回后 URL 仍含
`supplyApply/list`
-
自动化断言:规划与 CSV
`ADMIT-SUP-017`
一致
###### 预期结果
详情可打开;返回后仍在供货目录申请列表。
---
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 |
**17**
条(P0=11 / P1=6) |
| 来源 | 从 48 条测试点选取查询、新增拦截、编辑回填、批量提交取消与详情 |
| 未纳入自动化 | 未登录/权限、真实提交、Excel 导入落库、确认批量提交、是否默认冲突后的供货关系回写 |
| 单一职责 | 每条只断言一个核心业务结果 |
testcases/基础管理-准入管理-准入任务分配-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-准入管理-准入任务分配 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-准入管理-准入任务分配-测试点分析-01.md`
**执行 CSV**
:
`testcase/基础管理-准入管理-准入任务分配-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/dataSync/dataSync/accessKind/list`
**定位器 YAML**
:
`locators/spd/admit-task.locator.yaml`
**元素扫描**
:
`data/scan/admit-task-elements.json`
(158 项)
**版本**
:2026-09-22
**自动化框架**
:Playwright + TypeScript(规划
`tests/spd/admit-task.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:已执行
`auth.setup`
,
`storageState`
有效;测试账号具备「基础设置 → 准入管理 → 准入任务分配」权限。
**页面约定**
:整页渲染,
**无报表 iframe**
。分类 Tab 为「待分类」「已分类」,分页含「跳至」。
**菜单导航**
:展开「基础设置 → 准入管理」后,点击
`.ant-menu-item`
文案精确为「准入任务分配」。
**写操作**
:不确认分配类型、不确认批量分配,避免改生产分类。
**动态取数约定**
:
1.
在待分类默认查询后,从首行读取
`${sampleProductName}`
、
`${sampleProductCode}`
、
`${sampleSpec}`
。
2.
**禁止写死**
产品名称与产品编号。
3.
总条数不足两页时,翻页与跳至用例 skip。已分类计数为 0 时,已分类用例只断言空态。
---
## 基础设置 · 准入管理
### 准入任务分配 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-TSK-001】【TP_ADMIT_TSK_001】菜单进入准入任务分配页
-
前置条件:已登录且具备准入管理权限
-
操作步骤:
1.
按菜单「基础设置 → 准入管理 → 准入任务分配」进入
2.
断言 URL 含
`/spd/basic/dataSync/dataSync/accessKind/list`
3.
断言可见「查 询」、「待分类」「已分类」、「批量分配」及列表表头
-
自动化断言:规划与 CSV
`ADMIT-TSK-001`
及
`tests/spd/admit-task.spec.ts`
一致
###### 预期结果
进入准入任务分配页;不误入供货目录申请。
---
### 准入任务分配 · 筛选与分类
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-TSK-002】【TP_ADMIT_TSK_009】默认查询列表有数据或空态明确
-
前置条件:已进入准入任务分配页,当前为待分类
-
操作步骤:
1.
点击「查 询」并等待列表稳定
2.
断言出现数据行,或「暂无数据」且分页总数为 0
-
自动化断言:规划与 CSV
`ADMIT-TSK-002`
一致
###### 预期结果
查询无报错;有数据时分页「共 N 条」N≥1;无数据时空态明确。
---
##### 【P0】【TC-UI-ADMIT-TSK-003】【TP_ADMIT_TSK_011】产品名称筛选
-
前置条件:待分类至少 1 条数据
-
操作步骤:
1.
从首行读取
`${sampleProductName}`
2.
填入产品名称,新增日期与操作日期保持默认,点击「查 询」
3.
断言结果行「产品名称」均包含该关键字
-
自动化断言:规划与 CSV
`ADMIT-TSK-003`
一致
###### 预期结果
产品名称与已填关键字匹配。
---
##### 【P0】【TC-UI-ADMIT-TSK-004】【TP_ADMIT_TSK_015】待分类与已分类切换
-
前置条件:已进入准入任务分配页
-
操作步骤:
1.
记录「待分类」括号数量
`${pendingCount}`
2.
点击「已分类」,断言分页总数等于已分类括号数量;为 0 时为空态
3.
再点「待分类」,断言分页总数等于
`${pendingCount}`
-
自动化断言:规划与 CSV
`ADMIT-TSK-004`
一致
###### 预期结果
两个 Tab 的列表范围与各自计数一致,不串数据。
---
##### 【P1】【TC-UI-ADMIT-TSK-005】【TP_ADMIT_TSK_014】重置恢复默认
-
前置条件:已填入
`${sampleProductName}`
-
操作步骤:
1.
点击「重 置」
2.
断言产品名称等筛选恢复默认
-
自动化断言:规划与 CSV
`ADMIT-TSK-005`
一致
###### 预期结果
筛选恢复默认;列表按默认规则刷新。
---
#### 异常验证点
##### 【P1】【TC-UI-ADMIT-TSK-006】【TP_ADMIT_TSK_019】无匹配结果空态(mock反例)
-
前置条件:当前在待分类
-
操作步骤:
1.
产品名称填入
`__NOT_EXIST_GOODS__99999`
2.
点击「查 询」
3.
断言空态且分页总数为 0
-
自动化断言:规划与 CSV
`ADMIT-TSK-006`
一致
###### 预期结果
无匹配时不报错;总数为 0。
---
### 准入任务分配 · 列表分页
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-TSK-007】【TP_ADMIT_TSK_021】列表核心列完整
-
前置条件:待分类至少 1 条数据
-
操作步骤:
1.
断言表头含准入类型、产品编号、产品名称、规格型号、规格、型号、器械注册人、操作
2.
断言待分类行操作含「分配类型」
-
自动化断言:规划与 CSV
`ADMIT-TSK-007`
一致
###### 预期结果
核心列可见;待分类行可发起分配类型。
---
##### 【P1】【TC-UI-ADMIT-TSK-008】【TP_ADMIT_TSK_022】翻至第 2 页
-
前置条件:待分类总数大于每页条数
-
操作步骤:
1.
记录第 1 页首行产品名称或产品编号
2.
点击页码「2」或「下一页」
3.
断言页码为 2,首行与第 1 页不同
-
自动化断言:规划与 CSV
`ADMIT-TSK-008`
一致
###### 预期结果
翻页成功且数据更换。不足两页则 skip。
---
##### 【P1】【TC-UI-ADMIT-TSK-009】【TP_ADMIT_TSK_036】跳至指定页
-
前置条件:总页数不少于 2,且存在「跳至」
-
操作步骤:
1.
跳至输入
`2`
并回车
2.
断言当前页为 2
-
自动化断言:规划与 CSV
`ADMIT-TSK-009`
一致
###### 预期结果
跳转到第 2 页。无跳至或仅 1 页则 skip。
---
#### 边界验证点
##### 【P1】【TC-UI-ADMIT-TSK-010】【TP_ADMIT_TSK_023】第 1 页上一页不可用
-
前置条件:当前在第 1 页
-
操作步骤:
1.
断言「上一页」禁用,或点击后仍停留在第 1 页
-
自动化断言:规划与 CSV
`ADMIT-TSK-010`
一致
###### 预期结果
第 1 页不能再向前翻。
---
### 准入任务分配 · 分配操作
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-TSK-011】【TP_ADMIT_TSK_027】单行分配类型取消
-
前置条件:待分类至少 1 行含「分配类型」
-
操作步骤:
1.
记录该行产品名称,以及待分类计数
`${pendingCount}`
2.
点击「分配类型」
3.
断言分配层打开
4.
取消或关闭,不确认
5.
断言该行仍在待分类,计数仍为
`${pendingCount}`
-
自动化断言:规划与 CSV
`ADMIT-TSK-011`
一致
###### 预期结果
取消分配不改变分类。本条不点击确定。
---
##### 【P1】【TC-UI-ADMIT-TSK-012】【TP_ADMIT_TSK_024】未勾选时批量分配不可用
-
前置条件:待分类页无勾选行
-
操作步骤:
1.
点击「批量分配」
2.
断言按钮不可用,或提示先选择数据
3.
断言待分类计数不变
-
自动化断言:规划与 CSV
`ADMIT-TSK-012`
一致
###### 预期结果
未勾选不分配任何行。
---
##### 【P0】【TC-UI-ADMIT-TSK-013】【TP_ADMIT_TSK_028】勾选后批量分配取消
-
前置条件:待分类至少 1 条
-
操作步骤:
1.
勾选 1 行,记录待分类计数
2.
点击「批量分配」
3.
若打开分配层或确认框,点取消或关闭
4.
断言该行仍在待分类,计数不变
-
自动化断言:规划与 CSV
`ADMIT-TSK-013`
一致
###### 预期结果
取消批量分配不改变分类。本条不确认分配。
---
#### 异常验证点
##### 【P1】【TC-UI-ADMIT-TSK-014】【TP_ADMIT_TSK_032】已分类行不再按待分类分配
-
前置条件:已分类计数大于 0
-
操作步骤:
1.
切换到「已分类」
2.
断言首行无「分配类型」,或点击后被拒绝且该行仍留在已分类
3.
断言待分类计数不因此增加
-
自动化断言:规划与 CSV
`ADMIT-TSK-014`
一致
###### 预期结果
已分类数据不会被这次操作退回待分类。已分类为 0 则 skip。
---
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 |
**14**
条(P0=7 / P1=7) |
| 来源 | 从 36 条测试点选取查询、分类 Tab、翻页跳至、分配取消 |
| 未纳入自动化 | 未登录/权限、确认分配后的分类回写、未选分类时的提交拦截(依赖分配弹窗字段,扫描未打开该层) |
| 单一职责 | 每条只断言一个核心业务结果 |
testcases/基础管理-准入管理-物料准入单列表-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-准入管理-物料准入单列表 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-准入管理-物料准入单列表-测试点分析-01.md`
**执行 CSV**
:
`testcase/基础管理-准入管理-物料准入单列表-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/dataSync/dataSync/productOrder/zrlist`
**定位器 YAML**
:
`locators/spd/admit-material-list.locator.yaml`
**元素扫描**
:
`data/scan/admit-material-list-elements.json`
(79 项)
**版本**
:2026-09-22
**自动化框架**
:Playwright + TypeScript(规划
`tests/spd/admit-material-list.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:已执行
`auth.setup`
,
`storageState`
有效;测试账号具备「基础设置 → 准入管理 → 物料准入单列表」权限。
**页面约定**
:整页渲染,
**无报表 iframe**
。本页是单据查询,列表行操作是「详情」。
**菜单导航**
:展开「基础设置 → 准入管理」后,点击
`.ant-menu-item`
文案精确为「物料准入单列表」。
**写操作**
:不点击详情里的「通过」确定,避免推进真实审批。
**动态取数约定**
:
1.
默认查询后从首行读取
`${sampleOrderNo}`
、
`${sampleAccessType}`
、
`${sampleProductCount}`
、
`${sampleStatus}`
。
2.
单号筛选使用样本占位,
**禁止写死**
准入单号。
3.
状态 Tab:全部、审批中、已通过、已驳回。
---
## 基础设置 · 准入管理
### 物料准入单列表 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-MLS-001】【TP_ADMIT_MLS_001】菜单进入物料准入单列表
-
前置条件:已登录且具备准入管理权限
-
操作步骤:
1.
按菜单「基础设置 → 准入管理 → 物料准入单列表」进入
2.
断言 URL 含
`/spd/basic/dataSync/dataSync/productOrder/zrlist`
,且不是
`productOrder/list`
3.
断言制单日期、查询、状态 Tab、列表表头可见
-
自动化断言:规划与 CSV
`ADMIT-MLS-001`
及
`tests/spd/admit-material-list.spec.ts`
一致
###### 预期结果
进入物料准入单列表;不误入产品准入单列表。
---
### 物料准入单列表 · 筛选与状态
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-MLS-002】【TP_ADMIT_MLS_009】默认查询列表有数据或空态明确
-
前置条件:已进入物料准入单列表
-
操作步骤:
1.
点击「查 询」并等待列表稳定
2.
断言出现数据行,或「暂无数据」且分页总数为 0
-
自动化断言:规划与 CSV
`ADMIT-MLS-002`
一致
###### 预期结果
查询无报错;有数据时分页「共 N 条」N≥1;无数据时空态明确。
---
##### 【P0】【TC-UI-ADMIT-MLS-003】【TP_ADMIT_MLS_010】按准入单号筛选
-
前置条件:默认查询至少 1 条数据
-
操作步骤:
1.
从首行读取
`${sampleOrderNo}`
2.
若页面有准入单号条件则填入;否则用注册证号或产品名称中首行非空字段
3.
制单日期保持默认,点击「查 询」
4.
断言结果行包含该单号或该关键字
-
自动化断言:规划与 CSV
`ADMIT-MLS-003`
一致
###### 预期结果
结果与已填单号或关键字匹配。列表筛选区没有单号框时,改用首行注册证号,并在用例备注中记录实际字段。
---
##### 【P1】【TC-UI-ADMIT-MLS-004】【TP_ADMIT_MLS_011】重置恢复默认
-
前置条件:已进入物料准入单列表
-
操作步骤:
1.
填入上一条使用的关键字
2.
点击「重 置」
3.
断言筛选恢复默认
-
自动化断言:规划与 CSV
`ADMIT-MLS-004`
一致
###### 预期结果
筛选恢复默认;列表按默认规则刷新。
---
#### 异常验证点
##### 【P1】【TC-UI-ADMIT-MLS-005】【TP_ADMIT_MLS_018】无匹配结果空态(mock反例)
-
前置条件:已进入物料准入单列表
-
操作步骤:
1.
注册证号填入
`__NOT_EXIST_CERT__99999`
2.
点击「查 询」
3.
断言空态且分页总数为 0
-
自动化断言:规划与 CSV
`ADMIT-MLS-005`
一致
###### 预期结果
无匹配时不报错;总数为 0。
---
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-MLS-006】【TP_ADMIT_MLS_013】列表核心列完整
-
前置条件:默认查询至少 1 条数据
-
操作步骤:
1.
断言表头含准入类型、准入单号、进院供应商、二级供应商、产品名称、注册证号、耗材类型、产品条数、状态、操作
-
自动化断言:规划与 CSV
`ADMIT-MLS-006`
一致
###### 预期结果
核心列可见;操作列为「详情」。
---
##### 【P0】【TC-UI-ADMIT-MLS-007】【TP_ADMIT_MLS_012】切换已通过 Tab
-
前置条件:已进入物料准入单列表
-
操作步骤:
1.
点击「已通过」
2.
断言有数据时「状态」列为已通过;计数为 0 时为空态
3.
读取 Tab 括号数量,断言与分页「共 N 条」一致
-
自动化断言:规划与 CSV
`ADMIT-MLS-007`
一致
###### 预期结果
已通过 Tab 的状态列、计数与分页总数一致。
---
### 物料准入单列表 · 单据详情
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-MLS-008】【TP_ADMIT_MLS_020】打开详情后返回
-
前置条件:默认查询至少 1 条数据
-
操作步骤:
1.
记录首行
`${sampleOrderNo}`
、
`${sampleProductCount}`
2.
点击「详情」
3.
断言可见「审批进程」「单据日志」「返 回」
4.
点击「返 回」
5.
断言 URL 仍含
`productOrder/zrlist`
-
自动化断言:规划与 CSV
`ADMIT-MLS-008`
一致
###### 预期结果
进入单据详情并可返回列表。
---
##### 【P0】【TC-UI-ADMIT-MLS-009】【TP_ADMIT_MLS_021】详情产品条数与列表一致
-
前置条件:已打开首行详情,且
`${sampleProductCount}`
为正整数
-
操作步骤:
1.
统计详情明细数据行数(跨页则读详情分页总数)
2.
断言等于列表「产品条数」
`${sampleProductCount}`
-
自动化断言:规划与 CSV
`ADMIT-MLS-009`
一致
###### 预期结果
详情明细条数与列表产品条数一致。
---
##### 【P1】【TC-UI-ADMIT-MLS-010】【TP_ADMIT_MLS_023】审批进程可打开
-
前置条件:已打开单据详情
-
操作步骤:
1.
点击「审批进程」
2.
断言进程层或区域可见
3.
关闭后仍停留在该单据
-
自动化断言:规划与 CSV
`ADMIT-MLS-010`
一致
###### 预期结果
审批进程可查看;单据不被关掉。
---
##### 【P1】【TC-UI-ADMIT-MLS-011】【TP_ADMIT_MLS_026】详情导出不白屏
-
前置条件:已打开单据详情
-
操作步骤:
1.
点击「导 出」
2.
断言出现下载,或出现导出任务/成功提示
3.
断言页面仍为该单据详情,不白屏
-
自动化断言:规划与 CSV
`ADMIT-MLS-011`
一致
###### 预期结果
导出有反馈;详情页仍在。无导出按钮则 skip。
---
#### 异常验证点
##### 【P1】【TC-UI-ADMIT-MLS-012】【TP_ADMIT_MLS_028】详情搜索无匹配(mock反例)
-
前置条件:已打开单据详情
-
操作步骤:
1.
在「请输入产品编码、名称」填入
`__NOT_EXIST_GOODS__99999`
2.
触发搜索
3.
断言明细空态,单据头(审批进程、返回)仍在
-
自动化断言:规划与 CSV
`ADMIT-MLS-012`
一致
###### 预期结果
无匹配时只清空明细,不销毁单据头。
---
##### 【P0】【TC-UI-ADMIT-MLS-013】【TP_ADMIT_MLS_030】已通过单据不确认通过
-
前置条件:已通过 Tab 至少 1 条,并打开其详情
-
操作步骤:
1.
若「通过」不可见或禁用,断言该状态保持已通过后返回
2.
若「通过」可点,点击后出现确认框则点「取 消」
3.
返回列表,断言该单状态仍为已通过
-
自动化断言:规划与 CSV
`ADMIT-MLS-013`
一致
###### 预期结果
本条不把已通过单据再次审批成功。已通过 Tab 无数据则 skip。
---
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 |
**13**
条(P0=7 / P1=6) |
| 来源 | 从 34 条测试点选取可稳定自动化的查询、详情与审批门禁 |
| 未纳入自动化 | 未登录/权限、确认点击「通过」、与物料准入管理的跨页追溯、导出文件内容逐行比对 |
| 单一职责 | 每条只断言一个核心业务结果 |
testcases/基础管理-准入管理-物料准入管理-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-准入管理-物料准入管理 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-准入管理-物料准入管理-测试点分析-01.md`
**执行 CSV**
:
`testcase/基础管理-准入管理-物料准入管理-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/dataSync/dataSync/productApply/ZRlist`
**定位器 YAML**
:
`locators/spd/admit-material.locator.yaml`
**元素扫描**
:
`data/scan/admit-material-elements.json`
(328 项)
**版本**
:2026-09-22
**自动化框架**
:Playwright + TypeScript(规划
`tests/spd/admit-material.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:已执行
`auth.setup`
,
`storageState`
有效;测试账号(凭据见
`.env`
);具备「基础设置 → 准入管理 → 物料准入管理」权限。
**页面约定**
:整页渲染,
**无报表 iframe**
;定位均在
`page`
上。
**菜单导航**
:先点「基础设置」,展开左侧「准入管理」,再点击
`.ant-menu-item`
且文案精确为「物料准入管理」(现网子项不是
`menuitem`
role)。
**写操作**
:本文件不真实执行「生成申请单」「一键生成」「确认作废」「确认关联」,避免改生产准入数据。编辑类只做回填、取消和必填拦截。
**动态取数约定**
:
1.
默认「查询」后从首行读取
`${sampleProductName}`
、
`${sampleSpec}`
、
`${sampleConsumableType}`
、
`${sampleSupplier}`
。
2.
筛选关键字使用样本占位,
**禁止写死**
产品名称、供应商、注册证号。
3.
状态 Tab:全部、待申请、审批中、已通过、已驳回、已作废、生效失败、已生效。无「编辑」的行则编辑类用例 skip。
---
## 基础设置 · 准入管理
### 物料准入管理 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-MAT-001】【TP_ADMIT_MAT_001】菜单进入物料准入管理页
-
前置条件:已登录且具备准入管理权限
-
操作步骤:
1.
按菜单「基础设置 → 准入管理 → 物料准入管理」进入
2.
断言 URL 含
`/spd/basic/dataSync/dataSync/productApply/ZRlist`
3.
断言筛选区、「查 询」、状态 Tab、「关联产品」「生成申请单」「一键生成」「作 废」及列表表头可见
4.
断言当前高亮不是「产品准入申请」或「物料准入单列表」
-
自动化断言:规划与 CSV
`ADMIT-MAT-001`
及
`tests/spd/admit-material.spec.ts`
一致
###### 预期结果
进入物料准入管理页;不误入同组其它准入页;筛选、状态 Tab 与工具栏可见。
---
### 物料准入管理 · 筛选查询
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-MAT-002】【TP_ADMIT_MAT_009】默认查询列表有数据或空态明确
-
前置条件:已进入物料准入管理页
-
操作步骤:
1.
点击「查 询」并等待列表稳定
2.
断言出现数据行,或「暂无数据」且分页总数为 0
-
自动化断言:规划与 CSV
`ADMIT-MAT-002`
一致
###### 预期结果
查询无报错;有数据时分页「共 N 条」N≥1;无数据时空态明确。
---
##### 【P0】【TC-UI-ADMIT-MAT-003】【TP_ADMIT_MAT_013】产品名称筛选
-
前置条件:默认查询至少 1 条数据
-
操作步骤:
1.
从首行读取
`${sampleProductName}`
2.
填入「产品名称」,新增日期保持页面默认,点击「查 询」
3.
断言结果行「产品名称」均包含该关键字
-
自动化断言:规划与 CSV
`ADMIT-MAT-003`
一致
###### 预期结果
查询结果产品名称与已填关键字匹配;无未捕获异常。
---
##### 【P0】【TC-UI-ADMIT-MAT-004】【TP_ADMIT_MAT_012】耗材类型筛选
-
前置条件:默认查询至少 1 条且首行耗材类型非空
-
操作步骤:
1.
从首行读取
`${sampleConsumableType}`
2.
在耗材类型下拉选择该值,点击「查 询」
3.
断言结果行「耗材类型」与所选值一致
-
自动化断言:规划与 CSV
`ADMIT-MAT-004`
一致
###### 预期结果
耗材类型列与所选条件一致。首行类型为空则 skip。
---
##### 【P0】【TC-UI-ADMIT-MAT-005】【TP_ADMIT_MAT_014】名称与耗材类型组合查询
-
前置条件:默认查询至少 1 条数据
-
操作步骤:
1.
读取首行
`${sampleProductName}`
、
`${sampleConsumableType}`
2.
同时填入名称与耗材类型(新增日期保持默认,勿改成单日)
3.
点击「查 询」
4.
断言结果同时满足两个条件
-
自动化断言:规划与 CSV
`ADMIT-MAT-005`
一致
###### 预期结果
组合查询无报错;结果同时满足产品名称与耗材类型。
---
##### 【P1】【TC-UI-ADMIT-MAT-006】【TP_ADMIT_MAT_015】重置恢复默认
-
前置条件:已进入物料准入管理页
-
操作步骤:
1.
填入
`${sampleProductName}`
2.
点击「重 置」
3.
断言产品名称等筛选恢复默认
-
自动化断言:规划与 CSV
`ADMIT-MAT-006`
一致
###### 预期结果
筛选字段恢复默认;列表按默认规则刷新。
---
##### 【P1】【TC-UI-ADMIT-MAT-007】【TP_ADMIT_MAT_016】收起后再展开保留条件
-
前置条件:已进入物料准入管理页
-
操作步骤:
1.
填入
`${sampleProductName}`
2.
点击「收起」,再展开筛选区
3.
断言产品名称仍为已填值
-
自动化断言:规划与 CSV
`ADMIT-MAT-007`
一致
###### 预期结果
收起不丢失已填条件;展开后值仍在。
---
#### 异常验证点
##### 【P1】【TC-UI-ADMIT-MAT-008】【TP_ADMIT_MAT_021】无匹配结果空态(mock反例)
-
前置条件:已进入物料准入管理页
-
操作步骤:
1.
产品名称填入 mock 值
`__NOT_EXIST_GOODS__99999`
2.
点击「查 询」
3.
断言空态或「暂无数据」,分页总数为 0
-
自动化断言:规划与 CSV
`ADMIT-MAT-008`
一致
###### 预期结果
无匹配时不报错;空态明确;总数为 0。
---
### 物料准入管理 · 状态与列表
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-MAT-009】【TP_ADMIT_MAT_028】列表核心列完整
-
前置条件:默认查询至少 1 条数据
-
操作步骤:
1.
点击「查 询」
2.
断言表头含准入类型、产品编号、产品名称、规格型号、器械注册人、单位、耗材类型、默认进院供应商、操作
-
自动化断言:规划与 CSV
`ADMIT-MAT-009`
一致
###### 预期结果
核心列可见;操作列含「详情」「日志」,待申请行另可见「编辑」。
---
##### 【P0】【TC-UI-ADMIT-MAT-010】【TP_ADMIT_MAT_023】切换待申请 Tab
-
前置条件:已进入物料准入管理页
-
操作步骤:
1.
点击状态 Tab「待申请」
2.
断言列表刷新;若有数据,行状态属于待申请(不出现已生效、已作废)
3.
再点「全部」,断言列表不再只限定待申请
-
自动化断言:规划与 CSV
`ADMIT-MAT-010`
一致
###### 预期结果
待申请 Tab 只展示待申请数据;「全部」不额外收窄。计数为 0 时为空态且不报错。
---
##### 【P1】【TC-UI-ADMIT-MAT-011】【TP_ADMIT_MAT_024】待申请 Tab 计数与分页总数一致
-
前置条件:已进入物料准入管理页
-
操作步骤:
1.
读取「待申请」括号内数量
`${tabCount}`
2.
点击该 Tab 并查询稳定
3.
断言分页「共 N 条」的 N 等于
`${tabCount}`
-
自动化断言:规划与 CSV
`ADMIT-MAT-011`
一致
###### 预期结果
Tab 计数与该状态下分页总数一致。
---
#### 异常验证点
##### 【P1】【TC-UI-ADMIT-MAT-012】【TP_ADMIT_MAT_033】未勾选时生成申请单不可用或提示
-
前置条件:已进入物料准入管理页,且当前无勾选行
-
操作步骤:
1.
确认表头复选框与行复选框均未选中
2.
点击「生成申请单」
3.
断言按钮不可用,或出现「请选择」类提示,且列表不新增申请单
-
自动化断言:规划与 CSV
`ADMIT-MAT-012`
一致
###### 预期结果
未勾选不产生申请单。
---
### 物料准入管理 · 详情与编辑
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-MAT-013】【TP_ADMIT_MAT_046】打开详情后返回
-
前置条件:默认查询至少 1 条数据
-
操作步骤:
1.
记录首行
`${sampleProductName}`
2.
点击该行「详情」
3.
断言详情中产品名称、规格型号、注册证号可见,且名称包含
`${sampleProductName}`
4.
点击「返回」
5.
断言回到列表,URL 仍含
`productApply/ZRlist`
-
自动化断言:规划与 CSV
`ADMIT-MAT-013`
一致
###### 预期结果
详情展示该行产品主数据;返回后仍在物料准入管理列表。
---
##### 【P1】【TC-UI-ADMIT-MAT-014】【TP_ADMIT_MAT_051】详情关键字段不可直接改写
-
前置条件:已打开首行详情
-
操作步骤:
1.
断言产品名称等主数据无可用的保存按钮,或输入框为只读
2.
返回列表,断言首行名称仍为
`${sampleProductName}`
-
自动化断言:规划与 CSV
`ADMIT-MAT-014`
一致
###### 预期结果
详情态不能把产品名称改写入库。
---
##### 【P0】【TC-UI-ADMIT-MAT-015】【TP_ADMIT_MAT_047】待申请行编辑回填
-
前置条件:待申请 Tab 至少 1 行含「编辑」
-
操作步骤:
1.
在待申请列表读取首行
`${sampleProductName}`
、
`${sampleSpec}`
2.
点击「编辑」
3.
断言产品名称、规格型号与该行一致
4.
返回且不保存
-
自动化断言:规划与 CSV
`ADMIT-MAT-015`
一致
###### 预期结果
编辑页回填与列表行一致。无「编辑」则 skip。
---
##### 【P1】【TC-UI-ADMIT-MAT-016】【TP_ADMIT_MAT_049】编辑取消不保存
-
前置条件:存在可编辑行
-
操作步骤:
1.
打开编辑,记录原产品名称
2.
将产品名称改为
`${uniqProductName}`
(建议
`AUTO-MAT-${timestamp}`
)后返回或取消,不保存
3.
再次打开编辑,断言名称仍为原值
-
自动化断言:规划与 CSV
`ADMIT-MAT-016`
一致
###### 预期结果
取消后列表与回看均为修改前名称。
---
#### 异常验证点
##### 【P0】【TC-UI-ADMIT-MAT-017】【TP_ADMIT_MAT_052】编辑清空产品名称拦截(mock反例)
-
前置条件:存在可编辑行
-
操作步骤:
1.
打开编辑,将产品名称清空为 mock 空值
2.
点击保存
3.
断言必填提示,页面不关闭
4.
取消后再次打开,断言名称仍为原值
-
自动化断言:规划与 CSV
`ADMIT-MAT-017`
一致
###### 预期结果
保存被拦截;原记录不被写成空。
---
##### 【P1】【TC-UI-ADMIT-MAT-018】【TP_ADMIT_MAT_053】已生效行不提供编辑
-
前置条件:已生效 Tab 计数大于 0
-
操作步骤:
1.
切换到「已生效」
2.
断言首行操作无「编辑」,或点击后保存被拒绝
-
自动化断言:规划与 CSV
`ADMIT-MAT-018`
一致
###### 预期结果
已生效行不能改写成新的产品名称。计数为 0 则 skip。
---
### 物料准入管理 · 关联与作废
#### 功能验证点
##### 【P0】【TC-UI-ADMIT-MAT-019】【TP_ADMIT_MAT_035】关联产品取消不落库
-
前置条件:已进入物料准入管理页
-
操作步骤:
1.
记录当前分页总数
`${sampleTotal}`
与首行默认进院供应商
2.
点击「关联产品」
3.
断言关联层打开
4.
取消或关闭,不确认
5.
断言总数不变,首行供应商不变
-
自动化断言:规划与 CSV
`ADMIT-MAT-019`
一致
###### 预期结果
取消关联不产生申请单,也不改默认进院供应商。
---
##### 【P0】【TC-UI-ADMIT-MAT-020】【TP_ADMIT_MAT_040】作废确认后取消
-
前置条件:待申请至少 1 条可勾选
-
操作步骤:
1.
勾选 1 行,记录其产品名称与当前状态
2.
点击「作 废」
3.
断言出现确认框,含取消与确定
4.
点击「取 消」
5.
断言该行仍在,状态未变为已作废
-
自动化断言:规划与 CSV
`ADMIT-MAT-020`
一致
###### 预期结果
作废需确认;取消后记录仍在。本条不点击确定,避免作废生产数据。
---
##### 【P1】【TC-UI-ADMIT-MAT-021】【TP_ADMIT_MAT_050】打开操作日志后关闭
-
前置条件:默认查询至少 1 条数据
-
操作步骤:
1.
点击首行「日志」
2.
断言出现操作日志层
3.
关闭后断言仍在列表页
-
自动化断言:规划与 CSV
`ADMIT-MAT-021`
一致
###### 预期结果
日志层可打开可关闭;列表数据不变。
---
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 |
**21**
条(P0=12 / P1=9) |
| 来源 | 从 54 条测试点选取可稳定自动化的主路径与关键反向 |
| 未纳入自动化 | 未登录/权限/会话过期、查询接口失败注入、一键生成与确认生成申请单、确认作废、确认关联落库、跨列表追溯 |
| 单一职责 | 每条只断言一个核心业务结果 |
testcases/基础管理-医院资料-公告管理-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-医院资料-公告管理 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-医院资料-公告管理-测试点分析-01.md`
**执行 CSV**
:待生成
`testcase/基础管理-医院资料-公告管理-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/hospital/paltform/notice`
**定位器 YAML**
:
`locators/spd/basic-notice.locator.yaml`
**元素扫描**
:
`data/scan/basic-notice-elements.json`
(82 项)
**版本**
:2026-09-16
**自动化框架**
:Playwright + TypeScript(规划
`tests/spd/basic-notice.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:已执行
`auth.setup`
,
`storageState`
有效;测试账号(凭据见
`.env`
);具备「基础设置 → 医院资料 → 公告管理」权限。
**页面约定**
:整页渲染,
**无报表 iframe**
;定位均在
`page`
上。
**菜单导航**
:先展开「基础设置 → 医院资料」,再
`page.getByRole('menuitem', { name: '公告管理', exact: true })`
。
**写操作用例**
:标题使用
`${uniqNoticeTitle}`
(建议
`AUTO-NTC-${timestamp}`
),用例结束后删除或恢复,禁止写死生产公告标题。
**动态取数约定**
:
1.
打开页面后默认「查询」,从首行读取
`${sampleNoticeTitle}`
、
`${samplePublishScope}`
、
`${samplePublishDate}`
。
2.
筛选条件使用样本占位,
**禁止写死**
业务标题/日期。
3.
发布范围现网选项:全部 / 全院 / 中心库 / 进院供应商。
---
## 基础设置 · 医院资料
### 公告管理 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-BASIC-NTC-001】【TP_BASIC_NTC_001】菜单进入公告管理页
-
前置条件:已登录且具备医院资料权限
-
操作步骤:
1.
按菜单「基础设置 → 医院资料 → 公告管理」进入
2.
断言 URL 含
`/spd/basic/hospital/paltform/notice`
3.
断言筛选区、新增按钮、列表表头可见
-
自动化断言:规划与 CSV
`BASIC-NTC-001`
及
`tests/spd/basic-notice.spec.ts`
一致
###### 预期结果
进入公告管理页;不误入医院信息登记/院区管理/财务月份设置;筛选区与列表可见。
---
### 公告管理 · 筛选查询
#### 功能验证点
##### 【P0】【TC-UI-BASIC-NTC-002】【TP_BASIC_NTC_009】默认查询列表有数据或空态明确
-
前置条件:已进入公告管理页
-
操作步骤:
1.
点击「查 询」并等待列表稳定
2.
断言出现数据行,或「暂无数据」且分页总数为 0
-
自动化断言:规划与 CSV
`BASIC-NTC-002`
一致
###### 预期结果
查询无报错;有数据时分页「共 N 条」N≥1;无数据时空态明确。
---
##### 【P0】【TC-UI-BASIC-NTC-003】【TP_BASIC_NTC_010】公告标题模糊查询
-
前置条件:默认查询至少 1 条数据
-
操作步骤:
1.
从首行读取
`${sampleNoticeTitle}`
2.
填入筛选「公告标题」,点击「查 询」
3.
断言结果行「公告标题」均包含该关键字(或与产品模糊规则一致)
-
自动化断言:规划与 CSV
`BASIC-NTC-003`
一致
###### 预期结果
查询结果标题与已填关键字匹配;无未捕获异常。
---
##### 【P0】【TC-UI-BASIC-NTC-004】【TP_BASIC_NTC_012】发布范围下拉查询
-
前置条件:已进入公告管理页
-
操作步骤:
1.
打开发布范围下拉,选择与首行
`${samplePublishScope}`
相同的选项(勿写死)
2.
点击「查 询」
3.
断言结果行「发布范围」列与所选值一致(选「全部」时不额外收窄)
-
自动化断言:规划与 CSV
`BASIC-NTC-004`
一致
###### 预期结果
下拉选项含全部/全院/中心库/进院供应商;查询结果范围列与条件一致。
---
##### 【P0】【TC-UI-BASIC-NTC-005】【TP_BASIC_NTC_013】标题与范围组合查询
-
前置条件:默认查询至少 1 条数据
-
操作步骤:
1.
读取首行
`${sampleNoticeTitle}`
、
`${samplePublishScope}`
2.
填入标题与范围(发布日期保持页面默认,勿 fallback 单日)
3.
点击「查 询」
4.
断言结果同时满足两个已填条件
-
自动化断言:规划与 CSV
`BASIC-NTC-005`
一致
###### 预期结果
组合查询无报错;结果同时满足标题与发布范围。
---
##### 【P1】【TC-UI-BASIC-NTC-006】【TP_BASIC_NTC_014】快捷区重置恢复默认
-
前置条件:已进入公告管理页
-
操作步骤:
1.
填入
`${sampleNoticeTitle}`
等筛选条件
2.
点击「重 置」
3.
断言标题/范围/日期恢复默认
-
自动化断言:规划与 CSV
`BASIC-NTC-006`
一致
###### 预期结果
筛选字段恢复默认;列表按默认规则刷新。
---
#### 异常验证点
##### 【P1】【TC-UI-BASIC-NTC-007】【TP_BASIC_NTC_020】无匹配结果空态
-
前置条件:已进入公告管理页
-
操作步骤:
1.
公告标题填入
`__NOT_EXIST_NOTICE__99999`
2.
点击「查 询」
3.
断言空态或暂无数据,分页总数为 0
-
自动化断言:规划与 CSV
`BASIC-NTC-007`
一致
###### 预期结果
无匹配时不报错;空态明确;总数为 0。
---
### 公告管理 · 列表分页
#### 功能验证点
##### 【P0】【TC-UI-BASIC-NTC-008】【TP_BASIC_NTC_022】查询后核心列展示
-
前置条件:已进入公告管理页
-
操作步骤:
1.
点击「查 询」
2.
断言表头含公告编号、公告标题、发布范围、发布科室、发布人、操作
-
自动化断言:规划与 CSV
`BASIC-NTC-008`
一致
###### 预期结果
核心列完整;操作列可见「编辑」「删除」。
---
##### 【P1】【TC-UI-BASIC-NTC-009】【TP_BASIC_NTC_025】分页翻至第 2 页
-
前置条件:默认查询总条数大于一页
-
操作步骤:
1.
记录第 1 页首行公告编号
2.
点击页码「2」或「下一页」
3.
断言页码高亮为 2,首行编号与第 1 页不同
-
自动化断言:规划与 CSV
`BASIC-NTC-009`
一致;总条数不足一页则 skip
###### 预期结果
翻页成功;数据更换;筛选条件保持。
---
##### 【P1】【TC-UI-BASIC-NTC-010】【TP_BASIC_NTC_027】跳至指定页
-
前置条件:总页数≥2
-
操作步骤:
1.
在分页「跳至」输入
`2`
并回车
2.
断言当前页为 2
-
自动化断言:规划与 CSV
`BASIC-NTC-010`
一致;无 jumper 或仅 1 页则 skip
###### 预期结果
跳转至指定页;列表刷新为该页数据。
---
### 公告管理 · 新增公告
#### 功能验证点
##### 【P0】【TC-UI-BASIC-NTC-011】【TP_BASIC_NTC_033】打开新增公告弹窗
-
前置条件:已进入公告管理页
-
操作步骤:
1.
点击「新 增」
2.
断言弹窗标题为「新增公告」
3.
断言可见标题、发布范围、置顶、截止日期、富文本、取消、发布
-
自动化断言:规划与 CSV
`BASIC-NTC-011`
一致
###### 预期结果
新增弹窗可见;必填/选填控件齐全;富文本容器
`.ql-editor`
可见。
---
##### 【P1】【TC-UI-BASIC-NTC-012】【TP_BASIC_NTC_039】新增取消不落库
-
前置条件:已进入公告管理页
-
操作步骤:
1.
打开新增,标题填
`${uniqNoticeTitle}`
,内容填简短正文
2.
点击「取 消」
3.
按标题查询,断言无该记录
-
自动化断言:规划与 CSV
`BASIC-NTC-012`
一致
###### 预期结果
弹窗关闭;列表不出现
`${uniqNoticeTitle}`
。
---
##### 【P0】【TC-UI-BASIC-NTC-013】【TP_BASIC_NTC_034】合法必填发布成功
-
前置条件:已进入公告管理页;允许自动化写公告
-
操作步骤:
1.
打开新增,标题
`${uniqNoticeTitle}`
,发布范围选「中心库」,内容写入
`.ql-editor`
2.
点击「发 布」
3.
按标题查询,断言出现该行且发布范围为中心库
4.
后置:删除该测试公告
-
自动化断言:规划与 CSV
`BASIC-NTC-013`
一致;环境禁止写则 skip
###### 预期结果
弹窗关闭;列表出现新记录;字段与提交一致。
---
#### 异常验证点
##### 【P0】【TC-UI-BASIC-NTC-014】【TP_BASIC_NTC_043】标题为空发布拦截
-
前置条件:已进入公告管理页
-
操作步骤:
1.
打开新增,标题留空,填写内容后点「发 布」
2.
断言必填提示出现,弹窗仍打开
-
自动化断言:规划与 CSV
`BASIC-NTC-014`
一致
###### 预期结果
发布被拦截;不落库;弹窗不关闭。
---
##### 【P0】【TC-UI-BASIC-NTC-015】【TP_BASIC_NTC_044】内容为空发布拦截
-
前置条件:已进入公告管理页
-
操作步骤:
1.
打开新增,填写标题,富文本留空,点「发 布」
2.
断言内容必填提示,弹窗仍打开
-
自动化断言:规划与 CSV
`BASIC-NTC-015`
一致
###### 预期结果
发布被拦截;不落库。
---
### 公告管理 · 编辑与删除
#### 功能验证点
##### 【P0】【TC-UI-BASIC-NTC-016】【TP_BASIC_NTC_050】打开编辑公告并回填
-
前置条件:列表至少 1 条数据
-
操作步骤:
1.
点击首行「编辑」
2.
断言弹窗标题为「编辑公告」
3.
断言标题输入框值与该行
`${sampleNoticeTitle}`
一致(允许规范化空白)
-
自动化断言:规划与 CSV
`BASIC-NTC-016`
一致
###### 预期结果
编辑弹窗可见;标题/范围/内容回填正确。
---
##### 【P1】【TC-UI-BASIC-NTC-017】【TP_BASIC_NTC_052】编辑取消不保存
-
前置条件:列表至少 1 条数据
-
操作步骤:
1.
打开首行编辑,记录原标题
2.
将标题改为
`${uniqNoticeTitle}`
后点「取 消」
3.
再次打开编辑,断言标题仍为原值
-
自动化断言:规划与 CSV
`BASIC-NTC-017`
一致
###### 预期结果
取消后列表与回看均为修改前标题。
---
##### 【P0】【TC-UI-BASIC-NTC-018】【TP_BASIC_NTC_057】删除弹出确认框
-
前置条件:列表至少 1 条数据
-
操作步骤:
1.
点击首行「删除」
2.
断言出现确认框(标题含「提示」),可见「取 消」「确 定」
3.
点击「取 消」
4.
断言该行仍在
-
自动化断言:规划与 CSV
`BASIC-NTC-018`
一致
###### 预期结果
删除需二次确认;取消后记录仍在。本条不断言真实删除,避免污染数据。
---
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 |
**18**
条(P0=10 / P1=8) |
| 来源 | 从 63 条测试点选取可稳定自动化的主路径与关键反向 |
| 未纳入自动化 | 未登录/权限(由 auth.setup 覆盖)、发布后跨端可见、删除真实落库、接口失败注入 |
| 单一职责 | 每条只断言一个核心业务结果 |
testcases/基础管理-医院资料-医院信息登记-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-医院资料-医院信息登记 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-医院资料-医院信息登记-测试点分析-01.md`
**执行 CSV**
:待生成
`testcase/基础管理-医院资料-医院信息登记-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/hospital/paltform/info`
**定位器 YAML**
:
`locators/spd/basic-hospital-info.locator.yaml`
**元素扫描**
:
`data/scan/basic-hospital-info-elements.json`
(38 项)
**版本**
:2026-09-16
**自动化框架**
:Playwright + TypeScript(规划
`tests/spd/basic-hospital-info.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:已执行
`auth.setup`
,
`storageState`
有效;测试账号具备「基础设置 → 医院资料 → 医院信息登记」权限。
**页面约定**
:整页渲染,
**无报表 iframe**
。
**菜单导航**
:
`page.getByRole('menuitem', { name: '医院信息登记', exact: true })`
。
**写操作**
:保存前读取原值
`${sampleLinkman}`
/
`${sampleContactWay}`
/
`${sampleShortName}`
,用例结束必须恢复,禁止写死并留下脏数据。
---
## 基础设置 · 医院资料
### 医院信息登记 · 页面进入与查看
#### 功能验证点
##### 【P0】【TC-UI-BASIC-HOS-001】【TP_BASIC_HOS_001】菜单进入医院信息登记页
-
前置条件:已登录且具备医院资料权限
-
操作步骤:
1.
按菜单进入「医院信息登记」
2.
断言 URL 含
`/spd/basic/hospital/paltform/info`
3.
断言可见「编 辑」及医院编码/名称/地址等详情标签
-
自动化断言:规划与 CSV
`BASIC-HOS-001`
及
`tests/spd/basic-hospital-info.spec.ts`
一致
###### 预期结果
进入详情页;不误入公告/院区/财务月份页;查看态「编辑」可见。
---
##### 【P0】【TC-UI-BASIC-HOS-002】【TP_BASIC_HOS_009】查看态只读字段不可改
-
前置条件:已进入医院信息登记且未点编辑
-
操作步骤:
1.
断言医院编码、医院名称、地址区域无可用输入框
2.
断言「保 存」「取 消」不可见
-
自动化断言:规划与 CSV
`BASIC-HOS-002`
一致
###### 预期结果
查看模式下编码/名称/地址只读;不出现保存按钮。
---
##### 【P1】【TC-UI-BASIC-HOS-003】【TP_BASIC_HOS_011】已上传图片可预览
-
前置条件:当前医院已有登录页背景或 logo
-
操作步骤:
1.
点击「预览文件」(背景或 logo 任一可见项)
2.
断言预览打开或新预览层可见
-
自动化断言:规划与 CSV
`BASIC-HOS-003`
一致;均无预览入口则 skip
###### 预期结果
预览可打开;不报错。
---
### 医院信息登记 · 编辑保存
#### 功能验证点
##### 【P0】【TC-UI-BASIC-HOS-004】【TP_BASIC_HOS_015】进入编辑模式
-
前置条件:已进入医院信息登记查看态
-
操作步骤:
1.
点击「编 辑」
2.
断言「保 存」「取 消」可见
3.
断言
`#form_item_linkman`
、
`#form_item_contactWay`
、
`#form_item_anotherName`
可编辑
-
自动化断言:规划与 CSV
`BASIC-HOS-004`
一致
###### 预期结果
进入编辑态;三个可改文本框可输入;编码/名称/地址仍不可改。
---
##### 【P0】【TC-UI-BASIC-HOS-005】【TP_BASIC_HOS_016】编辑态只读字段仍不可改
-
前置条件:已进入编辑模式
-
操作步骤:
1.
点击「编 辑」
2.
断言医院编码、医院名称、地址仍无可用输入框
-
自动化断言:规划与 CSV
`BASIC-HOS-005`
一致
###### 预期结果
编辑模式下系统分配字段保持只读。
---
##### 【P0】【TC-UI-BASIC-HOS-006】【TP_BASIC_HOS_018】取消不保存
-
前置条件:已进入查看态
-
操作步骤:
1.
点击「编 辑」,读取原联系人
`${sampleLinkman}`
2.
将联系人改为
`${uniqLinkman}`
后点「取 消」
3.
断言回到查看态,联系人展示仍为
`${sampleLinkman}`
-
自动化断言:规划与 CSV
`BASIC-HOS-006`
一致
###### 预期结果
取消后不落库;查看态为修改前值。
---
##### 【P0】【TC-UI-BASIC-HOS-007】【TP_BASIC_HOS_017】保存后字段持久化
-
前置条件:已进入查看态;允许写医院资料
-
操作步骤:
1.
记录原联系人
`${sampleLinkman}`
2.
编辑为
`${uniqLinkman}`
并「保 存」
3.
刷新或重新打开本页,断言联系人为
`${uniqLinkman}`
4.
后置:再编辑回
`${sampleLinkman}`
并保存
-
自动化断言:规划与 CSV
`BASIC-HOS-007`
一致;环境禁止写则 skip
###### 预期结果
保存后刷新仍为新值;用例结束恢复原值。
---
#### 异常验证点
##### 【P0】【TC-UI-BASIC-HOS-008】【TP_BASIC_HOS_022】联系人为空保存拦截
-
前置条件:已进入查看态
-
操作步骤:
1.
点击「编 辑」,清空联系人
2.
点击「保 存」
3.
断言必填提示,仍停留编辑态
-
自动化断言:规划与 CSV
`BASIC-HOS-008`
一致
###### 预期结果
保存被拦截;原联系人不被写成空。
---
##### 【P0】【TC-UI-BASIC-HOS-009】【TP_BASIC_HOS_023】联系方式为空保存拦截
-
前置条件:已进入查看态
-
操作步骤:
1.
编辑态清空联系方式后点「保 存」
2.
断言必填提示,编辑态保持
-
自动化断言:规划与 CSV
`BASIC-HOS-009`
一致
###### 预期结果
保存被拦截;联系方式不被清空落库。
---
##### 【P0】【TC-UI-BASIC-HOS-010】【TP_BASIC_HOS_024】医院简称为空保存拦截
-
前置条件:已进入查看态
-
操作步骤:
1.
编辑态清空医院简称后点「保 存」
2.
断言必填提示
-
自动化断言:规划与 CSV
`BASIC-HOS-010`
一致
###### 预期结果
保存被拦截;简称不被写成空。
---
### 医院信息登记 · 图片上传
#### 功能验证点
##### 【P1】【TC-UI-BASIC-HOS-011】【TP_BASIC_HOS_030】编辑态存在背景与 logo 上传控件
-
前置条件:已进入查看态
-
操作步骤:
1.
点击「编 辑」
2.
断言存在登录页背景、医院 logo 对应
`input[type=file]`
(
`loginBgUploadInput`
/
`logoUploadInput`
)
3.
点「取 消」,不实际上传
-
自动化断言:规划与 CSV
`BASIC-HOS-011`
一致
###### 预期结果
编辑态两个上传控件可定位;本条不强制替换线上图片。
---
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 |
**11**
条(P0=9 / P1=2) |
| 来源 | 从 38 条测试点选取可稳定自动化项 |
| 未纳入自动化 | 真实换登录页背景/logo(易污染环境)、登录页视觉生效、超限文件二进制、未登录 |
| 数据隔离 | 保存用例必须恢复原联系人 |
testcases/基础管理-医院资料-财务月份设置-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-医院资料-财务月份设置 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-医院资料-财务月份设置-测试点分析-01.md`
**执行 CSV**
:待生成
`testcase/基础管理-医院资料-财务月份设置-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/hospital/balance/month`
**定位器 YAML**
:
`locators/spd/basic-finance-month.locator.yaml`
**元素扫描**
:
`data/scan/basic-finance-month-elements.json`
(43 项)
**版本**
:2026-09-16
**自动化框架**
:Playwright + TypeScript(规划
`tests/spd/basic-finance-month.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:已执行
`auth.setup`
,
`storageState`
有效;测试账号具备「基础设置 → 医院资料 → 财务月份设置」权限。
**页面约定**
:整页渲染,
**无报表 iframe**
;本页分页无跳至输入。
**菜单导航**
:
`page.getByRole('menuitem', { name: '财务月份设置', exact: true })`
。
**写操作**
:仅允许改「当前月份」行的自动结算日期。保存前读取
`${sampleAutoSettleDate}`
,用例结束必须恢复,禁止写死日期并留下脏数据。
**动态取数约定**
:
1.
默认查询后,从「当前月份」行读取
`${sampleFinanceMonth}`
、
`${sampleStartDate}`
、
`${sampleEndDate}`
、
`${sampleAutoSettleDate}`
。
2.
筛选条件使用样本占位,
**禁止写死**
财务月份。
3.
「修改」只出现在当前月份行;历史月份无修改入口。
---
## 基础设置 · 医院资料
### 财务月份设置 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-BASIC-FMN-001】【TP_BASIC_FMN_001】菜单进入财务月份设置页
-
前置条件:已登录且具备医院资料权限
-
操作步骤:
1.
按菜单「基础设置 → 医院资料 → 财务月份设置」进入
2.
断言 URL 含
`/spd/basic/hospital/balance/month`
3.
断言筛选区(
`#form_item_settleMonthDate`
)、查询/重置、列表列头可见
-
自动化断言:规划与 CSV
`BASIC-FMN-001`
及
`tests/spd/basic-finance-month.spec.ts`
一致
###### 预期结果
进入财务月份设置页;不误入公告/医院信息/院区页;筛选与列表可见。
---
### 财务月份设置 · 筛选查询
#### 功能验证点
##### 【P0】【TC-UI-BASIC-FMN-002】【TP_BASIC_FMN_009】默认查询列表有数据或空态明确
-
前置条件:已进入财务月份设置页
-
操作步骤:
1.
点击「查 询」并等待列表稳定
2.
断言出现数据行,或「暂无数据」且分页总数为 0
-
自动化断言:规划与 CSV
`BASIC-FMN-002`
一致
###### 预期结果
查询无报错;有数据时分页「共 N 条」N≥1;无数据时空态明确。
---
##### 【P0】【TC-UI-BASIC-FMN-003】【TP_BASIC_FMN_010】按财务月份筛选
-
前置条件:默认查询至少 1 条数据
-
操作步骤:
1.
从首行或当前月份行读取
`${sampleFinanceMonth}`
2.
在
`#form_item_settleMonthDate`
选择该月份,点击「查 询」
3.
断言结果行「财务月份」均等于该月份(或与产品筛选规则一致)
-
自动化断言:规划与 CSV
`BASIC-FMN-003`
一致
###### 预期结果
结果仅含所选财务月份;无未捕获异常。
---
##### 【P1】【TC-UI-BASIC-FMN-004】【TP_BASIC_FMN_011】重置恢复默认
-
前置条件:已按财务月份筛选
-
操作步骤:
1.
选择
`${sampleFinanceMonth}`
并查询
2.
点击「重 置」
3.
断言月份筛选恢复默认,列表按默认规则刷新
-
自动化断言:规划与 CSV
`BASIC-FMN-004`
一致
###### 预期结果
重置后筛选清空或回到默认;列表可再查询。
---
### 财务月份设置 · 列表与状态
#### 功能验证点
##### 【P0】【TC-UI-BASIC-FMN-005】【TP_BASIC_FMN_017】列表核心列完整
-
前置条件:默认查询至少 1 条数据
-
操作步骤:
1.
断言表头包含财务月份、开始日期、结束日期、自动结算日期、状态、操作
-
自动化断言:规划与 CSV
`BASIC-FMN-005`
一致
###### 预期结果
核心列均可见,不缺「状态」「操作」。
---
##### 【P0】【TC-UI-BASIC-FMN-006】【TP_BASIC_FMN_018】仅当前月份行可修改
-
前置条件:列表同时存在当前月份与历史月份(若仅一行当前月份则只断言该行)
-
操作步骤:
1.
定位状态为「当前月份」的行,断言操作列可见「修 改」(
`modifyBtn`
)
2.
对「历史月份」行断言无「修 改」或操作为「--」
-
自动化断言:规划与 CSV
`BASIC-FMN-006`
一致;无历史月份则只校验当前月份入口
###### 预期结果
可修改入口只出现在当前月份行。
---
##### 【P1】【TC-UI-BASIC-FMN-007】【TP_BASIC_FMN_019】当前月份至多一行
-
前置条件:默认查询已出列表
-
操作步骤:
1.
统计状态为「当前月份」的行数
2.
断言行数 ≤ 1
-
自动化断言:规划与 CSV
`BASIC-FMN-007`
一致
###### 预期结果
同一时点至多一行「当前月份」。
---
#### 异常验证点
##### 【P1】【TC-UI-BASIC-FMN-008】【TP_BASIC_FMN_022】历史月份无法进入编辑
-
前置条件:列表至少 1 条历史月份
-
操作步骤:
1.
对历史月份行尝试点击操作区
2.
断言不出现行内「保 存」「取 消」,自动结算日期仍为文本
-
自动化断言:规划与 CSV
`BASIC-FMN-008`
一致;无历史月份则 skip
###### 预期结果
历史月份不能改开始/结束/自动结算日期。
---
### 财务月份设置 · 当前月份修改
#### 功能验证点
##### 【P0】【TC-UI-BASIC-FMN-009】【TP_BASIC_FMN_024】修改进入行内编辑
-
前置条件:存在状态为「当前月份」的行
-
操作步骤:
1.
点击该行「修 改」
2.
断言出现「保 存」「取 消」
3.
断言自动结算日期变为日期框(
`autoSettleDateInput`
)
-
自动化断言:规划与 CSV
`BASIC-FMN-009`
一致
###### 预期结果
进入行内编辑;仅自动结算日可改。
---
##### 【P0】【TC-UI-BASIC-FMN-010】【TP_BASIC_FMN_025】编辑态开始结束日期只读
-
前置条件:已进入当前月份行内编辑
-
操作步骤:
1.
点击「修 改」
2.
断言开始日期、结束日期无可用输入框
3.
断言仅
`autoSettleDateInput`
可编辑
4.
点击「取 消」退出
-
自动化断言:规划与 CSV
`BASIC-FMN-010`
一致
###### 预期结果
开始/结束日期保持只读;账期区间不被改写。
---
##### 【P0】【TC-UI-BASIC-FMN-011】【TP_BASIC_FMN_027】取消不保存自动结算日
-
前置条件:存在当前月份行
-
操作步骤:
1.
读取
`${sampleAutoSettleDate}`
2.
点「修 改」,将自动结算日改为当月区间内另一天
`${uniqAutoSettleDate}`
3.
点击「取 消」
4.
断言该行自动结算日仍为
`${sampleAutoSettleDate}`
-
自动化断言:规划与 CSV
`BASIC-FMN-011`
一致
###### 预期结果
取消后不落库;日期恢复修改前值。
---
##### 【P0】【TC-UI-BASIC-FMN-012】【TP_BASIC_FMN_026】保存自动结算日期持久化
-
前置条件:存在当前月份行;允许写财务月份
-
操作步骤:
1.
记录
`${sampleAutoSettleDate}`
、
`${sampleStartDate}`
、
`${sampleEndDate}`
2.
将自动结算日改为区间内另一天
`${uniqAutoSettleDate}`
并「保 存」
3.
刷新或重新查询,断言该行自动结算日为
`${uniqAutoSettleDate}`
4.
后置:再改为
`${sampleAutoSettleDate}`
并保存
-
自动化断言:规划与 CSV
`BASIC-FMN-012`
一致;环境禁止写则 skip
###### 预期结果
保存后刷新仍为新日期;用例结束恢复原值。
---
#### 异常验证点
##### 【P0】【TC-UI-BASIC-FMN-013】【TP_BASIC_FMN_031】自动结算日为空拦截
-
前置条件:存在当前月份行
-
操作步骤:
1.
点「修 改」,清空
`autoSettleDateInput`
2.
点击「保 存」
3.
断言必填或非法提示,行上日期仍为
`${sampleAutoSettleDate}`
-
自动化断言:规划与 CSV
`BASIC-FMN-013`
一致
###### 预期结果
保存被拦截;原日期不被写成空。
---
##### 【P1】【TC-UI-BASIC-FMN-014】【TP_BASIC_FMN_032】自动结算日超出当月区间拦截
-
前置条件:存在当前月份行且能读到开始/结束日
-
操作步骤:
1.
点「修 改」,将日期改为早于
`${sampleStartDate}`
或晚于
`${sampleEndDate}`
2.
点击「保 存」
3.
断言拒绝保存并提示,原日期不变
4.
点「取 消」退出
-
自动化断言:规划与 CSV
`BASIC-FMN-014`
一致;日期控件无法选出区间外日期则 skip 并记录产品限制
###### 预期结果
超出账期区间时拒绝保存;不脏写。
---
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 |
**14**
条(P0=10 / P1=4) |
| 来源 | 从 38 条测试点选取可稳定自动化的主路径与关键反向 |
| 未纳入自动化 | 未登录/权限、自动结算任务调度联调、查询接口失败注入、最早/最晚月份边界 |
| 数据隔离 | 保存用例必须恢复原自动结算日 |
| 单一职责 | 每条只断言一个核心业务结果 |
testcases/基础管理-医院资料-院区管理-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-医院资料-院区管理 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-医院资料-院区管理-测试点分析-01.md`
**执行 CSV**
:待生成
`testcase/基础管理-医院资料-院区管理-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/hospital/paltform/area`
**定位器 YAML**
:
`locators/spd/basic-branch.locator.yaml`
**元素扫描**
:
`data/scan/basic-branch-elements.json`
(60 项)
**版本**
:2026-09-16
**自动化框架**
:Playwright + TypeScript(规划
`tests/spd/basic-branch.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:已执行
`auth.setup`
,
`storageState`
有效;测试账号具备「基础设置 → 医院资料 → 院区管理」权限。
**页面约定**
:整页渲染,
**无报表 iframe**
;院区名称框即时或回车过滤,
**无独立「查询」「重置」按钮**
。
**菜单导航**
:
`page.getByRole('menuitem', { name: '院区管理', exact: true })`
。
**写操作**
:院区名称使用
`${uniqCampusName}`
(建议
`AUTO-BRN-${timestamp}`
),用例结束后停用/恢复或按环境约定清理,禁止写死生产院区名称。
**动态取数约定**
:
1.
打开页面后从首行读取
`${sampleCampusName}`
、
`${sampleCampusId}`
、
`${sampleCampusAddress}`
、
`${sampleCampusStatus}`
。
2.
搜索关键字使用样本占位,
**禁止写死**
院区名称。
3.
新增弹窗无院区编号、无启用云仓;编辑弹窗额外有
`#form_item_id`
与启用云仓;新增状态文案为停用/启用,编辑为禁用/启用。
---
## 基础设置 · 医院资料
### 院区管理 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-BASIC-BRN-001】【TP_BASIC_BRN_001】菜单进入院区管理页
-
前置条件:已登录且具备医院资料权限
-
操作步骤:
1.
按菜单「基础设置 → 医院资料 → 院区管理」进入
2.
断言 URL 含
`/spd/basic/hospital/paltform/area`
3.
断言「新 增」、院区名称搜索框(
`campusNameInput`
)、列表列头可见
4.
断言页面无独立「查 询」「重 置」按钮
-
自动化断言:规划与 CSV
`BASIC-BRN-001`
及
`tests/spd/basic-branch.spec.ts`
一致
###### 预期结果
进入院区管理页;不误入公告/医院信息/财务月份页;搜索框与新增可见,无查询/重置。
---
### 院区管理 · 列表搜索
#### 功能验证点
##### 【P0】【TC-UI-BASIC-BRN-002】【TP_BASIC_BRN_009】默认列出院区或空态明确
-
前置条件:已进入院区管理页
-
操作步骤:
1.
等待列表稳定
2.
断言出现数据行,或「暂无数据」且分页总数为 0
-
自动化断言:规划与 CSV
`BASIC-BRN-002`
一致
###### 预期结果
加载无报错;有数据时分页「共 N 条」N≥1;无数据时空态明确。
---
##### 【P0】【TC-UI-BASIC-BRN-003】【TP_BASIC_BRN_010】院区名称搜索过滤
-
前置条件:默认列表至少 1 条数据
-
操作步骤:
1.
从首行读取
`${sampleCampusName}`
2.
在
`campusNameInput`
填入该关键字(即时过滤或回车,以现网为准)
3.
断言结果行「院区名称」均包含该关键字
-
自动化断言:规划与 CSV
`BASIC-BRN-003`
一致
###### 预期结果
过滤结果名称与已填关键字匹配;无未捕获异常。
---
##### 【P0】【TC-UI-BASIC-BRN-004】【TP_BASIC_BRN_011】列表核心列完整
-
前置条件:默认列表至少 1 条数据
-
操作步骤:
1.
断言表头包含序号、院区编号、院区名称、院区地址、状态、启用云仓、操作
-
自动化断言:规划与 CSV
`BASIC-BRN-004`
一致
###### 预期结果
核心列均可见,操作列含「编 辑」。
---
##### 【P1】【TC-UI-BASIC-BRN-005】【TP_BASIC_BRN_015】清空搜索恢复全量
-
前置条件:已用
`${sampleCampusName}`
过滤
-
操作步骤:
1.
记录过滤后条数
2.
清空
`campusNameInput`
并等待列表刷新
3.
断言条数回到未过滤的默认集合(或不少于过滤后条数)
-
自动化断言:规划与 CSV
`BASIC-BRN-005`
一致
###### 预期结果
清空后列表恢复默认集合。
---
#### 异常验证点
##### 【P1】【TC-UI-BASIC-BRN-006】【TP_BASIC_BRN_018】搜索无匹配空态
-
前置条件:已进入院区管理页
-
操作步骤:
1.
在院区名称框输入不存在关键字
`${uniqNoMatchCampus}`
(建议
`NO-MATCH-BRN-${timestamp}`
)
2.
断言「暂无数据」且分页总数为 0
-
自动化断言:规划与 CSV
`BASIC-BRN-006`
一致
###### 预期结果
无匹配时空态明确,不白屏。
---
### 院区管理 · 新增院区
#### 功能验证点
##### 【P0】【TC-UI-BASIC-BRN-007】【TP_BASIC_BRN_020】打开新增院区弹窗
-
前置条件:已进入院区管理页
-
操作步骤:
1.
点击「新 增」
2.
断言弹窗标题为「新增院区」
3.
断言可见院区名称、所在地区、详细地址、主院区标志、状态、取消/确定
4.
断言无
`#form_item_id`
、无启用云仓
5.
点击「取 消」关闭
-
自动化断言:规划与 CSV
`BASIC-BRN-007`
一致
###### 预期结果
新增弹窗字段完整;不含院区编号与启用云仓。
---
##### 【P0】【TC-UI-BASIC-BRN-008】【TP_BASIC_BRN_025】新增取消不落库
-
前置条件:已进入院区管理页
-
操作步骤:
1.
记录当前分页总数
`${sampleTotal}`
2.
打开新增,填写名称
`${uniqCampusName}`
后点「取 消」
3.
断言列表总数不变,且无该名称行
-
自动化断言:规划与 CSV
`BASIC-BRN-008`
一致
###### 预期结果
取消后不新增院区。
---
##### 【P0】【TC-UI-BASIC-BRN-009】【TP_BASIC_BRN_021】合法必填新增成功
-
前置条件:允许写院区;名称使用
`${uniqCampusName}`
-
操作步骤:
1.
打开新增,填写名称、所在地区、详细地址,主院区选「否」,状态选「启用」
2.
点击「确 定」
3.
断言弹窗关闭,列表出现该名称行且字段一致
4.
后置:按环境约定停用或清理该院区,避免污染主数据
-
自动化断言:规划与 CSV
`BASIC-BRN-009`
一致;环境禁止写则 skip
###### 预期结果
新增成功且列表可见;用例结束清理或停用,不留生产脏数据。
---
#### 异常验证点
##### 【P0】【TC-UI-BASIC-BRN-010】【TP_BASIC_BRN_029】院区名称为空拦截
-
前置条件:已打开新增弹窗
-
操作步骤:
1.
名称留空,补齐地区与地址后点「确 定」
2.
断言必填提示,弹窗仍在,列表无新行
-
自动化断言:规划与 CSV
`BASIC-BRN-010`
一致
###### 预期结果
确定被拦截;不落库。
---
##### 【P0】【TC-UI-BASIC-BRN-011】【TP_BASIC_BRN_030】所在地区为空拦截
-
前置条件:已打开新增弹窗
-
操作步骤:
1.
填写名称与地址,不选所在地区,点「确 定」
2.
断言必填提示,弹窗仍在
-
自动化断言:规划与 CSV
`BASIC-BRN-011`
一致
###### 预期结果
确定被拦截;不落库。
---
##### 【P0】【TC-UI-BASIC-BRN-012】【TP_BASIC_BRN_031】详细地址为空拦截
-
前置条件:已打开新增弹窗
-
操作步骤:
1.
填写名称并选择地区,地址留空,点「确 定」
2.
断言必填提示,弹窗仍在
-
自动化断言:规划与 CSV
`BASIC-BRN-012`
一致
###### 预期结果
确定被拦截;不落库。
---
### 院区管理 · 编辑院区
#### 功能验证点
##### 【P0】【TC-UI-BASIC-BRN-013】【TP_BASIC_BRN_037】打开编辑弹窗并回填
-
前置条件:列表至少 1 条数据
-
操作步骤:
1.
从首行读取
`${sampleCampusId}`
、
`${sampleCampusName}`
、
`${sampleCampusAddress}`
2.
点击「编 辑」
3.
断言弹窗标题为「编辑院区」
4.
断言
`#form_item_id`
等于
`${sampleCampusId}`
,名称/地址回填正确
5.
断言额外可见「启用云仓」
6.
点击「取 消」
-
自动化断言:规划与 CSV
`BASIC-BRN-013`
一致
###### 预期结果
编辑弹窗回填正确;相对新增多出院区编号与启用云仓。
---
##### 【P0】【TC-UI-BASIC-BRN-014】【TP_BASIC_BRN_038】编辑态院区编号不可换号
-
前置条件:已打开首行编辑
-
操作步骤:
1.
断言
`#form_item_id`
可见且值等于列表「院区编号」
2.
若编号只读则直接断言 disabled/readonly;若可输入则改写后点确定,刷新后编号仍为原值
3.
未改其它字段时点「取 消」
-
自动化断言:规划与 CSV
`BASIC-BRN-014`
一致
###### 预期结果
院区编号与列表一致;保存后编号不变。
---
##### 【P1】【TC-UI-BASIC-BRN-015】【TP_BASIC_BRN_042】编辑取消不保存
-
前置条件:列表至少 1 条数据
-
操作步骤:
1.
打开首行编辑,记录原名称
2.
将名称改为
`${uniqCampusName}`
后点「取 消」
3.
再次打开编辑,断言名称仍为原值
-
自动化断言:规划与 CSV
`BASIC-BRN-015`
一致
###### 预期结果
取消后列表与回看均为修改前名称。
---
##### 【P1】【TC-UI-BASIC-BRN-016】【TP_BASIC_BRN_040】编辑状态为禁用启用
-
前置条件:已打开编辑弹窗
-
操作步骤:
1.
断言状态选项文案为「禁用 / 启用」(不是新增弹窗的「停用 / 启用」)
2.
点「取 消」,不改状态
-
自动化断言:规划与 CSV
`BASIC-BRN-016`
一致
###### 预期结果
编辑态状态文案与新增不同;本条不真实切换生产院区状态。
---
##### 【P1】【TC-UI-BASIC-BRN-017】【TP_BASIC_BRN_041】编辑可见启用云仓
-
前置条件:已打开编辑弹窗
-
操作步骤:
1.
断言「启用云仓」单选「是 / 否」可见
2.
点「取 消」,不改云仓标志
-
自动化断言:规划与 CSV
`BASIC-BRN-017`
一致
###### 预期结果
编辑可看到启用云仓;本条不真实改生产院区云仓开关。
---
#### 异常验证点
##### 【P0】【TC-UI-BASIC-BRN-018】【TP_BASIC_BRN_045】编辑清空必填拦截
-
前置条件:列表至少 1 条数据
-
操作步骤:
1.
打开首行编辑,清空院区名称后点「确 定」
2.
断言必填提示,弹窗仍在
3.
点「取 消」后再打开,断言名称仍为原值
-
自动化断言:规划与 CSV
`BASIC-BRN-018`
一致
###### 预期结果
确定被拦截;原记录不被写成空。
---
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 |
**18**
条(P0=13 / P1=5) |
| 来源 | 从 50 条测试点选取可稳定自动化的主路径与关键反向 |
| 未纳入自动化 | 未登录/权限、主院区全局唯一、禁用后下游不可选、云仓能力联调、真实改生产院区状态 |
| 数据隔离 | 新增必须用唯一名称并清理/停用;编辑不改生产主数据 |
| 单一职责 | 每条只断言一个核心业务结果 |
testcases/基础管理-厂商管理-供应商节假日管理-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-厂商管理-供应商节假日管理 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-厂商管理-供应商节假日管理-测试点分析-01.md`
**执行 CSV**
:
`testcase/基础管理-厂商管理-供应商节假日管理-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/mfrs/basic/prov/holiday`
**定位器 YAML**
:
`locators/spd/vendor-holiday.locator.yaml`
**元素扫描**
:
`data/scan/vendor-holiday-elements.json`
(80 项)
**关联规范**
:
`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-VENDOR-010.md`
**版本**
:2026-09-30
**自动化框架**
:Playwright + TypeScript(
`tests/spd/vendor-holiday.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:已执行
`auth.setup`
,
`storageState`
有效;测试账号具备「基础设置 → 厂商管理 → 供应商节假日管理」权限。
**页面约定**
:整页渲染,
**无报表 iframe**
。
**写操作**
:左侧新增只打开后取消;不批量删除真实数据。
**动态取数**
:左侧首行读取
`${sampleHolidayName}`
/年度;mock:
`__NOT_EXIST_ORDER__99999`
。
---
## 基础设置 · 厂商管理
### 供应商节假日管理 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-HLD-001】【TP_VENDOR_HLD_001】菜单进入供应商节假日管理页
-
前置条件:已登录且具备厂商管理权限
-
操作步骤:
1.
按菜单进入供应商节假日管理
2.
断言 URL 含
`prov/holiday`
3.
断言可见节假日主区与新增
-
自动化断言:与 CSV
`VENDOR-HLD-001`
及
`tests/spd/vendor-holiday.spec.ts`
一致
###### 预期结果
进入供应商节假日管理页。
---
### 供应商节假日管理 · 左右分栏
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-HLD-002】【TP_VENDOR_HLD_009】选中左侧节假日展示详情
-
前置条件:左侧有数据
-
操作步骤:
1.
点击左侧首行
2.
断言默认假日详情或自定义列表区可见
-
自动化断言:与 CSV
`VENDOR-HLD-002`
及
`tests/spd/vendor-holiday.spec.ts`
一致
###### 预期结果
详情联动成功。
---
#### 异常验证点
##### 【P1】【TC-UI-VENDOR-HLD-003】【TP_VENDOR_HLD_015】左侧搜索无匹配空态(mock反例)
-
前置条件:已进入供应商节假日管理页
-
操作步骤:
1.
左侧搜索框填 mock 并回车
2.
断言左侧列表空态
-
自动化断言:与 CSV
`VENDOR-HLD-003`
及
`tests/spd/vendor-holiday.spec.ts`
一致
###### 预期结果
无匹配空态明确。
---
### 供应商节假日管理 · 维护
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-HLD-004】【TP_VENDOR_HLD_011】左侧新增取消
-
前置条件:已进入供应商节假日管理页
-
操作步骤:
1.
点击新增
2.
取消/关闭不保存
3.
断言仍停留本页且无异常
-
自动化断言:与 CSV
`VENDOR-HLD-004`
及
`tests/spd/vendor-holiday.spec.ts`
一致
###### 预期结果
取消不落库。
---
### 供应商节假日管理 · 左右分栏
#### 功能验证点
##### 【P1】【TC-UI-VENDOR-HLD-005】【TP_VENDOR_HLD_012】自定义节假日列表区可见
-
前置条件:已进入供应商节假日管理页
-
操作步骤:
1.
选中左侧行
2.
断言「供应商自定义节假日列表」区域可见(可为空态)
-
自动化断言:与 CSV
`VENDOR-HLD-005`
及
`tests/spd/vendor-holiday.spec.ts`
一致
###### 预期结果
自定义区可见。
---
### 供应商节假日管理 · 维护
#### 异常验证点
##### 【P0】【TC-UI-VENDOR-HLD-006】【TP_VENDOR_HLD_016】结束早于开始日期拦截
-
前置条件:已进入供应商节假日管理页
-
操作步骤:
1.
打开新增/编辑,结束日期早于开始日期尝试保存
2.
断言拒绝保存并提示
-
自动化断言:本条以手工/后续扩展为主;当前冒烟未覆盖
###### 预期结果
非法日期被拦截。
---
#### 边界验证点
##### 【P2】【TC-UI-VENDOR-HLD-007】【TP_VENDOR_HLD_015】开始结束为同一天
-
前置条件:已进入供应商节假日管理页
-
操作步骤:
1.
打开新增/编辑,开始与结束日期选同一天尝试保存(或仅校验控件)
2.
断言允许保存或明确提示规则(按产品规则),不报错白屏
-
自动化断言:本条以手工/后续扩展为主;当前冒烟未覆盖
###### 预期结果
同日区间规则明确。
---
### 供应商节假日管理 · 左右分栏
#### 集成验证点
##### 【P1】【TC-UI-VENDOR-HLD-008】【TP_VENDOR_HLD_018】进院供应商主数据一致
-
前置条件:已进入供应商节假日管理页
-
操作步骤:
1.
在自定义列表抽样进院供应商(若有数据)
2.
断言可在厂商/供应商主数据中找到对应记录
-
自动化断言:本条以手工/后续扩展为主;当前冒烟未覆盖
###### 预期结果
自定义节假日供应商与主数据一致。
testcases/基础管理-厂商管理-供应商资质管理-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-厂商管理-供应商资质管理 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-厂商管理-供应商资质管理-测试点分析-01.md`
**执行 CSV**
:
`testcase/基础管理-厂商管理-供应商资质管理-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/mfrs/basic/qcManage`
**定位器 YAML**
:
`locators/spd/vendor-qual.locator.yaml`
**元素扫描**
:
`data/scan/vendor-qual-elements.json`
(99 项)
**关联规范**
:
`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-VENDOR-002.md`
**版本**
:2026-09-30
**自动化框架**
:Playwright + TypeScript(
`tests/spd/vendor-qual.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:已执行
`auth.setup`
,
`storageState`
有效;测试账号具备「基础设置 → 厂商管理 → 供应商资质管理」权限。
**页面约定**
:整页渲染,
**无报表 iframe**
。
**写操作**
:本批只读:查看打开后关闭;不确认导出下载、不改证件。
**动态取数**
:证件效期提醒 Tab 首行读取
`${sampleHospitalSupplier}`
;mock:
`__NOT_EXIST_SUPPLIER__99999`
。
---
## 基础设置 · 厂商管理
### 供应商资质管理 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-QUL-001】【TP_VENDOR_QUL_001】菜单进入供应商资质管理页
-
前置条件:已登录且具备厂商管理权限
-
操作步骤:
1.
按菜单「基础设置 → 厂商管理 → 供应商资质管理」进入
2.
断言 URL 含
`/spd/basic/mfrs/basic/qcManage`
3.
断言可见「查 询」「重 置」及证件效期提醒相关入口
-
自动化断言:与 CSV
`VENDOR-QUL-001`
及
`tests/spd/vendor-qual.spec.ts`
一致
###### 预期结果
进入供应商资质管理;不误入厂商查询。
---
### 供应商资质管理 · 筛选与 Tab
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-QUL-002】【TP_VENDOR_QUL_009】默认查询列表有数据或空态明确
-
前置条件:已进入供应商资质管理页
-
操作步骤:
1.
点击「查 询」并等待列表稳定
2.
断言出现数据行或空态明确
-
自动化断言:与 CSV
`VENDOR-QUL-002`
及
`tests/spd/vendor-qual.spec.ts`
一致
###### 预期结果
查询无报错;有数据时分页 N≥1。
---
##### 【P0】【TC-UI-VENDOR-QUL-003】【TP_VENDOR_QUL_009】切换授权链路效期预警 Tab
-
前置条件:已进入供应商资质管理页
-
操作步骤:
1.
点击「授权链路效期预警」
2.
断言列表有数据或空态明确
-
自动化断言:与 CSV
`VENDOR-QUL-003`
及
`tests/spd/vendor-qual.spec.ts`
一致
###### 预期结果
Tab 切换成功,列表字段可随 Tab 变化。
---
##### 【P0】【TC-UI-VENDOR-QUL-004】【TP_VENDOR_QUL_010】近三个月到期计数一致
-
前置条件:已进入供应商资质管理页
-
操作步骤:
1.
切换「近三个月到期」(或等价文案)
2.
若可读到括号/冒号计数,断言等于分页「共 N 条」
-
自动化断言:与 CSV
`VENDOR-QUL-004`
及
`tests/spd/vendor-qual.spec.ts`
一致
###### 预期结果
计数与分页一致(可读时)。
---
##### 【P0】【TC-UI-VENDOR-QUL-005】【TP_VENDOR_QUL_011】按进院供应商筛选
-
前置条件:证件效期提醒至少 1 条且进院供应商非空
-
操作步骤:
1.
从首行读取
`${sampleHospitalSupplier}`
取关键字
2.
在进院供应商名称填入关键字并「查 询」
3.
断言结果行「进院供应商」包含关键字
-
自动化断言:与 CSV
`VENDOR-QUL-005`
及
`tests/spd/vendor-qual.spec.ts`
一致
###### 预期结果
进院供应商列与条件一致。
---
##### 【P1】【TC-UI-VENDOR-QUL-006】【TP_VENDOR_QUL_011】重置恢复默认
-
前置条件:已进入供应商资质管理页
-
操作步骤:
1.
填写筛选条件后点击「重 置」
2.
断言列表按默认规则刷新
-
自动化断言:与 CSV
`VENDOR-QUL-006`
及
`tests/spd/vendor-qual.spec.ts`
一致
###### 预期结果
筛选恢复默认。
---
#### 异常验证点
##### 【P1】【TC-UI-VENDOR-QUL-007】【TP_VENDOR_QUL_016】无匹配空态(mock反例)
-
前置条件:已进入供应商资质管理页
-
操作步骤:
1.
进院供应商名称填入
`__NOT_EXIST_SUPPLIER__99999`
2.
点击「查 询」
3.
断言空态且分页总数为 0
-
自动化断言:与 CSV
`VENDOR-QUL-007`
及
`tests/spd/vendor-qual.spec.ts`
一致
###### 预期结果
无匹配时不报错;总数为 0。
---
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-QUL-008】【TP_VENDOR_QUL_012】证件效期提醒核心列完整
-
前置条件:已进入供应商资质管理页
-
操作步骤:
1.
处于证件效期提醒 Tab
2.
断言表头含序号、数据来源、进院供应商、有效期至、证件名称、证件类型、效期提醒、操作
-
自动化断言:与 CSV
`VENDOR-QUL-008`
及
`tests/spd/vendor-qual.spec.ts`
一致
###### 预期结果
核心列可见。
---
### 供应商资质管理 · 查看与导出
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-QUL-009】【TP_VENDOR_QUL_014】打开查看后关闭
-
前置条件:列表至少 1 行含「查看」
-
操作步骤:
1.
点击首行「查 看」
2.
断言详情层可见
3.
关闭/返回,断言回到列表
-
自动化断言:与 CSV
`VENDOR-QUL-009`
及
`tests/spd/vendor-qual.spec.ts`
一致
###### 预期结果
详情可打开;关闭后回到列表。
---
##### 【P1】【TC-UI-VENDOR-QUL-010】【TP_VENDOR_QUL_015】导出按钮可见
-
前置条件:已进入供应商资质管理页
-
操作步骤:
1.
断言「导出」或「导出明细」按钮可见(本批不确认下载)
-
自动化断言:与 CSV
`VENDOR-QUL-010`
及
`tests/spd/vendor-qual.spec.ts`
一致
###### 预期结果
导出入口可见。
---
### 供应商资质管理 · 筛选与 Tab
#### 边界验证点
##### 【P2】【TC-UI-VENDOR-QUL-011】【TP_VENDOR_QUL_015】制单/效期日期起止同一天
-
前置条件:已进入供应商资质管理页
-
操作步骤:
1.
若存在日期区间筛选,起止选同一天并查询
2.
断言仅返回该日数据或空态明确,不报错
-
自动化断言:本条以手工/后续扩展为主;当前冒烟未覆盖
###### 预期结果
同日区间行为明确。
---
#### 集成验证点
##### 【P1】【TC-UI-VENDOR-QUL-012】【TP_VENDOR_QUL_018】效期提醒与有效期至抽样一致
-
前置条件:已进入供应商资质管理页
-
操作步骤:
1.
在近三个月到期列表抽样一行
2.
核对「效期提醒」文案与「有效期至」日期逻辑一致
-
自动化断言:本条以手工/后续扩展为主;当前冒烟未覆盖
###### 预期结果
提醒文案与有效期至不矛盾。
testcases/基础管理-厂商管理-厂商查询-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-厂商管理-厂商查询 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-厂商管理-厂商查询-测试点分析-01.md`
**执行 CSV**
:
`testcase/基础管理-厂商管理-厂商查询-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/mfrs/paltform/mfrsName/factory`
**定位器 YAML**
:
`locators/spd/vendor-query.locator.yaml`
**元素扫描**
:
`data/scan/vendor-query-elements.json`
(47 项)
**关联规范**
:
`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-VENDOR-001.md`
**版本**
:2026-09-30
**自动化框架**
:Playwright + TypeScript(
`tests/spd/vendor-query.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:已执行
`auth.setup`
,
`storageState`
有效;测试账号具备「基础设置 → 厂商管理 → 厂商查询」权限。
**页面约定**
:整页渲染,
**无报表 iframe**
。
**写操作**
:本页只读查询,无新增/编辑提交。
**动态取数**
:从器械注册人 Tab 首行读取
`${sampleMfrsName}`
;禁止写死厂商名称;mock:
`__NOT_EXIST_MFRS__99999`
。
---
## 基础设置 · 厂商管理
### 厂商查询 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-QRY-001】【TP_VENDOR_QRY_001】菜单进入厂商查询页
-
前置条件:已登录且具备厂商管理权限
-
操作步骤:
1.
按菜单「基础设置 → 厂商管理 → 厂商查询」进入
2.
断言 URL 含
`/spd/basic/mfrs/paltform/mfrsName/factory`
3.
断言可见「器械注册人」「经销商」Tab、厂商名称搜索框及列表表头
-
自动化断言:与 CSV
`VENDOR-QRY-001`
及
`tests/spd/vendor-query.spec.ts`
一致
###### 预期结果
进入厂商查询页;不误入供应商资质管理。
---
### 厂商查询 · Tab 与搜索
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-QRY-002】【TP_VENDOR_QRY_009】默认器械注册人列表有数据或空态明确
-
前置条件:已进入厂商查询页
-
操作步骤:
1.
切换或停留「器械注册人」
2.
断言出现数据行,或「暂无数据」且分页总数为 0
-
自动化断言:与 CSV
`VENDOR-QRY-002`
及
`tests/spd/vendor-query.spec.ts`
一致
###### 预期结果
器械注册人列表稳定;有数据时分页「共 N 条」N≥1。
---
##### 【P0】【TC-UI-VENDOR-QRY-003】【TP_VENDOR_QRY_010】切换经销商 Tab
-
前置条件:已进入厂商查询页
-
操作步骤:
1.
点击「经销商」
2.
断言 Tab 激活,列表有数据或空态明确
-
自动化断言:与 CSV
`VENDOR-QRY-003`
及
`tests/spd/vendor-query.spec.ts`
一致
###### 预期结果
经销商列表加载成功;总数可与器械注册人不同。
---
##### 【P0】【TC-UI-VENDOR-QRY-004】【TP_VENDOR_QRY_011】按厂商名称搜索
-
前置条件:器械注册人至少 1 条且厂商名称非空
-
操作步骤:
1.
从首行读取
`${sampleMfrsName}`
取关键字
2.
在厂商名称搜索框填入关键字并回车
3.
断言结果行「厂商名称」包含关键字
-
自动化断言:与 CSV
`VENDOR-QRY-004`
及
`tests/spd/vendor-query.spec.ts`
一致
###### 预期结果
厂商名称列与关键字匹配。
---
##### 【P1】【TC-UI-VENDOR-QRY-005】【TP_VENDOR_QRY_013】清空搜索恢复
-
前置条件:已按厂商名称过滤
-
操作步骤:
1.
在已过滤状态下清空搜索框并回车
2.
断言分页总数不少于过滤后
-
自动化断言:与 CSV
`VENDOR-QRY-005`
及
`tests/spd/vendor-query.spec.ts`
一致
###### 预期结果
恢复更宽结果集。
---
#### 异常验证点
##### 【P1】【TC-UI-VENDOR-QRY-006】【TP_VENDOR_QRY_017】无匹配空态(mock反例)
-
前置条件:已进入厂商查询页
-
操作步骤:
1.
厂商名称填入
`__NOT_EXIST_MFRS__99999`
并回车
2.
断言空态且分页总数为 0
-
自动化断言:与 CSV
`VENDOR-QRY-006`
及
`tests/spd/vendor-query.spec.ts`
一致
###### 预期结果
无匹配时不报错;总数为 0。
---
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-QRY-007】【TP_VENDOR_QRY_012】列表核心列完整
-
前置条件:已进入厂商查询页
-
操作步骤:
1.
断言表头含序号、厂商编号、厂商名称、产地、详细地址、简称、开户银行、银行账号
-
自动化断言:与 CSV
`VENDOR-QRY-007`
及
`tests/spd/vendor-query.spec.ts`
一致
###### 预期结果
核心列可见。
---
##### 【P1】【TC-UI-VENDOR-QRY-008】【TP_VENDOR_QRY_013】分页翻至第 2 页
-
前置条件:器械注册人总数足够翻页
-
操作步骤:
1.
总数足够时翻到第 2 页
2.
断言列表可加载;不足两页则 skip
-
自动化断言:与 CSV
`VENDOR-QRY-008`
及
`tests/spd/vendor-query.spec.ts`
一致
###### 预期结果
第 2 页可加载。
---
#### 边界验证点
##### 【P2】【TC-UI-VENDOR-QRY-009】【TP_VENDOR_QRY_015】仅空格关键字搜索
-
前置条件:已进入厂商查询页
-
操作步骤:
1.
厂商名称仅填空格并回车
2.
断言按空查询处理或提示,不白屏
-
自动化断言:本条以手工/后续扩展为主;当前冒烟未覆盖
###### 预期结果
不报错;行为明确。
---
### 厂商查询 · 页面进入
#### 异常验证点
##### 【P0】【TC-UI-VENDOR-QRY-010】【TP_VENDOR_QRY_005】未登录访问拦截
-
前置条件:已进入厂商查询页
-
操作步骤:
1.
清除登录态后直接打开厂商查询 URL
2.
断言跳转登录或不展示业务列表
-
自动化断言:本条以手工/后续扩展为主;当前冒烟未覆盖
###### 预期结果
未登录不可见厂商数据。
---
### 厂商查询 · Tab 与搜索
#### 集成验证点
##### 【P1】【TC-UI-VENDOR-QRY-011】【TP_VENDOR_QRY_018】厂商名称与资质管理进院供应商可对照
-
前置条件:已进入厂商查询页
-
操作步骤:
1.
记录厂商查询中某厂商名称(若有)
2.
打开供应商资质管理,用同源关键字检索或目视对照
3.
断言不出现明显主数据串名(允许一方无记录)
-
自动化断言:本条以手工/后续扩展为主;当前冒烟未覆盖
###### 预期结果
厂商主数据跨菜单可对照,不串名。
testcases/基础管理-厂商管理-授权变更初审-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-厂商管理-授权变更初审 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-厂商管理-授权变更初审-测试点分析-01.md`
**执行 CSV**
:
`testcase/基础管理-厂商管理-授权变更初审-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/mfrs/paltform/mfrsName/authAudit`
**定位器 YAML**
:
`locators/spd/vendor-auth-first.locator.yaml`
**元素扫描**
:
`data/scan/vendor-auth-first-elements.json`
(40 项)
**关联规范**
:
`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-VENDOR-003.md`
**版本**
:2026-09-30
**自动化框架**
:Playwright + TypeScript(
`tests/spd/vendor-audit.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:已执行
`auth.setup`
,
`storageState`
有效;测试账号具备「基础设置 → 厂商管理 → 授权变更初审」权限。
**页面约定**
:整页渲染,
**无报表 iframe**
。
**写操作**
:审批写操作只打开详情后返回,不确认通过/驳回/提交。
**动态取数**
:默认查询后从首行读取
`${sampleOrderNo}`
;禁止写死单号;mock:
`__NOT_EXIST_ORDER__99999`
。
---
## 基础设置 · 厂商管理
### 授权变更初审 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-AF1-001】【TP_VENDOR_AF1_001】菜单进入授权变更初审页
-
前置条件:已登录且具备厂商管理权限
-
操作步骤:
1.
按菜单「基础设置 → 厂商管理 → 授权变更初审」进入
2.
断言 URL 含
`/spd/basic/mfrs/paltform/mfrsName/authAudit`
3.
断言可见「查 询」「重 置」及制单日期筛选
-
自动化断言:与 CSV
`VENDOR-AF1-001`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
进入授权变更初审页;不误入其它变更审批菜单。
---
### 授权变更初审 · 筛选与列表
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-AF1-002】【TP_VENDOR_AF1_009】默认查询列表有数据或空态明确
-
前置条件:已进入授权变更初审页
-
操作步骤:
1.
点击「查 询」并等待列表稳定
2.
断言出现数据行或空态明确
-
自动化断言:与 CSV
`VENDOR-AF1-002`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
查询无报错;有数据时分页 N≥1。
---
##### 【P0】【TC-UI-VENDOR-AF1-003】【TP_VENDOR_AF1_010】按单号筛选
-
前置条件:列表至少 1 条且单号非空
-
操作步骤:
1.
从首行读取
`${sampleOrderNo}`
取关键字
2.
单号填入关键字并「查 询」
3.
断言结果行「单号」包含关键字
-
自动化断言:与 CSV
`VENDOR-AF1-003`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
单号列与条件一致。
---
##### 【P0】【TC-UI-VENDOR-AF1-004】【TP_VENDOR_AF1_011】按进院供应商筛选
-
前置条件:列表至少 1 条
-
操作步骤:
1.
按样本填写或选择「进院供应商」并查询
2.
断言结果列与条件匹配
-
自动化断言:与 CSV
`VENDOR-AF1-004`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
筛选条件生效。
---
##### 【P1】【TC-UI-VENDOR-AF1-005】【TP_VENDOR_AF1_012】重置恢复默认
-
前置条件:已进入授权变更初审页
-
操作步骤:
1.
填写筛选项后点击「重 置」
2.
断言文本条件清空、列表按默认规则刷新
-
自动化断言:与 CSV
`VENDOR-AF1-005`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
重置成功。
---
#### 异常验证点
##### 【P1】【TC-UI-VENDOR-AF1-006】【TP_VENDOR_AF1_016】无匹配空态(mock反例)
-
前置条件:已进入授权变更初审页
-
操作步骤:
1.
单号填入
`__NOT_EXIST_ORDER__99999`
并查询
2.
断言空态且分页总数为 0
-
自动化断言:与 CSV
`VENDOR-AF1-006`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
无匹配时不报错;总数为 0。
---
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-AF1-007】【TP_VENDOR_AF1_013】列表核心列完整
-
前置条件:已进入授权变更初审页
-
操作步骤:
1.
断言表头含 进院供应商名称、单号、状态、制单时间、制单人、变更类型、原供应商、预转供应商、操作
2.
断言存在「详情」操作
-
自动化断言:与 CSV
`VENDOR-AF1-007`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
核心列与详情入口可见。
---
### 授权变更初审 · 详情
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-AF1-008】【TP_VENDOR_AF1_014】打开详情后返回
-
前置条件:存在含「详情」的行
-
操作步骤:
1.
点击行内「详 情」
2.
断言详情层可见且含单号片段
3.
返回/关闭,不提交审批
-
自动化断言:与 CSV
`VENDOR-AF1-008`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
详情只读可返回;列表状态不变。
---
### 授权变更初审 · 筛选与列表
#### 边界验证点
##### 【P2】【TC-UI-VENDOR-AF1-009】【TP_VENDOR_AF1_015】制单日期起止同一天
-
前置条件:已进入授权变更初审页
-
操作步骤:
1.
制单日期起止选同一天并查询
2.
断言仅返回该日单据或空态明确
-
自动化断言:本条以手工/后续扩展为主;当前冒烟未覆盖
###### 预期结果
同日区间行为明确。
---
### 授权变更初审 · 详情
#### 集成验证点
##### 【P0】【TC-UI-VENDOR-AF1-010】【TP_VENDOR_AF1_018】与终审单据衔接不串单
-
前置条件:已进入授权变更初审页
-
操作步骤:
1.
记录本页某单号后切换到对应终审菜单
2.
断言同业务单据状态流转合理、不串到非本业务菜单
-
自动化断言:本条以手工/后续扩展为主;当前冒烟未覆盖
###### 预期结果
初审/终审衔接正确。
testcases/基础管理-厂商管理-授权变更终审-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-厂商管理-授权变更终审 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-厂商管理-授权变更终审-测试点分析-01.md`
**执行 CSV**
:
`testcase/基础管理-厂商管理-授权变更终审-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/mfrs/paltform/mfrsName/authAuditFinal`
**定位器 YAML**
:
`locators/spd/vendor-auth-final.locator.yaml`
**元素扫描**
:
`data/scan/vendor-auth-final-elements.json`
(40 项)
**关联规范**
:
`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-VENDOR-004.md`
**版本**
:2026-09-30
**自动化框架**
:Playwright + TypeScript(
`tests/spd/vendor-audit.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:已执行
`auth.setup`
,
`storageState`
有效;测试账号具备「基础设置 → 厂商管理 → 授权变更终审」权限。
**页面约定**
:整页渲染,
**无报表 iframe**
。
**写操作**
:审批写操作只打开详情后返回,不确认通过/驳回/提交。
**动态取数**
:默认查询后从首行读取
`${sampleOrderNo}`
;禁止写死单号;mock:
`__NOT_EXIST_ORDER__99999`
。
---
## 基础设置 · 厂商管理
### 授权变更终审 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-AF2-001】【TP_VENDOR_AF2_001】菜单进入授权变更终审页
-
前置条件:已登录且具备厂商管理权限
-
操作步骤:
1.
按菜单「基础设置 → 厂商管理 → 授权变更终审」进入
2.
断言 URL 含
`/spd/basic/mfrs/paltform/mfrsName/authAuditFinal`
3.
断言可见「查 询」「重 置」及制单日期筛选
-
自动化断言:与 CSV
`VENDOR-AF2-001`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
进入授权变更终审页;不误入其它变更审批菜单。
---
### 授权变更终审 · 筛选与列表
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-AF2-002】【TP_VENDOR_AF2_009】默认查询列表有数据或空态明确
-
前置条件:已进入授权变更终审页
-
操作步骤:
1.
点击「查 询」并等待列表稳定
2.
断言出现数据行或空态明确
-
自动化断言:与 CSV
`VENDOR-AF2-002`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
查询无报错;有数据时分页 N≥1。
---
##### 【P0】【TC-UI-VENDOR-AF2-003】【TP_VENDOR_AF2_010】按单号筛选
-
前置条件:列表至少 1 条且单号非空
-
操作步骤:
1.
从首行读取
`${sampleOrderNo}`
取关键字
2.
单号填入关键字并「查 询」
3.
断言结果行「单号」包含关键字
-
自动化断言:与 CSV
`VENDOR-AF2-003`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
单号列与条件一致。
---
##### 【P0】【TC-UI-VENDOR-AF2-004】【TP_VENDOR_AF2_011】按进院供应商筛选
-
前置条件:列表至少 1 条
-
操作步骤:
1.
按样本填写或选择「进院供应商」并查询
2.
断言结果列与条件匹配
-
自动化断言:与 CSV
`VENDOR-AF2-004`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
筛选条件生效。
---
##### 【P1】【TC-UI-VENDOR-AF2-005】【TP_VENDOR_AF2_012】重置恢复默认
-
前置条件:已进入授权变更终审页
-
操作步骤:
1.
填写筛选项后点击「重 置」
2.
断言文本条件清空、列表按默认规则刷新
-
自动化断言:与 CSV
`VENDOR-AF2-005`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
重置成功。
---
#### 异常验证点
##### 【P1】【TC-UI-VENDOR-AF2-006】【TP_VENDOR_AF2_016】无匹配空态(mock反例)
-
前置条件:已进入授权变更终审页
-
操作步骤:
1.
单号填入
`__NOT_EXIST_ORDER__99999`
并查询
2.
断言空态且分页总数为 0
-
自动化断言:与 CSV
`VENDOR-AF2-006`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
无匹配时不报错;总数为 0。
---
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-AF2-007】【TP_VENDOR_AF2_013】列表核心列完整
-
前置条件:已进入授权变更终审页
-
操作步骤:
1.
断言表头含 进院供应商名称、单号、状态、制单时间、制单人、变更类型、原供应商、预转供应商、操作
2.
断言存在「详情」操作
-
自动化断言:与 CSV
`VENDOR-AF2-007`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
核心列与详情入口可见。
---
### 授权变更终审 · 详情
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-AF2-008】【TP_VENDOR_AF2_014】打开详情后返回
-
前置条件:存在含「详情」的行
-
操作步骤:
1.
点击行内「详 情」
2.
断言详情层可见且含单号片段
3.
返回/关闭,不提交审批
-
自动化断言:与 CSV
`VENDOR-AF2-008`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
详情只读可返回;列表状态不变。
---
### 授权变更终审 · 筛选与列表
#### 边界验证点
##### 【P2】【TC-UI-VENDOR-AF2-009】【TP_VENDOR_AF2_015】制单日期起止同一天
-
前置条件:已进入授权变更终审页
-
操作步骤:
1.
制单日期起止选同一天并查询
2.
断言仅返回该日单据或空态明确
-
自动化断言:本条以手工/后续扩展为主;当前冒烟未覆盖
###### 预期结果
同日区间行为明确。
---
### 授权变更终审 · 详情
#### 集成验证点
##### 【P0】【TC-UI-VENDOR-AF2-010】【TP_VENDOR_AF2_018】与初审单据衔接不串单
-
前置条件:已进入授权变更终审页
-
操作步骤:
1.
记录本页某单号后切换到对应初审菜单
2.
断言同业务单据状态流转合理、不串到非本业务菜单
-
自动化断言:本条以手工/后续扩展为主;当前冒烟未覆盖
###### 预期结果
初审/终审衔接正确。
Prev
1
…
6
7
8
9
10
11
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment