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
14 of 214+
files are displayed.
Plain diff
Email patch
testcases/基础管理-厂商管理-注册证变更初审-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-厂商管理-注册证变更初审 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-厂商管理-注册证变更初审-测试点分析-01.md`
**执行 CSV**
:
`testcase/基础管理-厂商管理-注册证变更初审-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/mfrs/paltform/mfrsName/regCertAudit`
**定位器 YAML**
:
`locators/spd/vendor-cert-first.locator.yaml`
**元素扫描**
:
`data/scan/vendor-cert-first-elements.json`
(40 项)
**关联规范**
:
`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-VENDOR-005.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-CF1-001】【TP_VENDOR_CF1_001】菜单进入注册证变更初审页
-
前置条件:已登录且具备厂商管理权限
-
操作步骤:
1.
按菜单「基础设置 → 厂商管理 → 注册证变更初审」进入
2.
断言 URL 含
`/spd/basic/mfrs/paltform/mfrsName/regCertAudit`
3.
断言可见「查 询」「重 置」及制单日期筛选
-
自动化断言:与 CSV
`VENDOR-CF1-001`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
进入注册证变更初审页;不误入其它变更审批菜单。
---
### 注册证变更初审 · 筛选与列表
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-CF1-002】【TP_VENDOR_CF1_009】默认查询列表有数据或空态明确
-
前置条件:已进入注册证变更初审页
-
操作步骤:
1.
点击「查 询」并等待列表稳定
2.
断言出现数据行或空态明确
-
自动化断言:与 CSV
`VENDOR-CF1-002`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
查询无报错;有数据时分页 N≥1。
---
##### 【P0】【TC-UI-VENDOR-CF1-003】【TP_VENDOR_CF1_010】按单号筛选
-
前置条件:列表至少 1 条且单号非空
-
操作步骤:
1.
从首行读取
`${sampleOrderNo}`
取关键字
2.
单号填入关键字并「查 询」
3.
断言结果行「单号」包含关键字
-
自动化断言:与 CSV
`VENDOR-CF1-003`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
单号列与条件一致。
---
##### 【P0】【TC-UI-VENDOR-CF1-004】【TP_VENDOR_CF1_011】按注册证号(新)筛选
-
前置条件:列表至少 1 条
-
操作步骤:
1.
按样本填写或选择「注册证号(新)」并查询
2.
断言结果列与条件匹配
-
自动化断言:与 CSV
`VENDOR-CF1-004`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
筛选条件生效。
---
##### 【P1】【TC-UI-VENDOR-CF1-005】【TP_VENDOR_CF1_012】重置恢复默认
-
前置条件:已进入注册证变更初审页
-
操作步骤:
1.
填写筛选项后点击「重 置」
2.
断言文本条件清空、列表按默认规则刷新
-
自动化断言:与 CSV
`VENDOR-CF1-005`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
重置成功。
---
#### 异常验证点
##### 【P1】【TC-UI-VENDOR-CF1-006】【TP_VENDOR_CF1_016】无匹配空态(mock反例)
-
前置条件:已进入注册证变更初审页
-
操作步骤:
1.
单号填入
`__NOT_EXIST_ORDER__99999`
并查询
2.
断言空态且分页总数为 0
-
自动化断言:与 CSV
`VENDOR-CF1-006`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
无匹配时不报错;总数为 0。
---
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-CF1-007】【TP_VENDOR_CF1_013】列表核心列完整
-
前置条件:已进入注册证变更初审页
-
操作步骤:
1.
断言表头含 进院供应商名称、单号、状态、制单时间、制单人、变更类型、注册证号(新)、操作
2.
断言存在「详情」操作
-
自动化断言:与 CSV
`VENDOR-CF1-007`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
核心列与详情入口可见。
---
### 注册证变更初审 · 详情
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-CF1-008】【TP_VENDOR_CF1_014】打开详情后返回
-
前置条件:存在含「详情」的行
-
操作步骤:
1.
点击行内「详 情」
2.
断言详情层可见且含单号片段
3.
返回/关闭,不提交审批
-
自动化断言:与 CSV
`VENDOR-CF1-008`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
详情只读可返回;列表状态不变。
---
### 注册证变更初审 · 筛选与列表
#### 边界验证点
##### 【P2】【TC-UI-VENDOR-CF1-009】【TP_VENDOR_CF1_015】制单日期起止同一天
-
前置条件:已进入注册证变更初审页
-
操作步骤:
1.
制单日期起止选同一天并查询
2.
断言仅返回该日单据或空态明确
-
自动化断言:本条以手工/后续扩展为主;当前冒烟未覆盖
###### 预期结果
同日区间行为明确。
---
### 注册证变更初审 · 详情
#### 集成验证点
##### 【P0】【TC-UI-VENDOR-CF1-010】【TP_VENDOR_CF1_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/regCertAuditFinal`
**定位器 YAML**
:
`locators/spd/vendor-cert-final.locator.yaml`
**元素扫描**
:
`data/scan/vendor-cert-final-elements.json`
(40 项)
**关联规范**
:
`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-VENDOR-006.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-CF2-001】【TP_VENDOR_CF2_001】菜单进入注册证变更终审页
-
前置条件:已登录且具备厂商管理权限
-
操作步骤:
1.
按菜单「基础设置 → 厂商管理 → 注册证变更终审」进入
2.
断言 URL 含
`/spd/basic/mfrs/paltform/mfrsName/regCertAuditFinal`
3.
断言可见「查 询」「重 置」及制单日期筛选
-
自动化断言:与 CSV
`VENDOR-CF2-001`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
进入注册证变更终审页;不误入其它变更审批菜单。
---
### 注册证变更终审 · 筛选与列表
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-CF2-002】【TP_VENDOR_CF2_009】默认查询列表有数据或空态明确
-
前置条件:已进入注册证变更终审页
-
操作步骤:
1.
点击「查 询」并等待列表稳定
2.
断言出现数据行或空态明确
-
自动化断言:与 CSV
`VENDOR-CF2-002`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
查询无报错;有数据时分页 N≥1。
---
##### 【P0】【TC-UI-VENDOR-CF2-003】【TP_VENDOR_CF2_010】按单号筛选
-
前置条件:列表至少 1 条且单号非空
-
操作步骤:
1.
从首行读取
`${sampleOrderNo}`
取关键字
2.
单号填入关键字并「查 询」
3.
断言结果行「单号」包含关键字
-
自动化断言:与 CSV
`VENDOR-CF2-003`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
单号列与条件一致。
---
##### 【P0】【TC-UI-VENDOR-CF2-004】【TP_VENDOR_CF2_011】按注册证号(新)筛选
-
前置条件:列表至少 1 条
-
操作步骤:
1.
按样本填写或选择「注册证号(新)」并查询
2.
断言结果列与条件匹配
-
自动化断言:与 CSV
`VENDOR-CF2-004`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
筛选条件生效。
---
##### 【P1】【TC-UI-VENDOR-CF2-005】【TP_VENDOR_CF2_012】重置恢复默认
-
前置条件:已进入注册证变更终审页
-
操作步骤:
1.
填写筛选项后点击「重 置」
2.
断言文本条件清空、列表按默认规则刷新
-
自动化断言:与 CSV
`VENDOR-CF2-005`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
重置成功。
---
#### 异常验证点
##### 【P1】【TC-UI-VENDOR-CF2-006】【TP_VENDOR_CF2_016】无匹配空态(mock反例)
-
前置条件:已进入注册证变更终审页
-
操作步骤:
1.
单号填入
`__NOT_EXIST_ORDER__99999`
并查询
2.
断言空态且分页总数为 0
-
自动化断言:与 CSV
`VENDOR-CF2-006`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
无匹配时不报错;总数为 0。
---
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-CF2-007】【TP_VENDOR_CF2_013】列表核心列完整
-
前置条件:已进入注册证变更终审页
-
操作步骤:
1.
断言表头含 进院供应商名称、单号、状态、制单时间、制单人、变更类型、注册证号(新)、操作
2.
断言存在「详情」操作
-
自动化断言:与 CSV
`VENDOR-CF2-007`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
核心列与详情入口可见。
---
### 注册证变更终审 · 详情
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-CF2-008】【TP_VENDOR_CF2_014】打开详情后返回
-
前置条件:存在含「详情」的行
-
操作步骤:
1.
点击行内「详 情」
2.
断言详情层可见且含单号片段
3.
返回/关闭,不提交审批
-
自动化断言:与 CSV
`VENDOR-CF2-008`
及
`tests/spd/vendor-audit.spec.ts`
一致
###### 预期结果
详情只读可返回;列表状态不变。
---
### 注册证变更终审 · 筛选与列表
#### 边界验证点
##### 【P2】【TC-UI-VENDOR-CF2-009】【TP_VENDOR_CF2_015】制单日期起止同一天
-
前置条件:已进入注册证变更终审页
-
操作步骤:
1.
制单日期起止选同一天并查询
2.
断言仅返回该日单据或空态明确
-
自动化断言:本条以手工/后续扩展为主;当前冒烟未覆盖
###### 预期结果
同日区间行为明确。
---
### 注册证变更终审 · 详情
#### 集成验证点
##### 【P0】【TC-UI-VENDOR-CF2-010】【TP_VENDOR_CF2_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/scjs/yc/certCompare`
**定位器 YAML**
:
`locators/spd/vendor-cert-diff.locator.yaml`
**元素扫描**
:
`data/scan/vendor-cert-diff-elements.json`
(54 项)
**关联规范**
:
`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-VENDOR-007.md`
**版本**
:2026-09-30
**自动化框架**
:Playwright + TypeScript(
`tests/spd/vendor-cert-diff.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:已执行
`auth.setup`
,
`storageState`
有效;测试账号具备「基础设置 → 厂商管理 → 注册证差异对比」权限。
**页面约定**
:主体在 scjs
**iframe**
。
**写操作**
:主体在 scjs iframe;导出本批只断言按钮可见,不确认下载。
**动态取数**
:iframe 内首行读取
`${sampleMaterialName}`
;mock:
`__NOT_EXIST_MFRS__99999`
。
---
## 基础设置 · 厂商管理
### 注册证差异对比 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-CDF-001】【TP_VENDOR_CDF_001】菜单进入注册证差异对比页
-
前置条件:已登录且具备厂商管理权限
-
操作步骤:
1.
按菜单「基础设置 → 厂商管理 → 注册证差异对比」进入
2.
断言 URL 含
`certCompare`
3.
断言外壳或 iframe 内可见物料名称/全部/一致/不一致等主区
-
自动化断言:与 CSV
`VENDOR-CDF-001`
及
`tests/spd/vendor-cert-diff.spec.ts`
一致
###### 预期结果
进入差异对比页;iframe 或主区加载成功。
---
### 注册证差异对比 · 筛选与对比
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-CDF-002】【TP_VENDOR_CDF_009】默认查询列表有数据或空态明确
-
前置条件:已进入注册证差异对比页
-
操作步骤:
1.
在对比页执行查询(若有查询按钮)
2.
断言列表有数据或空态明确
-
自动化断言:与 CSV
`VENDOR-CDF-002`
及
`tests/spd/vendor-cert-diff.spec.ts`
一致
###### 预期结果
查询无报错。
---
##### 【P0】【TC-UI-VENDOR-CDF-003】【TP_VENDOR_CDF_013】切换不一致 Tab
-
前置条件:已进入注册证差异对比页
-
操作步骤:
1.
点击「不一致」
2.
断言列表稳定
-
自动化断言:与 CSV
`VENDOR-CDF-003`
及
`tests/spd/vendor-cert-diff.spec.ts`
一致
###### 预期结果
不一致 Tab 切换成功。
---
##### 【P1】【TC-UI-VENDOR-CDF-004】【TP_VENDOR_CDF_013】切换一致 Tab
-
前置条件:已进入注册证差异对比页
-
操作步骤:
1.
点击「一致」
2.
断言列表稳定
-
自动化断言:与 CSV
`VENDOR-CDF-004`
及
`tests/spd/vendor-cert-diff.spec.ts`
一致
###### 预期结果
一致 Tab 切换成功。
---
##### 【P0】【TC-UI-VENDOR-CDF-005】【TP_VENDOR_CDF_010】按物料名称筛选
-
前置条件:对比列表至少 1 条
-
操作步骤:
1.
从首行读取
`${sampleMaterialName}`
取关键字
2.
物料名称填入并查询
3.
断言结果行物料名称包含关键字
-
自动化断言:与 CSV
`VENDOR-CDF-005`
及
`tests/spd/vendor-cert-diff.spec.ts`
一致
###### 预期结果
物料名称匹配。
---
#### 异常验证点
##### 【P1】【TC-UI-VENDOR-CDF-006】【TP_VENDOR_CDF_016】无匹配空态(mock反例)
-
前置条件:已进入注册证差异对比页
-
操作步骤:
1.
物料名称填 mock 关键字并查询
2.
断言空态或总数为 0
-
自动化断言:与 CSV
`VENDOR-CDF-006`
及
`tests/spd/vendor-cert-diff.spec.ts`
一致
###### 预期结果
无匹配时不报错。
---
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-CDF-007】【TP_VENDOR_CDF_014】列表核心列完整
-
前置条件:已进入注册证差异对比页
-
操作步骤:
1.
断言表头含物料编号/物料名称/规格型号/生产厂家等关键列
-
自动化断言:与 CSV
`VENDOR-CDF-007`
及
`tests/spd/vendor-cert-diff.spec.ts`
一致
###### 预期结果
核心对比列可见。
---
### 注册证差异对比 · 导出
#### 功能验证点
##### 【P1】【TC-UI-VENDOR-CDF-008】【TP_VENDOR_CDF_015】导出按钮可见
-
前置条件:已进入注册证差异对比页
-
操作步骤:
1.
断言「导出」按钮可见(不确认下载)
-
自动化断言:与 CSV
`VENDOR-CDF-008`
及
`tests/spd/vendor-cert-diff.spec.ts`
一致
###### 预期结果
导出入口可见。
---
### 注册证差异对比 · 筛选与对比
#### 边界验证点
##### 【P2】【TC-UI-VENDOR-CDF-009】【TP_VENDOR_CDF_015】仅空格物料名称搜索
-
前置条件:已进入注册证差异对比页
-
操作步骤:
1.
物料名称仅填空格并查询
2.
断言按空查询处理或提示,不白屏
-
自动化断言:本条以手工/后续扩展为主;当前冒烟未覆盖
###### 预期结果
空格关键字不导致页面异常。
---
#### 集成验证点
##### 【P0】【TC-UI-VENDOR-CDF-010】【TP_VENDOR_CDF_017】一致行两侧字段抽样一致
-
前置条件:已进入注册证差异对比页
-
操作步骤:
1.
在「一致」Tab 抽样一行
2.
核对望海与 FLI+ 注册证号/效期关键字段一致
-
自动化断言:本条以手工/后续扩展为主;当前冒烟未覆盖
###### 预期结果
标记一致的行两侧关键字段抽样相同。
---
##### 【P0】【TC-UI-VENDOR-CDF-011】【TP_VENDOR_CDF_018】不一致行至少一侧差异
-
前置条件:已进入注册证差异对比页
-
操作步骤:
1.
在「不一致」Tab 抽样一行
2.
断言望海与 FLI+ 至少一处字段不同
-
自动化断言:本条以手工/后续扩展为主;当前冒烟未覆盖
###### 预期结果
不一致结论与字段差异相符。
testcases/基础管理-厂商管理-评价指标维护-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-厂商管理-评价指标维护 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-厂商管理-评价指标维护-测试点分析-01.md`
**执行 CSV**
:
`testcase/基础管理-厂商管理-评价指标维护-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/mfrs/paltform/mfrsName/indicators`
**定位器 YAML**
:
`locators/spd/vendor-eval-indicator.locator.yaml`
**元素扫描**
:
`data/scan/vendor-eval-indicator-elements.json`
(151 项)
**关联规范**
:
`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-VENDOR-009.md`
**版本**
:2026-09-30
**自动化框架**
:Playwright + TypeScript(
`tests/spd/vendor-eval-indicator.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:已执行
`auth.setup`
,
`storageState`
有效;测试账号具备「基础设置 → 厂商管理 → 评价指标维护」权限。
**页面约定**
:整页渲染,
**无报表 iframe**
。
**写操作**
:详情只读返回;不落库新增/编辑提交。
**动态取数**
:右表首行读取
`${sampleIndicatorCode}`
;列名可能为指标编码或指标编号;mock:
`__NOT_EXIST_ORDER__99999`
。
---
## 基础设置 · 厂商管理
### 评价指标维护 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-EVI-001】【TP_VENDOR_EVI_001】菜单进入评价指标维护页
-
前置条件:已登录且具备厂商管理权限
-
操作步骤:
1.
按菜单进入评价指标维护
2.
断言 URL 含
`indicators`
3.
断言可见「指标分类」与查询
-
自动化断言:与 CSV
`VENDOR-EVI-001`
及
`tests/spd/vendor-eval-indicator.spec.ts`
一致
###### 预期结果
进入评价指标维护页。
---
### 评价指标维护 · 树与列表
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-EVI-002】【TP_VENDOR_EVI_009】默认查询列表有数据或空态明确
-
前置条件:已进入评价指标维护页
-
操作步骤:
1.
点击查询
2.
断言右表有数据或空态
-
自动化断言:与 CSV
`VENDOR-EVI-002`
及
`tests/spd/vendor-eval-indicator.spec.ts`
一致
###### 预期结果
查询无报错。
---
##### 【P0】【TC-UI-VENDOR-EVI-003】【TP_VENDOR_EVI_010】点击左侧分类树
-
前置条件:已进入评价指标维护页
-
操作步骤:
1.
点击左侧首个分类节点
2.
断言右侧列表刷新
-
自动化断言:与 CSV
`VENDOR-EVI-003`
及
`tests/spd/vendor-eval-indicator.spec.ts`
一致
###### 预期结果
分类切换成功。
---
##### 【P0】【TC-UI-VENDOR-EVI-004】【TP_VENDOR_EVI_011】按指标编码筛选
-
前置条件:右表有数据
-
操作步骤:
1.
取样本指标编码/编号筛选并查询
2.
断言编码列匹配
-
自动化断言:与 CSV
`VENDOR-EVI-004`
及
`tests/spd/vendor-eval-indicator.spec.ts`
一致
###### 预期结果
指标编码匹配。
---
#### 异常验证点
##### 【P1】【TC-UI-VENDOR-EVI-005】【TP_VENDOR_EVI_015】无匹配空态(mock反例)
-
前置条件:已进入评价指标维护页
-
操作步骤:
1.
指标编码填 mock 后查询
2.
断言空态
-
自动化断言:与 CSV
`VENDOR-EVI-005`
及
`tests/spd/vendor-eval-indicator.spec.ts`
一致
###### 预期结果
无匹配不报错。
---
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-EVI-006】【TP_VENDOR_EVI_012】列表核心列完整
-
前置条件:已进入评价指标维护页
-
操作步骤:
1.
断言表头含评价类型、指标编码或指标编号、指标名称、状态、操作
-
自动化断言:与 CSV
`VENDOR-EVI-006`
及
`tests/spd/vendor-eval-indicator.spec.ts`
一致
###### 预期结果
核心列可见。
---
### 评价指标维护 · 详情
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-EVI-007】【TP_VENDOR_EVI_014】打开详情后返回
-
前置条件:存在详情操作行
-
操作步骤:
1.
点击行内详情
2.
断言详情层可见
3.
返回不保存
-
自动化断言:与 CSV
`VENDOR-EVI-007`
及
`tests/spd/vendor-eval-indicator.spec.ts`
一致
###### 预期结果
详情只读可返回。
---
### 评价指标维护 · 树与列表
#### 边界验证点
##### 【P2】【TC-UI-VENDOR-EVI-008】【TP_VENDOR_EVI_015】分类下无指标空态
-
前置条件:已进入评价指标维护页
-
操作步骤:
1.
选择无指标的分类(若有)
2.
断言右表空态明确
-
自动化断言:本条以手工/后续扩展为主;当前冒烟未覆盖
###### 预期结果
空分类下列表空态正确。
---
#### 集成验证点
##### 【P1】【TC-UI-VENDOR-EVI-009】【TP_VENDOR_EVI_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/evaluationPlan`
**定位器 YAML**
:
`locators/spd/vendor-eval-scheme.locator.yaml`
**元素扫描**
:
`data/scan/vendor-eval-scheme-elements.json`
(57 项)
**关联规范**
:
`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-VENDOR-008.md`
**版本**
:2026-09-30
**自动化框架**
:Playwright + TypeScript(
`tests/spd/vendor-eval-scheme.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:已执行
`auth.setup`
,
`storageState`
有效;测试账号具备「基础设置 → 厂商管理 → 评价方案维护」权限。
**页面约定**
:整页渲染,
**无报表 iframe**
。
**写操作**
:新增只打开后取消,不提交保存。
**动态取数**
:有数据时从首行读取
`${sampleSchemeCode}`
;mock:
`__NOT_EXIST_ORDER__99999`
。
---
## 基础设置 · 厂商管理
### 评价方案维护 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-EVS-001】【TP_VENDOR_EVS_001】菜单进入评价方案维护页
-
前置条件:已登录且具备厂商管理权限
-
操作步骤:
1.
按菜单进入评价方案维护
2.
断言 URL 含
`evaluationPlan`
3.
断言可见查询与新增
-
自动化断言:与 CSV
`VENDOR-EVS-001`
及
`tests/spd/vendor-eval-scheme.spec.ts`
一致
###### 预期结果
进入评价方案维护页。
---
### 评价方案维护 · 筛选与维护
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-EVS-002】【TP_VENDOR_EVS_009】默认查询列表有数据或空态明确
-
前置条件:已进入评价方案维护页
-
操作步骤:
1.
点击查询
2.
断言列表有数据或「暂无数据」空态
-
自动化断言:与 CSV
`VENDOR-EVS-002`
及
`tests/spd/vendor-eval-scheme.spec.ts`
一致
###### 预期结果
查询无报错。
---
##### 【P0】【TC-UI-VENDOR-EVS-003】【TP_VENDOR_EVS_010】按方案编码筛选
-
前置条件:列表有数据
-
操作步骤:
1.
取样本方案编码筛选并查询
2.
断言方案编码列匹配
-
自动化断言:与 CSV
`VENDOR-EVS-003`
及
`tests/spd/vendor-eval-scheme.spec.ts`
一致
###### 预期结果
方案编码匹配。
---
##### 【P1】【TC-UI-VENDOR-EVS-004】【TP_VENDOR_EVS_011】重置恢复默认
-
前置条件:已进入评价方案维护页
-
操作步骤:
1.
填写筛选后重置
2.
断言条件清空、列表刷新
-
自动化断言:与 CSV
`VENDOR-EVS-004`
及
`tests/spd/vendor-eval-scheme.spec.ts`
一致
###### 预期结果
重置成功。
---
#### 异常验证点
##### 【P1】【TC-UI-VENDOR-EVS-005】【TP_VENDOR_EVS_015】无匹配空态(mock反例)
-
前置条件:已进入评价方案维护页
-
操作步骤:
1.
方案编码填 mock 后查询
2.
断言空态总数 0
-
自动化断言:与 CSV
`VENDOR-EVS-005`
及
`tests/spd/vendor-eval-scheme.spec.ts`
一致
###### 预期结果
无匹配不报错。
---
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-EVS-006】【TP_VENDOR_EVS_012】列表核心列完整
-
前置条件:已进入评价方案维护页
-
操作步骤:
1.
断言表头含方案编码、方案名称、创建人、创建时间、状态、操作
-
自动化断言:与 CSV
`VENDOR-EVS-006`
及
`tests/spd/vendor-eval-scheme.spec.ts`
一致
###### 预期结果
核心列可见。
---
### 评价方案维护 · 新增
#### 功能验证点
##### 【P0】【TC-UI-VENDOR-EVS-007】【TP_VENDOR_EVS_013】打开新增后取消
-
前置条件:已进入评价方案维护页
-
操作步骤:
1.
记录总数
2.
点击新增打开编辑层
3.
取消/返回不提交
4.
断言总数不变
-
自动化断言:与 CSV
`VENDOR-EVS-007`
及
`tests/spd/vendor-eval-scheme.spec.ts`
一致
###### 预期结果
取消不落库。
---
#### 异常验证点
##### 【P0】【TC-UI-VENDOR-EVS-008】【TP_VENDOR_EVS_016】必填为空提交拦截
-
前置条件:已进入评价方案维护页
-
操作步骤:
1.
打开新增不填必填项尝试提交(若可点)
2.
断言拦截提示,页面不关闭或总数不变
-
自动化断言:本条以手工/后续扩展为主;当前冒烟未覆盖
###### 预期结果
空提交被拦截。
---
### 评价方案维护 · 筛选与维护
#### 边界验证点
##### 【P2】【TC-UI-VENDOR-EVS-009】【TP_VENDOR_EVS_015】方案名称超长输入
-
前置条件:已进入评价方案维护页
-
操作步骤:
1.
打开新增,方案名称输入超长字符串(如 200+ 字符)
2.
断言前端截断/校验提示或后端拒绝,不白屏
-
自动化断言:本条以手工/后续扩展为主;当前冒烟未覆盖
###### 预期结果
超长输入被约束且页面可用。
---
#### 集成验证点
##### 【P1】【TC-UI-VENDOR-EVS-010】【TP_VENDOR_EVS_018】方案与评价指标可关联
-
前置条件:已进入评价方案维护页
-
操作步骤:
1.
在方案配置中查看指标选择(只读打开)
2.
断言可选指标来源于评价指标维护启用项或规则允许集合
-
自动化断言:本条以手工/后续扩展为主;当前冒烟未覆盖
###### 预期结果
方案与指标主数据衔接正确。
testcases/基础管理-库房管理-库区设置-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-库房管理-库区设置 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-库房管理-库区设置-测试点分析-01.md`
**执行 CSV**
:
`testcase/基础管理-库房管理-库区设置-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/storehouse/platform/storehouse/area`
**定位器 YAML**
:
`locators/spd/warehouse-zone.locator.yaml`
**元素扫描**
:
`data/scan/warehouse-zone-elements.json`
(106 项)
**关联规范**
:
`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-WH-001.md`
**版本**
:2026-10-20
**自动化框架**
:Playwright + TypeScript(规划
`tests/spd/warehouse-zone.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:正例账号
`test_1`
经
`auth.setup`
写入
`storageState`
(密码仅存
`.env`
的
`TEST_PASS`
);具备「基础设置 → 库房管理 → 库区设置」权限。反例筛选用 mock。
**页面约定**
:整页渲染,
**无报表 iframe**
;定位均在
`page`
上。
**菜单导航**
:菜单「基础设置 → 库房管理 → 库区设置」;建议
`openPath('/spd/basic/storehouse/platform/storehouse/area')`
并断言 URL,勿误入探针绑定。
**写操作**
:新增/编辑只打开后取消或点确定做必填拦截,不提交成功保存;不停用/启用落库;人员管理/货位管理只打开后关闭;同步仅点一次并断言树仍在。
**动态取数**
:从左侧树读取
`${sampleWhName}`
,从右侧首行读取
`${sampleZoneNo}`
、
`${sampleZoneName}`
;mock:
`__NOT_EXIST_ZONE__99999`
。
---
## 基础设置 · 库房管理
### 库区设置 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-WH-ZON-001】【TP_WH_ZON_001】菜单进入库区设置页
-
前置条件:已进入库区设置页
-
操作步骤:
1.
按菜单「基础设置 → 库房管理 → 库区设置」进入,或
`openPath`
打开
`/spd/basic/storehouse/platform/storehouse/area`
2.
断言 URL 含
`/spd/basic/storehouse/platform/storehouse/area`
3.
断言左侧「库房信息」树、右侧库区列表、「新 增」与分页可见
-
自动化断言:规划与 CSV
`WH-ZON-001`
及
`tests/spd/warehouse-zone.spec.ts`
一致
###### 预期结果
进入库区设置页;不误入探针绑定;无报错遮罩。
---
#### 异常验证点
##### 【P0】【TC-UI-WH-ZON-002】【TP_WH_ZON_005】未登录访问拦截
-
前置条件:已进入库区设置页
-
操作步骤:
1.
清除登录态后直接打开
`/spd/basic/storehouse/platform/storehouse/area`
2.
断言跳转登录或不展示库房/库区业务数据
-
自动化断言:规划与 CSV
`WH-ZON-002`
及
`tests/spd/warehouse-zone.spec.ts`
一致
###### 预期结果
未登录不可见库区数据。
---
### 库区设置 · 左侧库房树
#### 功能验证点
##### 【P0】【TC-UI-WH-ZON-003】【TP_WH_ZON_009】库房树默认有选中项
-
前置条件:已进入库区设置页
-
操作步骤:
1.
断言左侧「库房信息」至少 1 个节点且有选中项
2.
读取选中节点
`${sampleWhName}`
3.
断言右侧列表为该库房库区,或空态且「共 0 条」
-
自动化断言:规划与 CSV
`WH-ZON-003`
及
`tests/spd/warehouse-zone.spec.ts`
一致
###### 预期结果
树有选中;右侧对应当前库房。
---
##### 【P0】【TC-UI-WH-ZON-004】【TP_WH_ZON_010】按库房名称过滤树
-
前置条件:库房树至少 1 个节点
-
操作步骤:
1.
读取当前选中
`${sampleWhName}`
取关键字(可截取前若干字)
2.
在左侧「库房名称」输入关键字
3.
断言可见节点名称均包含该关键字
-
自动化断言:规划与 CSV
`WH-ZON-004`
及
`tests/spd/warehouse-zone.spec.ts`
一致
###### 预期结果
树过滤结果与关键字匹配。
---
##### 【P1】【TC-UI-WH-ZON-005】【TP_WH_ZON_011】清空库房名称恢复全量树
-
前置条件:已进入库区设置页
-
操作步骤:
1.
记录过滤前节点数
2.
输入关键字过滤后再清空
3.
断言节点数恢复为过滤前
-
自动化断言:规划与 CSV
`WH-ZON-005`
及
`tests/spd/warehouse-zone.spec.ts`
一致
###### 预期结果
清空后树恢复全量。
---
##### 【P0】【TC-UI-WH-ZON-006】【TP_WH_ZON_012】切换库房刷新右侧列表
-
前置条件:已进入库区设置页
-
操作步骤:
1.
记录当前库房
`${sampleWhName}`
与右侧首行库区编号(若有)
2.
点选另一库房节点(仅 1 个则 skip)
3.
断言「共 N 条」可变化;若有行则库区编号/名称属于新库房
-
自动化断言:规划与 CSV
`WH-ZON-006`
及
`tests/spd/warehouse-zone.spec.ts`
一致
###### 预期结果
切换库房后右侧列表刷新,不残留上一库房库区。
---
#### 异常验证点
##### 【P1】【TC-UI-WH-ZON-007】【TP_WH_ZON_015】无匹配库房空树(mock反例)
-
前置条件:已进入库区设置页
-
操作步骤:
1.
库房名称填入
`__NOT_EXIST_ZONE__99999`
2.
断言树为空或明确无数据,右侧不展示上一库房库区为成功态
-
自动化断言:规划与 CSV
`WH-ZON-007`
及
`tests/spd/warehouse-zone.spec.ts`
一致
###### 预期结果
无匹配不报错;不残留上一库房列表当成功。
---
### 库区设置 · 右侧库区列表与分页
#### 功能验证点
##### 【P0】【TC-UI-WH-ZON-008】【TP_WH_ZON_018】列表核心列完整
-
前置条件:已进入库区设置页
-
操作步骤:
1.
断言表头含库区编号、库区名称、库区地址、是否专项库区、操作
2.
若有数据行,断言操作列可见「编辑」「人员管理」「货位管理」及「停用」或「启用」
-
自动化断言:规划与 CSV
`WH-ZON-008`
及
`tests/spd/warehouse-zone.spec.ts`
一致
###### 预期结果
核心列完整;行内操入口可见。
---
##### 【P0】【TC-UI-WH-ZON-009】【TP_WH_ZON_019】默认库区以标签展示
-
前置条件:已进入库区设置页
-
操作步骤:
1.
在当前库房列表中查找「默认库区」标签
2.
断言该标签出现在库区名称旁,不是独立列
3.
断言当前库房至多 1 个默认库区标签(无默认则本条只断言不是独立列)
-
自动化断言:规划与 CSV
`WH-ZON-009`
及
`tests/spd/warehouse-zone.spec.ts`
一致
###### 预期结果
默认库区为名称旁标签;同一库房至多一个。
---
### 库区设置 · 库区搜索
#### 功能验证点
##### 【P0】【TC-UI-WH-ZON-010】【TP_WH_ZON_029】按库区编号搜索
-
前置条件:当前库房至少 1 条库区且编号非空
-
操作步骤:
1.
从首行读取
`${sampleZoneNo}`
2.
在「库区编号/名称」填入该编号并触发搜索
3.
断言结果包含该编号行,且均属于当前选中库房
-
自动化断言:规划与 CSV
`WH-ZON-010`
及
`tests/spd/warehouse-zone.spec.ts`
一致
###### 预期结果
搜索命中该编号;不串其它库房。
---
##### 【P0】【TC-UI-WH-ZON-011】【TP_WH_ZON_030】按库区名称搜索
-
前置条件:当前库房至少 1 条且名称非空
-
操作步骤:
1.
从首行读取
`${sampleZoneName}`
取关键字
2.
在「库区编号/名称」填入关键字并搜索
3.
断言结果行名称匹配
-
自动化断言:规划与 CSV
`WH-ZON-011`
及
`tests/spd/warehouse-zone.spec.ts`
一致
###### 预期结果
名称关键字命中;无未捕获异常。
---
#### 异常验证点
##### 【P1】【TC-UI-WH-ZON-012】【TP_WH_ZON_034】无匹配库区空态(mock反例)
-
前置条件:已进入库区设置页
-
操作步骤:
1.
「库区编号/名称」填入
`__NOT_EXIST_ZONE__99999`
并搜索
2.
断言列表空且分页为 0
-
自动化断言:规划与 CSV
`WH-ZON-012`
及
`tests/spd/warehouse-zone.spec.ts`
一致
###### 预期结果
无匹配不报错;总数为 0。
---
### 库区设置 · 新增库区
#### 功能验证点
##### 【P0】【TC-UI-WH-ZON-013】【TP_WH_ZON_036】打开新增库区弹窗
-
前置条件:已进入库区设置页
-
操作步骤:
1.
点击「新 增」
2.
断言弹出「新增库区」,可见库区编号、库区名称、库区地址、联系人、联系方式及「取 消」「确 定」
-
自动化断言:规划与 CSV
`WH-ZON-013`
及
`tests/spd/warehouse-zone.spec.ts`
一致
###### 预期结果
新增弹窗可见;关键字段与按钮齐全。
---
##### 【P1】【TC-UI-WH-ZON-014】【TP_WH_ZON_038】新增取消不落库
-
前置条件:已进入库区设置页
-
操作步骤:
1.
打开新增,编号填
`AUTO${timestamp}`
,名称填任意合法值
2.
点击「取 消」
3.
按该编号搜索,断言无该记录
-
自动化断言:规划与 CSV
`WH-ZON-014`
及
`tests/spd/warehouse-zone.spec.ts`
一致
###### 预期结果
弹窗关闭;列表不出现该编号。
---
#### 异常验证点
##### 【P0】【TC-UI-WH-ZON-015】【TP_WH_ZON_041】必填为空拦截
-
前置条件:已进入库区设置页
-
操作步骤:
1.
打开新增,库区编号或名称留空后点击「确 定」
2.
断言出现必填提示,弹窗仍打开
3.
点「取 消」
-
自动化断言:规划与 CSV
`WH-ZON-015`
及
`tests/spd/warehouse-zone.spec.ts`
一致
###### 预期结果
确定被拦截;不落库;弹窗不关闭。
---
### 库区设置 · 编辑库区
#### 功能验证点
##### 【P0】【TC-UI-WH-ZON-016】【TP_WH_ZON_046】打开编辑并回填
-
前置条件:当前库房至少 1 条库区
-
操作步骤:
1.
点击首行「编辑」
2.
断言弹窗标题含「编辑库区信息」
3.
断言库区编号、名称与该行
`${sampleZoneNo}`
、
`${sampleZoneName}`
一致(允许规范化空白)
4.
点「取 消」
-
自动化断言:规划与 CSV
`WH-ZON-016`
及
`tests/spd/warehouse-zone.spec.ts`
一致
###### 预期结果
编辑弹窗可见;回填与列表行一致。
---
##### 【P1】【TC-UI-WH-ZON-017】【TP_WH_ZON_048】编辑取消不保存
-
前置条件:当前库房至少 1 条库区
-
操作步骤:
1.
打开首行编辑,记录原名称
2.
将名称改为临时值后点「取 消」
3.
再次打开编辑,断言名称仍为原值
-
自动化断言:规划与 CSV
`WH-ZON-017`
及
`tests/spd/warehouse-zone.spec.ts`
一致
###### 预期结果
取消后列表与回看均为修改前名称。
---
#### 异常验证点
##### 【P0】【TC-UI-WH-ZON-018】【TP_WH_ZON_052】编辑清空必填拦截
-
前置条件:当前库房至少 1 条库区
-
操作步骤:
1.
打开首行编辑,清空库区名称后点「确 定」
2.
断言被拦截并提示,弹窗仍开
3.
点「取 消」,断言列表名称未被写成空
-
自动化断言:规划与 CSV
`WH-ZON-018`
及
`tests/spd/warehouse-zone.spec.ts`
一致
###### 预期结果
清空必填不能保存;原记录名称保持。
---
### 库区设置 · 人员管理
#### 功能验证点
##### 【P0】【TC-UI-WH-ZON-019】【TP_WH_ZON_061】打开人员管理后关闭
-
前置条件:当前库房至少 1 条库区
-
操作步骤:
1.
点击首行「人员管理」
2.
断言打开弹层或子页,标题含人员管理或对应当前库区
3.
关闭后断言仍在库区设置,当前库房选中保持
-
自动化断言:规划与 CSV
`WH-ZON-019`
及
`tests/spd/warehouse-zone.spec.ts`
一致
###### 预期结果
人员管理可打开;关闭后回到当前库房列表。本条不改人员。
---
### 库区设置 · 货位管理
#### 功能验证点
##### 【P0】【TC-UI-WH-ZON-020】【TP_WH_ZON_066】打开货位管理后关闭
-
前置条件:当前库房至少 1 条库区
-
操作步骤:
1.
点击首行「货位管理」
2.
断言打开弹层或子页,标题含货位且对应当前库区
3.
关闭后断言库房选中与库区列表保持
-
自动化断言:规划与 CSV
`WH-ZON-020`
及
`tests/spd/warehouse-zone.spec.ts`
一致
###### 预期结果
货位管理可打开;关闭后列表状态保持。本条不改货位。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 |
**20**
条(P0=15 / P1=5) |
| 来源 | 从 74 条测试点选取可稳定自动化的主路径与关键反向 |
| 未纳入自动化 | 真实保存新增/编辑、停用启用持久化、接口失败注入、会话过期、无菜单权限、人员/货位子页字段细节 |
| 单一职责 | 每条只断言一个核心业务结果 |
| 独立性 | 每条独立
`open()`
,不复用 BrowserContext;不依赖上一条写结果 |
testcases/基础管理-库房管理-探针绑定-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-库房管理-探针绑定 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-库房管理-探针绑定-测试点分析-01.md`
**执行 CSV**
:
`testcase/基础管理-库房管理-探针绑定-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/storehouse/storehouse/probe`
**定位器 YAML**
:
`locators/spd/warehouse-probe.locator.yaml`
**元素扫描**
:
`data/scan/warehouse-probe-elements.json`
(78 项)
**关联规范**
:
`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-WH-002.md`
**版本**
:2026-10-20
**自动化框架**
:Playwright + TypeScript(规划
`tests/spd/warehouse-probe.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:正例账号
`test_1`
经
`auth.setup`
写入
`storageState`
(密码仅存
`.env`
的
`TEST_PASS`
);具备「基础设置 → 库房管理 → 探针绑定」权限。反例筛选用 mock。
**页面约定**
:整页渲染,
**无报表 iframe**
;定位均在
`page`
上。
**菜单导航**
:菜单「基础设置 → 库房管理 → 探针绑定」;建议
`openPath('/spd/basic/storehouse/storehouse/probe')`
并断言 URL。
**写操作**
:绑定货位只打开弹窗后取消,不点确定保存;不改绑定关系。
**动态取数**
:查询后从首行读取
`${sampleProbeId}`
、
`${sampleHostCode}`
、
`${sampleBindFlag}`
、
`${sampleBindCount}`
;mock:
`__NOT_EXIST_PROBE__99999`
。
---
## 基础设置 · 库房管理
### 探针绑定 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-WH-PRB-001】【TP_WH_PRB_001】菜单进入探针绑定页
-
前置条件:已进入探针绑定页
-
操作步骤:
1.
按菜单「基础设置 → 库房管理 → 探针绑定」进入,或
`openPath`
打开
`/spd/basic/storehouse/storehouse/probe`
2.
断言 URL 含
`/spd/basic/storehouse/storehouse/probe`
3.
断言探针ID、主机编码、是否绑定货位、查询、重置、列表与分页可见
-
自动化断言:规划与 CSV
`WH-PRB-001`
及
`tests/spd/warehouse-probe.spec.ts`
一致
###### 预期结果
进入探针绑定页;不误入库区设置。
---
#### 异常验证点
##### 【P0】【TC-UI-WH-PRB-002】【TP_WH_PRB_005】未登录访问拦截
-
前置条件:已进入探针绑定页
-
操作步骤:
1.
清除登录态后直接打开
`/spd/basic/storehouse/storehouse/probe`
2.
断言跳转登录或不展示探针业务列表
-
自动化断言:规划与 CSV
`WH-PRB-002`
及
`tests/spd/warehouse-probe.spec.ts`
一致
###### 预期结果
未登录不可见探针数据。
---
### 探针绑定 · 筛选与查询
#### 功能验证点
##### 【P0】【TC-UI-WH-PRB-003】【TP_WH_PRB_009】默认查询列表有数据或空态明确
-
前置条件:已进入探针绑定页
-
操作步骤:
1.
点击「查 询」并等待列表稳定
2.
断言出现数据行,或「暂无数据」且分页总数为 0
-
自动化断言:规划与 CSV
`WH-PRB-003`
及
`tests/spd/warehouse-probe.spec.ts`
一致
###### 预期结果
查询无报错;有数据时「共 N 条」N≥1。
---
##### 【P0】【TC-UI-WH-PRB-004】【TP_WH_PRB_010】按探针ID查询
-
前置条件:默认查询至少 1 条且探针ID非空
-
操作步骤:
1.
从首行读取
`${sampleProbeId}`
2.
探针ID填入该值,点击「查 询」
3.
断言结果探针ID匹配,精确命中时行数合理
-
自动化断言:规划与 CSV
`WH-PRB-004`
及
`tests/spd/warehouse-probe.spec.ts`
一致
###### 预期结果
探针ID条件生效。
---
##### 【P0】【TC-UI-WH-PRB-005】【TP_WH_PRB_011】按主机编码查询
-
前置条件:默认查询至少 1 条且主机编码非空
-
操作步骤:
1.
从首行读取
`${sampleHostCode}`
2.
主机编码填入该值,点击「查 询」
3.
断言结果行「主机编码」与条件一致
-
自动化断言:规划与 CSV
`WH-PRB-005`
及
`tests/spd/warehouse-probe.spec.ts`
一致
###### 预期结果
主机编码条件生效;允许多探针共用同一主机。
---
##### 【P0】【TC-UI-WH-PRB-006】【TP_WH_PRB_012】按是否绑定货位查询
-
前置条件:已进入探针绑定页
-
操作步骤:
1.
是否绑定货位选择「已绑定」,点击「查 询」
2.
断言结果「是否绑定货位」均为已绑定,且「绑定的货位」>0
3.
再选「未绑定」查询,断言均为未绑定且数量为 0(无数据则空态)
-
自动化断言:规划与 CSV
`WH-PRB-006`
及
`tests/spd/warehouse-probe.spec.ts`
一致
###### 预期结果
已绑定数量大于 0;未绑定数量为 0。
---
##### 【P0】【TC-UI-WH-PRB-007】【TP_WH_PRB_013】探针ID+主机编码组合查询
-
前置条件:默认查询至少 1 条
-
操作步骤:
1.
填写
`${sampleProbeId}`
与
`${sampleHostCode}`
后点击「查 询」
2.
断言结果同时满足已填条件
-
自动化断言:规划与 CSV
`WH-PRB-007`
及
`tests/spd/warehouse-probe.spec.ts`
一致
###### 预期结果
组合条件同时生效。
---
##### 【P1】【TC-UI-WH-PRB-008】【TP_WH_PRB_014】重置恢复默认
-
前置条件:已进入探针绑定页
-
操作步骤:
1.
填写探针ID后点击「重 置」
2.
断言条件恢复默认,列表按默认规则刷新
-
自动化断言:规划与 CSV
`WH-PRB-008`
及
`tests/spd/warehouse-probe.spec.ts`
一致
###### 预期结果
条件恢复默认;列表刷新。
---
#### 异常验证点
##### 【P1】【TC-UI-WH-PRB-009】【TP_WH_PRB_018】无匹配空态(mock反例)
-
前置条件:已进入探针绑定页
-
操作步骤:
1.
探针ID填入
`__NOT_EXIST_PROBE__99999`
,点击「查 询」
2.
断言空态且分页总数为 0
-
自动化断言:规划与 CSV
`WH-PRB-009`
及
`tests/spd/warehouse-probe.spec.ts`
一致
###### 预期结果
无匹配不报错;总数为 0。
---
### 探针绑定 · 列表与分页
#### 功能验证点
##### 【P0】【TC-UI-WH-PRB-010】【TP_WH_PRB_020】列表核心列与数量规则
-
前置条件:已进入探针绑定页
-
操作步骤:
1.
断言表头含序号、探针ID、主机编码、是否绑定货位、绑定的货位、操作
2.
抽样已绑定行:绑定数量为数字且 >0;抽样未绑定行:数量为 0
3.
断言「绑定的货位」列不是货位号格式
-
自动化断言:规划与 CSV
`WH-PRB-010`
及
`tests/spd/warehouse-probe.spec.ts`
一致
###### 预期结果
核心列完整;数量列是数字不是货位号。
---
### 探针绑定 · 打开绑定货位弹窗
#### 功能验证点
##### 【P0】【TC-UI-WH-PRB-011】【TP_WH_PRB_030】行内打开货位绑定探针
-
前置条件:列表至少 1 条
-
操作步骤:
1.
点击首行「绑定货位」
2.
断言弹出「货位绑定探针」,可见当前库房/库区/货位查询及货位列表
-
自动化断言:规划与 CSV
`WH-PRB-011`
及
`tests/spd/warehouse-probe.spec.ts`
一致
###### 预期结果
弹窗标题正确;筛选与列表可见。
---
##### 【P1】【TC-UI-WH-PRB-012】【TP_WH_PRB_031】取消关闭不改主列表
-
前置条件:列表至少 1 条
-
操作步骤:
1.
记录主列表首行绑定数量与当前筛选
2.
打开绑定弹窗后点「取 消」
3.
断言主列表绑定数量与筛选条件保持
-
自动化断言:规划与 CSV
`WH-PRB-012`
及
`tests/spd/warehouse-probe.spec.ts`
一致
###### 预期结果
取消不改绑定关系。
---
#### 边界验证点
##### 【P1】【TC-UI-WH-PRB-013】【TP_WH_PRB_032】未选货位时确定计数为 0
-
前置条件:列表至少 1 条
-
操作步骤:
1.
打开绑定弹窗,不勾选货位
2.
断言底部按钮文案为「确定(0)」或等价
3.
点「取 消」,不点确定保存
-
自动化断言:规划与 CSV
`WH-PRB-013`
及
`tests/spd/warehouse-probe.spec.ts`
一致
###### 预期结果
未选时计数为 0;本条不保存绑定。
---
#### 集成验证点
##### 【P1】【TC-UI-WH-PRB-014】【TP_WH_PRB_034】弹窗分页独立于主列表
-
前置条件:列表至少 1 条
-
操作步骤:
1.
记录主列表「共 N 条」
2.
打开绑定弹窗,记录弹窗分页「共 M 条」
3.
断言不得用 M 断言主列表 N(货位量级可远大于探针条数)
4.
点「取 消」
-
自动化断言:规划与 CSV
`WH-PRB-014`
及
`tests/spd/warehouse-probe.spec.ts`
一致
###### 预期结果
弹窗总条数与主列表探针条数相互独立。
---
### 探针绑定 · 弹窗筛选货位
#### 功能验证点
##### 【P0】【TC-UI-WH-PRB-015】【TP_WH_PRB_035】按当前库房筛选货位
-
前置条件:列表至少 1 条
-
操作步骤:
1.
打开绑定弹窗,记录默认
`${sampleModalWh}`
2.
点「查 询」
3.
断言可见行「当前库房」与所选库房一致(有数据时)
4.
点「取 消」
-
自动化断言:规划与 CSV
`WH-PRB-015`
及
`tests/spd/warehouse-probe.spec.ts`
一致
###### 预期结果
弹窗库房条件生效。
---
##### 【P1】【TC-UI-WH-PRB-016】【TP_WH_PRB_038】弹窗内重置
-
前置条件:列表至少 1 条
-
操作步骤:
1.
打开绑定弹窗,填写货位查询关键字后点「重 置」
2.
断言货位查询条件恢复,列表按弹窗默认规则刷新
3.
点「取 消」
-
自动化断言:规划与 CSV
`WH-PRB-016`
及
`tests/spd/warehouse-probe.spec.ts`
一致
###### 预期结果
弹窗重置不影响主列表筛选。
---
### 探针绑定 · 勾选货位并保存绑定
#### 功能验证点
##### 【P1】【TC-UI-WH-PRB-017】【TP_WH_PRB_043】勾选后确定计数增加再取消勾选
-
前置条件:弹窗货位列表至少 1 条
-
操作步骤:
1.
打开绑定弹窗,勾选 1 个货位
2.
断言确定按钮计数为 1
3.
取消该勾选,断言计数回到 0
4.
点「取 消」,不保存
-
自动化断言:规划与 CSV
`WH-PRB-017`
及
`tests/spd/warehouse-probe.spec.ts`
一致
###### 预期结果
计数随勾选变化;取消勾选不落库。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 |
**17**
条(P0=10 / P1=7) |
| 来源 | 从 49 条测试点选取可稳定自动化的主路径与关键反向 |
| 未纳入自动化 | 真实勾选确定绑定、换绑/占用规则落库、接口失败、会话过期、无菜单权限 |
| 单一职责 | 每条只断言一个核心业务结果 |
| 独立性 | 每条独立
`open()`
,不复用 BrowserContext;不依赖上一条写结果 |
testcases/基础管理-手术套包设置-基础包维护-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-手术套包设置-基础包维护 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-手术套包设置-基础包维护-测试点分析-01.md`
**执行 CSV**
:
`testcase/基础管理-手术套包设置-基础包维护-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/operationSetting/baseMaintenance`
**定位器 YAML**
:
`locators/spd/surgery-base-pkg.locator.yaml`
**元素扫描**
:
`data/scan/surgery-base-pkg-elements.json`
(87 项)
**关联规范**
:
`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-SURG-001.md`
**版本**
:2026-10-13
**自动化框架**
:Playwright + TypeScript(规划
`tests/spd/surgery-base-pkg.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:已执行
`auth.setup`
,
`storageState`
有效(已通过
`auth.setup`
写入,用例内不重复登录);测试账号具备「基础设置 → 手术套包设置 → 基础包维护」权限。
**测试数据**
:正例复用
`auth.setup`
写入的登录态;反例使用 mock 数据(无匹配关键字
`__NOT_EXIST_BASE__99999`
、空必填项),不依赖真实业务数据。
**页面约定**
:整页渲染,
**无报表 iframe**
;左右分栏(左分类树 + 右列表)。
**菜单导航**
:
`page.getByRole('menuitem', { name: '基础包维护', exact: true })`
(注意与「术种维护」「标准套包维护」区分)。
**写操作**
:基础包名称使用
`${uniqPkgName}`
(建议
`AUTO-BASE-${timestamp}`
),包编码使用
`${uniqPkgCode}`
;用例结束按环境约定清理,禁止写死生产基础包。
**动态取数约定**
:
1.
打开页面后从左树读取
`${sampleCategoryName}`
,从右侧首行读取
`${sampleProductCode}`
、
`${sampleProductName}`
、
`${sampleSpecModel}`
、
`${sampleMfrsName}`
。
2.
筛选关键字使用样本占位,
**禁止写死**
产品/注册人名称;mock 无匹配值:
`__NOT_EXIST_BASE__99999`
。
3.
左侧分类搜索框
`categorySearchInput`
、分类弹窗名称框
`basePkgCategoryName`
(
`#form_item_kindName`
)。
---
## 基础设置 · 手术套包设置
### 基础包维护 · 左侧分类树
#### 功能验证点
##### 【P0】【TC-UI-SURG-BASE-001】【TP_SURG_BASE_009】分类名称搜索过滤
-
前置条件:左侧树至少 1 个非空分类节点
-
操作步骤:
1.
从树读取
`${sampleCategoryName}`
2.
在
`categorySearchInput`
填入该关键字(即时过滤或回车,以现网为准)
3.
断言树节点文本均包含该关键字
-
自动化断言:规划与 CSV
`SURG-BASE-001`
一致
###### 预期结果
过滤后树节点名称与关键字匹配;无未捕获异常。
---
##### 【P0】【TC-UI-SURG-BASE-002】【TP_SURG_BASE_010】选择分类联动右侧列表
-
前置条件:左侧树至少 1 个分类节点,右侧有数据
-
操作步骤:
1.
点击
`${sampleCategoryName}`
节点
2.
等待右侧列表刷新稳定
3.
断言列表首屏加载无报错,分页「共 N 条」与当前分类规模一致
-
自动化断言:规划与 CSV
`SURG-BASE-002`
一致
###### 预期结果
右侧仅展示该分类下基础包;总数与筛选一致。
---
##### 【P1】【TC-UI-SURG-BASE-003】【TP_SURG_BASE_012】打开新增分类弹窗
-
前置条件:已进入基础包维护页
-
操作步骤:
1.
点击「新增分类」
2.
断言弹窗可见,含分类名称输入(
`basePkgCategoryName`
)与「取 消」「确 认」
3.
点击「取 消」关闭
-
自动化断言:规划与 CSV
`SURG-BASE-003`
一致
###### 预期结果
新增分类弹窗字段完整;取消可关闭。
---
#### 边界验证点
##### 【P2】【TC-UI-SURG-BASE-004】【TP_SURG_BASE_013】分类搜索清空恢复全量
-
前置条件:已用
`${sampleCategoryName}`
过滤
-
操作步骤:
1.
记录过滤后节点数
2.
清空
`categorySearchInput`
3.
断言节点数回到未过滤的默认集合(或不少于过滤后节点数)
-
自动化断言:规划与 CSV
`SURG-BASE-004`
一致
###### 预期结果
清空后分类树恢复默认集合。
---
### 基础包维护 · 右侧筛选与列表
#### 功能验证点
##### 【P0】【TC-UI-SURG-BASE-005】【TP_SURG_BASE_017】默认列出基础包或空态明确
-
前置条件:已进入基础包维护页
-
操作步骤:
1.
等待列表稳定
2.
断言出现数据行,或「暂无数据」且分页总数为 0
-
自动化断言:规划与 CSV
`SURG-BASE-005`
一致
###### 预期结果
加载无报错;有数据时「共 N 条」N≥1;无数据时空态明确。
---
##### 【P0】【TC-UI-SURG-BASE-006】【TP_SURG_BASE_018】产品名称筛选过滤
-
前置条件:默认列表至少 1 条数据
-
操作步骤:
1.
从首行读取
`${sampleProductName}`
2.
在
`productName`
(
`#table_search_form_keyword`
)填入该关键字
3.
点击「查 询」,断言结果行产品名称均包含该关键字
-
自动化断言:规划与 CSV
`SURG-BASE-006`
一致
###### 预期结果
过滤结果与关键字匹配;「共 N 条」随之更新。
---
##### 【P0】【TC-UI-SURG-BASE-007】【TP_SURG_BASE_019】规格型号筛选过滤
-
前置条件:默认列表至少 1 条数据且含规格型号
-
操作步骤:
1.
从首行读取
`${sampleSpecModel}`
2.
在
`specModel`
(
`#table_search_form_goodsSpec`
)填入该关键字
3.
点击「查 询」,断言结果行规格型号均包含该关键字
-
自动化断言:规划与 CSV
`SURG-BASE-007`
一致
###### 预期结果
按规格型号过滤生效。
---
##### 【P0】【TC-UI-SURG-BASE-008】【TP_SURG_BASE_020】器械注册人筛选过滤
-
前置条件:默认列表至少 1 条数据
-
操作步骤:
1.
从首行读取
`${sampleMfrsName}`
2.
在
`manufacturer`
(
`#table_search_form_goodsMfrsName`
)填入该关键字
3.
点击「查 询」,断言结果行器械注册人均包含该关键字
-
自动化断言:规划与 CSV
`SURG-BASE-008`
一致
###### 预期结果
按器械注册人过滤生效。
---
##### 【P0】【TC-UI-SURG-BASE-009】【TP_SURG_BASE_022】列表核心列完整
-
前置条件:默认列表至少 1 条数据
-
操作步骤:
1.
断言表头包含序号、产品编号、产品名称、规格型号、器械注册人、单位、产地、耗材类型、操作
-
自动化断言:规划与 CSV
`SURG-BASE-009`
一致
###### 预期结果
核心列均可见,操作列含「编 辑」「移 除」。
---
##### 【P1】【TC-UI-SURG-BASE-010】【TP_SURG_BASE_023】查询与重置
-
前置条件:已用关键字过滤
-
操作步骤:
1.
点击「重 置」
2.
断言筛选输入框被清空、列表恢复默认集合
-
自动化断言:规划与 CSV
`SURG-BASE-010`
一致
###### 预期结果
重置清空筛选并恢复默认列表。
---
##### 【P1】【TC-UI-SURG-BASE-011】【TP_SURG_BASE_024】分页与页大小切换
-
前置条件:默认列表总数大于单页行数上限
-
操作步骤:
1.
切换每页条数(如 50 → 100)
2.
断言单页行数不超过所选值,分页总数不变
-
自动化断言:规划与 CSV
`SURG-BASE-011`
一致
###### 预期结果
页大小切换生效;总数保持稳定。
---
#### 边界验证点
##### 【P2】【TC-UI-SURG-BASE-012】【TP_SURG_BASE_026】首页上一页不可用
-
前置条件:已进入第 1 页
-
操作步骤:
1.
断言「上一页」置灰或点击无效果
-
自动化断言:规划与 CSV
`SURG-BASE-012`
一致
###### 预期结果
第 1 页无法回到上一页。
---
#### 异常验证点
##### 【P1】【TC-UI-SURG-BASE-013】【TP_SURG_BASE_028】搜索无匹配空态
-
前置条件:已进入基础包维护页
-
操作步骤:
1.
在
`productName`
输入不存在关键字
`__NOT_EXIST_BASE__99999`
2.
点击「查 询」
3.
断言「暂无数据」且分页总数为 0
-
自动化断言:规划与 CSV
`SURG-BASE-013`
一致
###### 预期结果
无匹配时空态明确,不白屏。
---
### 基础包维护 · 新增基础包
#### 功能验证点
##### 【P0】【TC-UI-SURG-BASE-014】【TP_SURG_BASE_030】打开新增基础包弹窗
-
前置条件:已进入基础包维护页
-
操作步骤:
1.
点击「新增基础包」
2.
断言弹窗可见,含基础包名称(
`basePkgName`
)、所属分类(
`basePkgCategory`
)、包编码(
`basePkgCode`
)、备注(
`remark`
)
3.
断言含「取 消」「确 认」
-
自动化断言:规划与 CSV
`SURG-BASE-014`
一致
###### 预期结果
新增基础包弹窗字段完整(名称/所属分类/包编码/备注)。
---
##### 【P0】【TC-UI-SURG-BASE-015】【TP_SURG_BASE_034】新增取消不落库
-
前置条件:已进入基础包维护页
-
操作步骤:
1.
记录当前分页总数
`${sampleTotal}`
2.
打开新增,填写名称
`${uniqPkgName}`
后点「取 消」
3.
断言列表总数不变,且无该名称行
-
自动化断言:规划与 CSV
`SURG-BASE-015`
一致
###### 预期结果
取消后不新增基础包。
---
##### 【P0】【TC-UI-SURG-BASE-016】【TP_SURG_BASE_031】合法必填新增成功
-
前置条件:允许写基础包;名称
`${uniqPkgName}`
、编码
`${uniqPkgCode}`
-
操作步骤:
1.
打开新增,填写名称、所属分类、包编码
2.
点击「确 认」
3.
断言弹窗关闭,列表出现该名称行且字段一致
4.
后置:按环境约定清理该基础包,避免污染主数据
-
自动化断言:规划与 CSV
`SURG-BASE-016`
一致;环境禁止写则 skip
###### 预期结果
新增成功且列表可见;用例结束清理,不留生产脏数据。
---
#### 异常验证点
##### 【P0】【TC-UI-SURG-BASE-017】【TP_SURG_BASE_037】基础包名称为空拦截
-
前置条件:已打开新增基础包弹窗
-
操作步骤:
1.
名称留空,补齐所属分类与包编码后点「确 认」
2.
断言必填提示,弹窗仍在,列表无新行
-
自动化断言:规划与 CSV
`SURG-BASE-017`
一致
###### 预期结果
确定被拦截;不落库。
---
##### 【P0】【TC-UI-SURG-BASE-018】【TP_SURG_BASE_038】所属分类为空拦截
-
前置条件:已打开新增基础包弹窗
-
操作步骤:
1.
填写名称与包编码,不选所属分类,点「确 认」
2.
断言必填提示,弹窗仍在
-
自动化断言:规划与 CSV
`SURG-BASE-018`
一致
###### 预期结果
确定被拦截;不落库。
---
##### 【P1】【TC-UI-SURG-BASE-019】【TP_SURG_BASE_040】重复点击确定防重
-
前置条件:已打开新增弹窗并填写合法数据
-
操作步骤:
1.
快速连点「确 认」两次
2.
断言只产生一条基础包(或无重复名称/编码行)
-
自动化断言:规划与 CSV
`SURG-BASE-019`
一致;环境禁止写则 skip
###### 预期结果
连点只落一条;无重复脏数据。
---
### 基础包维护 · 行内操作(编辑 / 移除)
#### 功能验证点
##### 【P0】【TC-UI-SURG-BASE-020】【TP_SURG_BASE_043】行内编辑回填
-
前置条件:列表至少 1 条数据
-
操作步骤:
1.
从首行读取
`${sampleProductCode}`
2.
点击行内「编 辑」
3.
断言编辑弹窗可见且回填当前行数据
4.
点击「取 消」关闭
-
自动化断言:规划与 CSV
`SURG-BASE-020`
一致
###### 预期结果
编辑弹窗回填正确;取消不影响数据。
---
#### 异常验证点
##### 【P0】【TC-UI-SURG-BASE-021】【TP_SURG_BASE_046】移除二次确认防误删
-
前置条件:列表至少 1 条数据
-
操作步骤:
1.
记录当前总数为
`${sampleTotal}`
2.
点击首行「移 除」
3.
断言出现确认框,点击「取 消」
4.
断言总数仍为
`${sampleTotal}`
-
自动化断言:规划与 CSV
`SURG-BASE-021`
一致
###### 预期结果
移除有二次确认;取消不删除。
---
#### 集成验证点
##### 【P1】【TC-UI-SURG-BASE-022】【TP_SURG_BASE_042】新增基础包可在标准套包被引用
-
前置条件:已新增
`${uniqPkgName}`
且未清理
-
操作步骤:
1.
进入「标准套包维护」,点击「添加基础包」
2.
在弹窗搜索框输入
`${uniqPkgName}`
3.
断言可检索到该基础包并可勾选
4.
后置:清理该基础包
-
自动化断言:规划与 CSV
`SURG-BASE-022`
一致;环境禁止写则 skip
###### 预期结果
新增基础包在标准套包可选;跨页数据一致。
---
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 |
**22**
条(P0=14 / P1=6 / P2=2) |
| 来源 | 从 49 条测试点选取可稳定自动化的主路径与关键反向 |
| 未纳入自动化 | 未登录权限矩阵、分类增删主数据联动、编辑保存落库、被套包引用时移除策略、列表接口异常注入 |
| 数据隔离 | 新增必须用唯一名称/编码并清理;编辑/移除不改生产主数据 |
| 单一职责 | 每条只断言一个核心业务结果 |
testcases/基础管理-手术套包设置-术种维护-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-手术套包设置-术种维护 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-手术套包设置-术种维护-测试点分析-01.md`
**执行 CSV**
:
`testcase/基础管理-手术套包设置-术种维护-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/operationSetting/typeMaintenance`
**定位器 YAML**
:
`locators/spd/surgery-oper-type.locator.yaml`
**元素扫描**
:
`data/scan/surgery-oper-type-elements.json`
(69 项)
**关联规范**
:
`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-SURG-002.md`
**版本**
:2026-10-13
**自动化框架**
:Playwright + TypeScript(规划
`tests/spd/surgery-oper-type.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:已执行
`auth.setup`
,
`storageState`
有效(已通过
`auth.setup`
写入,用例内不重复登录);测试账号具备「基础设置 → 手术套包设置 → 术种维护」权限。
**测试数据**
:正例复用
`auth.setup`
写入的登录态;反例使用 mock 数据(无匹配关键字
`__NOT_EXIST_OPER__99999`
、空必填项),不依赖真实业务数据。
**页面约定**
:整页渲染,
**无报表 iframe**
;左右分栏(左术种分类树 + 右筛选/状态 Tab/列表)。
**菜单导航**
:
`page.getByRole('menuitem', { name: '术种维护', exact: true })`
(注意与「基础包维护」「标准套包维护」区分)。
**写操作**
:术种名称使用
`${uniqOperName}`
(建议
`AUTO-OPER-${timestamp}`
);停用为写操作,用例结束按环境约定恢复/清理,禁止写死生产术种。
**动态取数约定**
:
1.
打开页面后从左树读取
`${sampleOperCategoryName}`
,从右侧首行读取
`${sampleOperName}`
、
`${sampleDiseaseName}`
、
`${sampleIcd10Code}`
、
`${sampleIcd9Code}`
。
2.
筛选关键字使用样本占位,
**禁止写死**
术种/病种名称;mock 无匹配值:
`__NOT_EXIST_OPER__99999`
。
3.
状态 Tab 定位:
`tab`
(全部)/「停用」/「未建分类」,切换后断言括号计数与列表规模一致。
4.
分类搜索框
`operTypeCategoryInput`
;分类维护弹窗名称框
`operTypeCategoryName`
(
`#basic_kindName`
)。
---
## 基础设置 · 手术套包设置
### 术种维护 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-SURG-TYPE-001】【TP_SURG_TYPE_001】菜单进入术种维护页
-
前置条件:已登录且具备手术套包设置权限
-
操作步骤:
1.
按菜单「基础设置 → 手术套包设置 → 术种维护」进入
2.
断言 URL 含
`/spd/basic/operationSetting/typeMaintenance`
3.
断言左侧分类树(
`operTypeCategoryInput`
)、右侧筛选区、状态 Tab、列表与分页可见
-
自动化断言:规划与 CSV
`SURG-TYPE-001`
及
`tests/spd/surgery-oper-type.spec.ts`
一致
###### 预期结果
进入术种维护页;不误入基础包维护/标准套包维护;左右分栏渲染完整。
---
##### 【P1】【TC-UI-SURG-TYPE-002】【TP_SURG_TYPE_003】同组页签切换后返回
-
前置条件:已进入术种维护页
-
操作步骤:
1.
点击页内 Tab 「标准套包维护」,等待 URL 切换
2.
返回点击 Tab 「术种维护」
3.
断言 URL 回到
`typeMaintenance`
,左树与状态 Tab 重新渲染
-
自动化断言:规划与 CSV
`SURG-TYPE-002`
一致
###### 预期结果
三页签互切正常;返回后本页数据恢复。
---
#### 异常验证点
##### 【P0】【TC-UI-SURG-TYPE-003】【TP_SURG_TYPE_005】未登录访问拦截
-
前置条件:
`test.use({ storageState: { cookies: [], origins: [] } })`
无登录态
-
操作步骤:
1.
直接访问
`/spd/basic/operationSetting/typeMaintenance`
2.
断言跳转登录页或不展示术种列表数据
-
自动化断言:规划与 CSV
`SURG-TYPE-003`
一致
###### 预期结果
未登录被拦截,不泄露术种数据。
---
### 术种维护 · 左侧术种分类树
#### 功能验证点
##### 【P0】【TC-UI-SURG-TYPE-004】【TP_SURG_TYPE_009】术种分类名称搜索过滤
-
前置条件:左侧树至少 1 个非空分类节点
-
操作步骤:
1.
从树读取
`${sampleOperCategoryName}`
2.
在
`operTypeCategoryInput`
填入该关键字(即时过滤或回车,以现网为准)
3.
断言树节点文本均包含该关键字
-
自动化断言:规划与 CSV
`SURG-TYPE-004`
一致
###### 预期结果
过滤后树节点名称与关键字匹配;无未捕获异常。
---
##### 【P0】【TC-UI-SURG-TYPE-005】【TP_SURG_TYPE_010】选择分类联动右侧列表
-
前置条件:左侧树至少 1 个分类节点,右侧有数据
-
操作步骤:
1.
点击
`${sampleOperCategoryName}`
节点
2.
等待右侧列表刷新稳定
3.
断言列表加载无报错,分页「共 N 条」与当前分类规模一致
-
自动化断言:规划与 CSV
`SURG-TYPE-005`
一致
###### 预期结果
右侧仅展示该分类下术种;总数与筛选一致。
---
##### 【P1】【TC-UI-SURG-TYPE-006】【TP_SURG_TYPE_011】分类树计数与下钻
-
前置条件:至少 1 个带计数的分类节点
-
操作步骤:
1.
读取某分类节点括号内计数
`${nodeCount}`
2.
点击该节点,断言右侧「共 N 条」与
`${nodeCount}`
一致
-
自动化断言:规划与 CSV
`SURG-TYPE-006`
一致
###### 预期结果
分类计数与该分类下术种条数一致。
---
##### 【P1】【TC-UI-SURG-TYPE-007】【TP_SURG_TYPE_013】打开分类维护弹窗
-
前置条件:已进入术种维护页
-
操作步骤:
1.
点击左侧「新增」
2.
断言弹窗可见,含分类名称输入(
`operTypeCategoryName`
)与「取 消」「保 存」
3.
点击「取 消」关闭
-
自动化断言:规划与 CSV
`SURG-TYPE-007`
一致
###### 预期结果
分类维护弹窗字段完整;取消可关闭。
---
#### 边界验证点
##### 【P2】【TC-UI-SURG-TYPE-008】【TP_SURG_TYPE_014】分类搜索清空恢复全量
-
前置条件:已用
`${sampleOperCategoryName}`
过滤
-
操作步骤:
1.
记录过滤后节点数
2.
清空
`operTypeCategoryInput`
3.
断言节点数回到未过滤的默认集合
-
自动化断言:规划与 CSV
`SURG-TYPE-008`
一致
###### 预期结果
清空后分类树恢复默认集合。
---
### 术种维护 · 筛选与状态 Tab
#### 功能验证点
##### 【P0】【TC-UI-SURG-TYPE-009】【TP_SURG_TYPE_018】术种名称筛选过滤
-
前置条件:默认列表至少 1 条数据
-
操作步骤:
1.
从首行读取
`${sampleOperName}`
2.
在
`operationName`
(
`#table_search_form_operationName`
)填入该关键字
3.
点击「查 询」,断言结果行术种名称均包含该关键字
-
自动化断言:规划与 CSV
`SURG-TYPE-009`
一致
###### 预期结果
过滤结果与关键字匹配;「共 N 条」随之更新。
---
##### 【P0】【TC-UI-SURG-TYPE-010】【TP_SURG_TYPE_019】病种名称筛选过滤
-
前置条件:默认列表至少 1 条数据且含病种名称
-
操作步骤:
1.
从首行读取
`${sampleDiseaseName}`
2.
在
`diseaseName`
(
`#table_search_form_disease`
)填入该关键字
3.
点击「查 询」,断言结果行病种名称均包含该关键字
-
自动化断言:规划与 CSV
`SURG-TYPE-010`
一致
###### 预期结果
按病种名称过滤生效。
---
##### 【P0】【TC-UI-SURG-TYPE-011】【TP_SURG_TYPE_020】状态 Tab 切换与计数一致
-
前置条件:已进入术种维护页
-
操作步骤:
1.
读取「全部」Tab 括号计数
`${totalCount}`
2.
依次点击「停用」「未建分类」「全部」
3.
每次断言列表条数与「共 N 条」和该 Tab 括号计数一致
-
自动化断言:规划与 CSV
`SURG-TYPE-011`
一致
###### 预期结果
Tab 切换后列表仅展示对应状态;括号计数与结果规模一致。
---
##### 【P1】【TC-UI-SURG-TYPE-012】【TP_SURG_TYPE_022】左树 + 筛选 + Tab 组合过滤
-
前置条件:左侧至少 1 个分类节点、右侧至少 1 条数据
-
操作步骤:
1.
选择
`${sampleOperCategoryName}`
节点
2.
填入术种名称关键字并点「查 询」
3.
切到「全部」Tab,断言结果为三者交集且无未捕获异常
-
自动化断言:规划与 CSV
`SURG-TYPE-012`
一致
###### 预期结果
三条件叠加后结果正确,总数一致。
---
##### 【P1】【TC-UI-SURG-TYPE-013】【TP_SURG_TYPE_021】重置清空筛选
-
前置条件:已用关键字过滤
-
操作步骤:
1.
点击「重 置」
2.
断言筛选输入框被清空、列表恢复默认集合
-
自动化断言:规划与 CSV
`SURG-TYPE-013`
一致
###### 预期结果
重置清空筛选并恢复默认列表。
---
#### 边界验证点
##### 【P2】【TC-UI-SURG-TYPE-014】【TP_SURG_TYPE_023】无匹配组合空态
-
前置条件:已进入术种维护页
-
操作步骤:
1.
在
`operationName`
输入不存在关键字
`__NOT_EXIST_OPER__99999`
2.
点击「查 询」
3.
断言「暂无数据」且分页总数为 0
-
自动化断言:规划与 CSV
`SURG-TYPE-014`
一致
###### 预期结果
无匹配时空态明确,不白屏。
---
### 术种维护 · 列表与编码展示
#### 功能验证点
##### 【P0】【TC-UI-SURG-TYPE-015】【TP_SURG_TYPE_027】列表核心列完整
-
前置条件:默认列表至少 1 条数据
-
操作步骤:
1.
断言表头包含序号、术种名称、病种名称、诊断编码(ICD-10)、诊断名称(ICD-10)、操作编码(ICD-9-CM-3)、操作名称(ICD-9-CM-3)、操作
-
自动化断言:规划与 CSV
`SURG-TYPE-015`
一致
###### 预期结果
核心列均可见,操作列含「编 辑」「停用/启用」。
---
##### 【P1】【TC-UI-SURG-TYPE-016】【TP_SURG_TYPE_028】ICD-10 诊断编码展示完整
-
前置条件:列表中至少 1 条含诊断编码的数据
-
操作步骤:
1.
读取含 ICD-10 编码的行
`${sampleIcd10Code}`
2.
断言编码文本完整(如
`A02.000x010`
)不截断、无乱码
-
自动化断言:规划与 CSV
`SURG-TYPE-016`
一致
###### 预期结果
ICD-10 编码完整展示。
---
##### 【P2】【TC-UI-SURG-TYPE-017】【TP_SURG_TYPE_029】ICD-9-CM-3 操作编码展示完整
-
前置条件:列表中至少 1 条含操作编码的数据
-
操作步骤:
1.
读取含操作编码的行
`${sampleIcd9Code}`
2.
断言操作编码(如
`00.0200`
)与操作名称(如
`心脏治疗性超声`
)对应展示无乱码
-
自动化断言:规划与 CSV
`SURG-TYPE-017`
一致
###### 预期结果
ICD-9-CM-3 编码与操作名称对应正确。
---
##### 【P1】【TC-UI-SURG-TYPE-018】【TP_SURG_TYPE_030】分页与页大小切换
-
前置条件:默认列表总数大于单页行数上限
-
操作步骤:
1.
切换每页条数(如 50 → 100)
2.
断言单页行数不超过所选值,分页总数不变
-
自动化断言:规划与 CSV
`SURG-TYPE-018`
一致
###### 预期结果
页大小切换生效;总数保持稳定。
---
#### 边界验证点
##### 【P2】【TC-UI-SURG-TYPE-019】【TP_SURG_TYPE_032】首页上一页不可用
-
前置条件:已进入第 1 页
-
操作步骤:
1.
断言「上一页」置灰或点击无效果
-
自动化断言:规划与 CSV
`SURG-TYPE-019`
一致
###### 预期结果
第 1 页无法回到上一页。
---
### 术种维护 · 新增术种
#### 功能验证点
##### 【P0】【TC-UI-SURG-TYPE-020】【TP_SURG_TYPE_035】打开新增术种入口
-
前置条件:已进入术种维护页
-
操作步骤:
1.
点击「新增术种」
2.
断言新增弹窗/页面可见,含术种名称、病种名称、分类与编码相关字段
3.
断言含「取 消」「保 存」
-
自动化断言:规划与 CSV
`SURG-TYPE-020`
一致
###### 预期结果
新增术种入口字段完整。
---
##### 【P0】【TC-UI-SURG-TYPE-021】【TP_SURG_TYPE_038】新增取消不落库
-
前置条件:已进入术种维护页
-
操作步骤:
1.
记录当前分页总数
`${sampleTotal}`
2.
打开新增,填写名称
`${uniqOperName}`
后点「取 消」
3.
断言列表总数不变,且无该名称行
-
自动化断言:规划与 CSV
`SURG-TYPE-021`
一致
###### 预期结果
取消后不新增术种。
---
#### 异常验证点
##### 【P0】【TC-UI-SURG-TYPE-022】【TP_SURG_TYPE_040】术种名称为空拦截
-
前置条件:已打开新增术种弹窗
-
操作步骤:
1.
名称留空,点「保 存」
2.
断言必填提示,弹窗仍在,列表无新行
-
自动化断言:规划与 CSV
`SURG-TYPE-022`
一致
###### 预期结果
保存被拦截;不落库。
---
### 术种维护 · 行内操作(编辑 / 停用)
#### 功能验证点
##### 【P0】【TC-UI-SURG-TYPE-023】【TP_SURG_TYPE_045】行内编辑回填
-
前置条件:列表至少 1 条数据
-
操作步骤:
1.
点击首行「编 辑」
2.
断言编辑弹窗可见且回填当前术种数据
3.
点击「取 消」关闭
-
自动化断言:规划与 CSV
`SURG-TYPE-023`
一致
###### 预期结果
编辑弹窗回填正确;取消不影响数据。
---
##### 【P1】【TC-UI-SURG-TYPE-024】【TP_SURG_TYPE_046】停用状态流转
-
前置条件:列表中存在启用状态术种(优先选
`${uniqOperName}`
自建数据)
-
操作步骤:
1.
记录「停用」Tab 当前计数
`${disabledCount}`
2.
点击目标行「停用」,若有确认框则点「确 定」
3.
断言「停用」Tab 计数 +1
4.
后置:对该术种执行「启用」恢复
-
自动化断言:规划与 CSV
`SURG-TYPE-024`
一致;环境禁止写则 skip
###### 预期结果
术种状态变为停用;「停用」计数 +1;结束恢复原状态。
---
#### 异常验证点
##### 【P0】【TC-UI-SURG-TYPE-025】【TP_SURG_TYPE_049】停用二次确认防误操作
-
前置条件:列表中存在启用状态术种
-
操作步骤:
1.
记录「停用」Tab 当前计数
2.
点击首行「停用」
3.
若出现确认框则点「取 消」
4.
断言计数未变化
-
自动化断言:规划与 CSV
`SURG-TYPE-025`
一致
###### 预期结果
停用有二次确认;取消不改状态。
---
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 |
**25**
条(P0=13 / P1=8 / P2=4) |
| 来源 | 从 53 条测试点选取可稳定自动化的主路径与关键反向 |
| 未纳入自动化 | 未登录权限矩阵、分类新增落库、新增术种保存落库、ICD 字典一致性、停用后下游不可选联调 |
| 数据隔离 | 新增/停用使用唯一名称并恢复/清理;不改生产术种状态 |
| 单一职责 | 每条只断言一个核心业务结果 |
testcases/基础管理-手术套包设置-标准套包维护-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-手术套包设置-标准套包维护 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-手术套包设置-标准套包维护-测试点分析-01.md`
**执行 CSV**
:
`testcase/基础管理-手术套包设置-标准套包维护-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/operationSetting/standardMaintenance`
**定位器 YAML**
:
`locators/spd/surgery-std-pkg.locator.yaml`
**元素扫描**
:
`data/scan/surgery-std-pkg-elements.json`
(61 项)
**关联规范**
:
`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-SURG-003.md`
**版本**
:2026-10-13
**自动化框架**
:Playwright + TypeScript(规划
`tests/spd/surgery-std-pkg.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:已执行
`auth.setup`
,
`storageState`
有效(已通过
`auth.setup`
写入,用例内不重复登录);测试账号具备「基础设置 → 手术套包设置 → 标准套包维护」权限。
**测试数据**
:正例复用
`auth.setup`
写入的登录态;反例使用 mock 数据(无匹配关键字
`__NOT_EXIST_STD__99999`
、空必填项),不依赖真实业务数据。
**页面约定**
:整页渲染,
**无报表 iframe**
;左右分栏(左术种分类树 + 右标准套包构成列表);含两级嵌套弹窗。
**菜单导航**
:
`page.getByRole('menuitem', { name: '标准套包维护', exact: true })`
(注意与「基础包维护」「术种维护」区分)。
**写操作**
:涉及新增/编辑/移除构成项,用例结束按环境约定恢复/清理,禁止写死生产套包。
**动态取数约定**
:
1.
打开页面后从左树读取
`${sampleOperCategoryName}`
,从右侧首行读取
`${samplePkgGroupName}`
、
`${sampleProductCode}`
、
`${sampleProductName}`
、
`${sampleSpecModel}`
、
`${sampleMfrsName}`
。
2.
筛选关键字使用样本占位,
**禁止写死**
产品/注册人名称;mock 无匹配值:
`__NOT_EXIST_STD__99999`
。
3.
构成列表按「包名称」分组,操作前需先
**展开目标包**
(
`expandFilterBtn`
/ 包名称展开节点);断言时避免全量断言。
4.
弹窗:添加基础包
`addBasePkgSearchInput`
(
`请输入分类/基础包名称`
)与数量步进器;添加散件
`stdPkgTreeSearchInput`
(
`请输入术种分类名称、术种名称、标准套包名称`
)、应拣明细统计耗材品种数/耗材总数。
---
## 基础设置 · 手术套包设置
### 标准套包维护 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-SURG-STD-001】【TP_SURG_STD_001】菜单进入标准套包维护页
-
前置条件:已登录且具备手术套包设置权限
-
操作步骤:
1.
按菜单「基础设置 → 手术套包设置 → 标准套包维护」进入
2.
断言 URL 含
`/spd/basic/operationSetting/standardMaintenance`
3.
断言左侧分类树、右侧筛选区、构成列表与分页可见
-
自动化断言:规划与 CSV
`SURG-STD-001`
及
`tests/spd/surgery-std-pkg.spec.ts`
一致
###### 预期结果
进入标准套包维护页;不误入基础包维护/术种维护;左右分栏渲染完整。
---
##### 【P1】【TC-UI-SURG-STD-002】【TP_SURG_STD_003】同组页签切换后返回
-
前置条件:已进入标准套包维护页
-
操作步骤:
1.
点击页内 Tab 「术种维护」,等待 URL 切换
2.
返回点击 Tab 「标准套包维护」
3.
断言 URL 回到
`standardMaintenance`
,左树与构成列表重新渲染
-
自动化断言:规划与 CSV
`SURG-STD-002`
一致
###### 预期结果
三页签互切正常;返回后本页数据恢复。
---
#### 异常验证点
##### 【P0】【TC-UI-SURG-STD-003】【TP_SURG_STD_005】未登录访问拦截
-
前置条件:
`test.use({ storageState: { cookies: [], origins: [] } })`
无登录态
-
操作步骤:
1.
直接访问
`/spd/basic/operationSetting/standardMaintenance`
2.
断言跳转登录页或不展示套包列表数据
-
自动化断言:规划与 CSV
`SURG-STD-003`
一致
###### 预期结果
未登录被拦截,不泄露套包数据。
---
### 标准套包维护 · 左侧术种分类树
#### 功能验证点
##### 【P0】【TC-UI-SURG-STD-004】【TP_SURG_STD_009】术种分类名称搜索过滤
-
前置条件:左侧树至少 1 个非空分类节点
-
操作步骤:
1.
从树读取
`${sampleOperCategoryName}`
2.
在分类搜索框填入该关键字(即时过滤或回车,以现网为准)
3.
断言树节点文本均包含该关键字
-
自动化断言:规划与 CSV
`SURG-STD-004`
一致
###### 预期结果
过滤后树节点名称与关键字匹配;无未捕获异常。
---
##### 【P0】【TC-UI-SURG-STD-005】【TP_SURG_STD_010】选择分类联动构成列表
-
前置条件:左侧树至少 1 个分类节点,右侧有数据
-
操作步骤:
1.
点击
`${sampleOperCategoryName}`
节点
2.
等待右侧构成列表刷新稳定
3.
断言列表加载无报错,分页「共 N 条」与当前分类规模一致
-
自动化断言:规划与 CSV
`SURG-STD-005`
一致
###### 预期结果
右侧仅展示该分类下标准套包;总数与筛选一致。
---
##### 【P2】【TC-UI-SURG-STD-006】【TP_SURG_STD_013】分类搜索清空恢复全量
-
前置条件:已用
`${sampleOperCategoryName}`
过滤
-
操作步骤:
1.
记录过滤后节点数
2.
清空分类搜索框
3.
断言节点数回到未过滤的默认集合
-
自动化断言:规划与 CSV
`SURG-STD-006`
一致
###### 预期结果
清空后分类树恢复默认集合。
---
### 标准套包维护 · 筛选与构成列表
#### 功能验证点
##### 【P0】【TC-UI-SURG-STD-007】【TP_SURG_STD_017】默认展示标准套包构成
-
前置条件:已进入标准套包维护页
-
操作步骤:
1.
等待列表稳定
2.
断言按「包名称」分组出现数据行,或「暂无数据」且分页总数为 0
-
自动化断言:规划与 CSV
`SURG-STD-007`
一致
###### 预期结果
加载无报错;有数据时「共 N 条」N≥1;无数据时空态明确。
---
##### 【P0】【TC-UI-SURG-STD-008】【TP_SURG_STD_018】产品名称筛选过滤
-
前置条件:默认列表至少 1 条数据
-
操作步骤:
1.
从首行读取
`${sampleProductName}`
2.
在
`productName`
(
`#table_search_form_keyword`
)填入该关键字
3.
点击「查 询」,断言结果行产品名称均包含该关键字
-
自动化断言:规划与 CSV
`SURG-STD-008`
一致
###### 预期结果
过滤结果与关键字匹配;「共 N 条」随之更新。
---
##### 【P1】【TC-UI-SURG-STD-009】【TP_SURG_STD_019】规格型号筛选过滤
-
前置条件:默认列表至少 1 条数据且含规格型号
-
操作步骤:
1.
从首行读取
`${sampleSpecModel}`
2.
在
`specModel`
(
`#table_search_form_goodsSpec`
)填入该关键字
3.
点击「查 询」,断言结果行规格型号均包含该关键字
-
自动化断言:规划与 CSV
`SURG-STD-009`
一致
###### 预期结果
按规格型号过滤生效。
---
##### 【P1】【TC-UI-SURG-STD-010】【TP_SURG_STD_020】器械注册人筛选过滤
-
前置条件:默认列表至少 1 条数据
-
操作步骤:
1.
从首行读取
`${sampleMfrsName}`
2.
在
`manufacturer`
(
`#table_search_form_goodsMfrsName`
)填入该关键字
3.
点击「查 询」,断言结果行器械注册人均包含该关键字
-
自动化断言:规划与 CSV
`SURG-STD-010`
一致
###### 预期结果
按器械注册人过滤生效。
---
##### 【P0】【TC-UI-SURG-STD-011】【TP_SURG_STD_022】构成列表核心列完整
-
前置条件:默认列表至少 1 条数据且存在分组
-
操作步骤:
1.
断言表头/首行包含包名称、包数量/每包含量、产品编号、产品名称、规格型号、器械注册人、单位、产地、耗材类型、操作
-
自动化断言:规划与 CSV
`SURG-STD-011`
一致
###### 预期结果
核心列均可见,操作列含「编 辑」「移 除」。
---
##### 【P0】【TC-UI-SURG-STD-012】【TP_SURG_STD_023】包名称展开/收起子项
-
前置条件:列表中存在可展开的包分组
-
操作步骤:
1.
读取首个包分组名称
`${samplePkgGroupName}`
2.
点击展开该分组,断言出现子项行
3.
再次点击收起,断言子项行隐藏
-
自动化断言:规划与 CSV
`SURG-STD-012`
一致
###### 预期结果
展开显示子项、收起隐藏子项;分组计数不受影响。
---
##### 【P1】【TC-UI-SURG-STD-013】【TP_SURG_STD_024】查询与重置
-
前置条件:已用关键字过滤
-
操作步骤:
1.
点击「重 置」
2.
断言筛选输入框被清空、列表恢复默认集合
-
自动化断言:规划与 CSV
`SURG-STD-013`
一致
###### 预期结果
重置清空筛选并恢复默认列表。
---
##### 【P1】【TC-UI-SURG-STD-014】【TP_SURG_STD_025】分页与页大小切换
-
前置条件:默认列表总数大于单页行数上限
-
操作步骤:
1.
切换每页条数(如 50 → 100)
2.
断言单页行数不超过所选值,分页总数不变
-
自动化断言:规划与 CSV
`SURG-STD-014`
一致
###### 预期结果
页大小切换生效;总数保持稳定。
---
#### 边界验证点
##### 【P2】【TC-UI-SURG-STD-015】【TP_SURG_STD_027】无匹配组合空态
-
前置条件:已进入标准套包维护页
-
操作步骤:
1.
在
`productName`
输入不存在关键字
`__NOT_EXIST_STD__99999`
2.
点击「查 询」
3.
断言「暂无数据」且分页总数为 0
-
自动化断言:规划与 CSV
`SURG-STD-015`
一致
###### 预期结果
无匹配时空态明确,不白屏。
---
### 标准套包维护 · 添加基础包弹窗
#### 功能验证点
##### 【P0】【TC-UI-SURG-STD-016】【TP_SURG_STD_032】打开添加基础包弹窗
-
前置条件:已进入标准套包维护页
-
操作步骤:
1.
点击「添加基础包」
2.
断言弹窗可见,含左侧基础包分类树与右侧基础包明细
3.
断言含「取 消」「确定(N)」
-
自动化断言:规划与 CSV
`SURG-STD-016`
一致
###### 预期结果
添加基础包弹窗字段完整;确定按钮带选择计数。
---
##### 【P0】【TC-UI-SURG-STD-017】【TP_SURG_STD_033】弹窗内筛选与选择计数联动
-
前置条件:已打开添加基础包弹窗
-
操作步骤:
1.
在
`addBasePkgSearchInput`
输入基础包关键字
2.
勾选 1 个基础包
3.
断言「确定(N)」计数由 0 变为 1
-
自动化断言:规划与 CSV
`SURG-STD-017`
一致
###### 预期结果
筛选生效;选择数与确定按钮计数联动。
---
##### 【P1】【TC-UI-SURG-STD-018】【TP_SURG_STD_034】弹窗内构成数量可编辑
-
前置条件:已勾选至少 1 个基础包
-
操作步骤:
1.
定位明细行「构成数量」步进器,点击「Increase Value」
2.
断言数量 +1 且合计随之更新
-
自动化断言:规划与 CSV
`SURG-STD-018`
一致
###### 预期结果
构成数量可编辑;加减生效。
---
##### 【P0】【TC-UI-SURG-STD-019】【TP_SURG_STD_036】添加基础包取消不落库
-
前置条件:已进入标准套包维护页
-
操作步骤:
1.
记录当前分页总数
`${sampleTotal}`
2.
打开添加基础包,勾选 1 个基础包后点「取 消」
3.
断言构成列表总数不变
-
自动化断言:规划与 CSV
`SURG-STD-019`
一致
###### 预期结果
取消后不新增构成行。
---
#### 边界验证点
##### 【P2】【TC-UI-SURG-STD-020】【TP_SURG_STD_037】确定按钮零选禁用
-
前置条件:已打开添加基础包弹窗且未选择
-
操作步骤:
1.
断言「确定(0)」置灰或点击无效果
-
自动化断言:规划与 CSV
`SURG-STD-020`
一致
###### 预期结果
未选择时确定不可用。
---
#### 异常验证点
##### 【P1】【TC-UI-SURG-STD-021】【TP_SURG_STD_038】重复添加同一基础包
-
前置条件:标准套包已含某基础包(或先添加一个)
-
操作步骤:
1.
再次打开添加基础包,选择同一基础包并确定
2.
断言按产品规则拒绝/合并/累加,不产生重复脏行
-
自动化断言:规划与 CSV
`SURG-STD-021`
一致;环境禁止写则 skip
###### 预期结果
重复添加不产生重复行(策略以现网为准)。
---
### 标准套包维护 · 添加散件弹窗
#### 功能验证点
##### 【P0】【TC-UI-SURG-STD-022】【TP_SURG_STD_041】打开添加散件弹窗
-
前置条件:已进入标准套包维护页
-
操作步骤:
1.
点击「添加散件」
2.
断言弹窗可见并展示「产品列表」视图,含产品名称/规格型号/器械注册人/耗材类型筛选与分页
-
自动化断言:规划与 CSV
`SURG-STD-022`
一致
###### 预期结果
添加散件弹窗产品列表视图完整。
---
##### 【P0】【TC-UI-SURG-STD-023】【TP_SURG_STD_042】产品列表筛选与选择散件
-
前置条件:已打开添加散件弹窗
-
操作步骤:
1.
在产品名称筛选框输入
`${sampleProductName}`
2.
勾选首个匹配散件
3.
断言散件进入应拣明细,计数同步变化
-
自动化断言:规划与 CSV
`SURG-STD-023`
一致
###### 预期结果
筛选生效;选中散件进入应拣明细。
---
##### 【P0】【TC-UI-SURG-STD-024】【TP_SURG_STD_043】散件规格/应拣明细视图
-
前置条件:已勾选至少 1 个散件
-
操作步骤:
1.
切换到规格明细/应拣明细视图
2.
断言展示耗材品种数、耗材总数,以及应拣数量、产品编号/名称/规格/注册人/单位/耗材类型/是否收费列
-
自动化断言:规划与 CSV
`SURG-STD-024`
一致
###### 预期结果
应拣明细视图字段完整。
---
##### 【P1】【TC-UI-SURG-STD-025】【TP_SURG_STD_044】明细统计与实际一致
-
前置条件:应拣明细含至少 1 个散件
-
操作步骤:
1.
读取「耗材品种数」
`${itemKindCount}`
与「耗材总数」
`${itemTotalCount}`
2.
断言品种数 = 明细去重产品数;总数 = 应拣数量合计
-
自动化断言:规划与 CSV
`SURG-STD-025`
一致
###### 预期结果
统计口径与实际所选一致。
---
##### 【P0】【TC-UI-SURG-STD-026】【TP_SURG_STD_046】添加散件取消不落库
-
前置条件:已进入标准套包维护页
-
操作步骤:
1.
记录当前分页总数
`${sampleTotal}`
2.
打开添加散件,勾选散件后点「取 消」
3.
断言构成列表总数不变
-
自动化断言:规划与 CSV
`SURG-STD-026`
一致
###### 预期结果
取消后不新增散件行。
---
#### 边界验证点
##### 【P2】【TC-UI-SURG-STD-027】【TP_SURG_STD_047】万级散件列表首屏可交互
-
前置条件:添加散件产品列表总量达万级(示例「共 16299 条」)
-
操作步骤:
1.
打开添加散件弹窗
2.
断言首屏可交互(筛选/分页可用),不卡死
3.
避免全量断言,仅校验首行与总数格式
-
自动化断言:规划与 CSV
`SURG-STD-027`
一致
###### 预期结果
万级列表首屏可用;无超时白屏。
---
### 标准套包维护 · 行内操作(编辑 / 移除)
#### 功能验证点
##### 【P0】【TC-UI-SURG-STD-028】【TP_SURG_STD_052】行内编辑构成项
-
前置条件:构成列表至少 1 条数据(先展开目标包)
-
操作步骤:
1.
点击子项行「编 辑」
2.
断言编辑弹窗/表单可见并回填当前值
3.
点击「取 消」关闭
-
自动化断言:规划与 CSV
`SURG-STD-028`
一致
###### 预期结果
编辑回填正确;取消不影响数据。
---
#### 异常验证点
##### 【P0】【TC-UI-SURG-STD-029】【TP_SURG_STD_055】移除二次确认防误删整包
-
前置条件:构成列表至少 1 条数据(先展开目标包)
-
操作步骤:
1.
记录当前行数
2.
点击子项行「移 除」
3.
若出现确认框则点「取 消」
4.
断言行数未变化
-
自动化断言:规划与 CSV
`SURG-STD-029`
一致
###### 预期结果
移除有二次确认;取消不删除。
---
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 |
**29**
条(P0=17 / P1=8 / P2=4) |
| 来源 | 从 57 条测试点选取可稳定自动化的主路径与关键反向 |
| 未纳入自动化 | 未登录权限矩阵、添加基础包/散件保存落库、散件提交接口失败、编辑保存、跨页套包可用性联调、移除整包 |
| 数据隔离 | 新增/编辑/移除使用样本或唯一数据并恢复/清理;不改生产套包构成 |
| 单一职责 | 每条只断言一个核心业务结果 |
| 特殊说明 | 构成列表按包名称分组,操作前先展开目标包;万级散件列表避免全量断言 |
testcases/基础管理-流程设置-审批流实例-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-流程设置-审批流实例 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-流程设置-审批流实例-测试点分析-01.md`
**执行 CSV**
:
`testcase/基础管理-流程设置-审批流实例-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/flowSet/workflow/flowCase`
**定位器 YAML**
:
`locators/spd/flow-inst.locator.yaml`
**元素扫描**
:
`data/scan/flow-inst-elements.json`
(62 项)
**关联规范**
:
`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-FLOW-002.md`
**版本**
:2026-10-20
**自动化框架**
:Playwright + TypeScript(规划
`tests/spd/flow-inst.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:正例账号
`test_1`
经
`auth.setup`
写入
`storageState`
(密码仅存
`.env`
的
`TEST_PASS`
);具备「基础设置 → 流程设置 → 审批流实例」权限。反例筛选用 mock。
**页面约定**
:整页渲染,
**无报表 iframe**
;定位均在
`page`
上。
**菜单导航**
:菜单「基础设置 → 流程设置 → 审批流实例」;建议
`openPath('/spd/basic/flowSet/workflow/flowCase')`
,不要点到审批流程设置。
**写操作**
:本页只读。详情只打开后返回,不改审批人。断言「共 N 条」前先收窄日期。
**动态取数**
:查询后从首行读取
`${sampleOrderNo}`
、
`${sampleBizType}`
、
`${sampleStatus}`
、
`${sampleSummary}`
;mock:
`__NOT_EXIST_FLOW__99999`
。
---
## 基础设置 · 流程设置
### 审批流实例 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-FLOW-INS-001】【TP_FLOW_INS_001】菜单进入审批流实例页
-
前置条件:已进入审批流实例页
-
操作步骤:
1.
按菜单「基础设置 → 流程设置 → 审批流实例」进入,或
`openPath`
打开
`/spd/basic/flowSet/workflow/flowCase`
2.
断言 URL 含
`/spd/basic/flowSet/workflow/flowCase`
3.
断言单据编号、审批状态、发起时间、业务类型、摘要、查询、重置、列表与分页可见
-
自动化断言:规划与 CSV
`FLOW-INS-001`
及
`tests/spd/flow-inst.spec.ts`
一致
###### 预期结果
进入审批流实例;不误入审批流程设置。
---
#### 异常验证点
##### 【P0】【TC-UI-FLOW-INS-002】【TP_FLOW_INS_005】未登录访问拦截
-
前置条件:已进入审批流实例页
-
操作步骤:
1.
清除登录态后直接打开
`/spd/basic/flowSet/workflow/flowCase`
2.
断言跳转登录或不展示审批单据列表
-
自动化断言:规划与 CSV
`FLOW-INS-002`
及
`tests/spd/flow-inst.spec.ts`
一致
###### 预期结果
未登录不可见审批实例。
---
### 审批流实例 · 筛选与查询
#### 功能验证点
##### 【P0】【TC-UI-FLOW-INS-003】【TP_FLOW_INS_009】默认日期区间查询
-
前置条件:已进入审批流实例页
-
操作步骤:
1.
点击「查 询」并等待列表稳定
2.
断言出现数据行或空态明确,「共 N 条」与结果逻辑一致
-
自动化断言:规划与 CSV
`FLOW-INS-003`
及
`tests/spd/flow-inst.spec.ts`
一致
###### 预期结果
默认查询无报错;有数据时 N≥1。
---
##### 【P0】【TC-UI-FLOW-INS-004】【TP_FLOW_INS_010】单据编号精确查询
-
前置条件:默认查询至少 1 条且单据编号非空
-
操作步骤:
1.
从首行读取
`${sampleOrderNo}`
2.
单据编号填入完整单号,点击「查 询」
3.
断言至多 1 条,且编号、业务类型与该行一致
-
自动化断言:规划与 CSV
`FLOW-INS-004`
及
`tests/spd/flow-inst.spec.ts`
一致
###### 预期结果
精确单号命中当前行。
---
##### 【P0】【TC-UI-FLOW-INS-005】【TP_FLOW_INS_011】按审批状态筛选
-
前置条件:已进入审批流实例页
-
操作步骤:
1.
审批状态下拉选择「审批通过」(无该选项则选列表中已出现的状态)
2.
点击「查 询」
3.
断言结果「审批状态」列与所选一致
-
自动化断言:规划与 CSV
`FLOW-INS-005`
及
`tests/spd/flow-inst.spec.ts`
一致
###### 预期结果
状态筛选生效。
---
##### 【P0】【TC-UI-FLOW-INS-006】【TP_FLOW_INS_012】按业务类型筛选
-
前置条件:默认查询至少 1 条
-
操作步骤:
1.
从首行读取
`${sampleBizType}`
2.
业务类型选择该值,点击「查 询」
3.
断言结果「业务类型」均为该类型
-
自动化断言:规划与 CSV
`FLOW-INS-006`
及
`tests/spd/flow-inst.spec.ts`
一致
###### 预期结果
业务类型筛选生效。
---
##### 【P0】【TC-UI-FLOW-INS-007】【TP_FLOW_INS_013】按发起时间区间筛选
-
前置条件:已进入审批流实例页
-
操作步骤:
1.
记录当前默认起止日期
2.
点击「查 询」
3.
抽样结果行「发起时间」落在起止日内(含边界)
-
自动化断言:规划与 CSV
`FLOW-INS-007`
及
`tests/spd/flow-inst.spec.ts`
一致
###### 预期结果
发起时间落在区间内。
---
##### 【P1】【TC-UI-FLOW-INS-008】【TP_FLOW_INS_014】按摘要关键字筛选
-
前置条件:已进入审批流实例页
-
操作步骤:
1.
找到摘要非
`--`
的行读取
`${sampleSummary}`
关键字;若全为
`--`
则填 mock 关键字
2.
点击「查 询」
3.
有关键字命中时摘要包含该关键字;mock 无命中时空态且
`--`
行不被命中
-
自动化断言:规划与 CSV
`FLOW-INS-008`
及
`tests/spd/flow-inst.spec.ts`
一致
###### 预期结果
非空摘要可检索;
`--`
不被非空关键字命中。
---
##### 【P0】【TC-UI-FLOW-INS-009】【TP_FLOW_INS_015】状态+类型组合查询
-
前置条件:默认查询至少 1 条
-
操作步骤:
1.
填写
`${sampleStatus}`
与
`${sampleBizType}`
后点击「查 询」
2.
断言抽样行同时满足全部已填条件
-
自动化断言:规划与 CSV
`FLOW-INS-009`
及
`tests/spd/flow-inst.spec.ts`
一致
###### 预期结果
组合条件同时生效。
---
##### 【P1】【TC-UI-FLOW-INS-010】【TP_FLOW_INS_016】重置恢复默认
-
前置条件:已进入审批流实例页
-
操作步骤:
1.
填写单据编号等条件后点击「重 置」
2.
断言日期回到默认区间,其余条件清空,列表刷新
-
自动化断言:规划与 CSV
`FLOW-INS-010`
及
`tests/spd/flow-inst.spec.ts`
一致
###### 预期结果
重置后日期与其它条件恢复默认。
---
#### 异常验证点
##### 【P1】【TC-UI-FLOW-INS-011】【TP_FLOW_INS_021】无匹配空态(mock反例)
-
前置条件:已进入审批流实例页
-
操作步骤:
1.
单据编号填入
`__NOT_EXIST_FLOW__99999`
,点击「查 询」
2.
断言空态且分页总数为 0
-
自动化断言:规划与 CSV
`FLOW-INS-011`
及
`tests/spd/flow-inst.spec.ts`
一致
###### 预期结果
无匹配不报错;总数为 0。
---
### 审批流实例 · 列表与分页
#### 功能验证点
##### 【P0】【TC-UI-FLOW-INS-012】【TP_FLOW_INS_024】列表核心列完整
-
前置条件:已进入审批流实例页
-
操作步骤:
1.
断言表头含序号、单据编号、业务类型、发起人、发起部门、发起时间、摘要、审批状态、操作
2.
断言行内可见「详情」
-
自动化断言:规划与 CSV
`FLOW-INS-012`
及
`tests/spd/flow-inst.spec.ts`
一致
###### 预期结果
核心列完整;详情入口可见。
---
##### 【P1】【TC-UI-FLOW-INS-013】【TP_FLOW_INS_025】单据编号前缀与业务类型对应
-
前置条件:默认查询有数据
-
操作步骤:
1.
抽样
`PLAN`
/
`DB`
/
`GC`
/
`BUY`
前缀行(有则断言)
2.
断言 PLAN→采购计划、DB→二级库调拨、GC→产品信息变更、BUY→请领单(以现网枚举为准,缺前缀 skip 该项)
-
自动化断言:规划与 CSV
`FLOW-INS-013`
及
`tests/spd/flow-inst.spec.ts`
一致
###### 预期结果
前缀与类型对应。
---
##### 【P1】【TC-UI-FLOW-INS-014】【TP_FLOW_INS_028】分页翻至第 2 页
-
前置条件:总条数大于一页,否则 skip
-
操作步骤:
1.
记录第 1 页首行单据编号
2.
翻到第 2 页
3.
断言数据更换;筛选条件保持
-
自动化断言:规划与 CSV
`FLOW-INS-014`
及
`tests/spd/flow-inst.spec.ts`
一致
###### 预期结果
翻页成功;筛选不丢失。
---
### 审批流实例 · 审批详情
#### 功能验证点
##### 【P0】【TC-UI-FLOW-INS-015】【TP_FLOW_INS_036】打开详情对应当前行
-
前置条件:列表至少 1 条
-
操作步骤:
1.
记录首行
`${sampleOrderNo}`
2.
点击「详情」
3.
断言打开该单审批过程,标题或单号含
`${sampleOrderNo}`
-
自动化断言:规划与 CSV
`FLOW-INS-015`
及
`tests/spd/flow-inst.spec.ts`
一致
###### 预期结果
详情单号与当前行一致。
---
##### 【P1】【TC-UI-FLOW-INS-016】【TP_FLOW_INS_038】关闭详情保留列表状态
-
前置条件:列表至少 1 条
-
操作步骤:
1.
填写单据编号查询后打开详情
2.
点返回/关闭
3.
断言筛选条件与列表仍是打开前的查询结果
-
自动化断言:规划与 CSV
`FLOW-INS-016`
及
`tests/spd/flow-inst.spec.ts`
一致
###### 预期结果
返回后条件与页码保持。
---
##### 【P1】【TC-UI-FLOW-INS-017】【TP_FLOW_INS_037】详情只读
-
前置条件:列表至少 1 条
-
操作步骤:
1.
打开首行详情
2.
断言无保存审批人/改条件的提交按钮,或此类控件不可用
3.
返回列表
-
自动化断言:规划与 CSV
`FLOW-INS-017`
及
`tests/spd/flow-inst.spec.ts`
一致
###### 预期结果
详情只读;改配置须到审批流程设置。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 |
**17**
条(P0=10 / P1=7) |
| 来源 | 从 41 条测试点选取可稳定自动化的主路径与关键反向 |
| 未纳入自动化 | 改审批人、接口失败、会话过期、无菜单权限、详情与流程设置节点逐条对照(可另开集成专项) |
| 单一职责 | 每条只断言一个核心业务结果 |
| 独立性 | 每条独立
`open()`
,不复用 BrowserContext;不依赖上一条写结果 |
testcases/基础管理-流程设置-审批流程设置-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-流程设置-审批流程设置 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-流程设置-审批流程设置-测试点分析-01.md`
**执行 CSV**
:
`testcase/基础管理-流程设置-审批流程设置-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/flowSet/workflow/flowSet`
**定位器 YAML**
:
`locators/spd/flow-def.locator.yaml`
**元素扫描**
:
`data/scan/flow-def-elements.json`
(43 项)
**关联规范**
:
`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-FLOW-001.md`
**版本**
:2026-10-20
**自动化框架**
:Playwright + TypeScript(规划
`tests/spd/flow-def.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:正例账号
`test_1`
经
`auth.setup`
写入
`storageState`
(密码仅存
`.env`
的
`TEST_PASS`
);具备「基础设置 → 流程设置 → 审批流程设置」权限。反例筛选用 mock。
**页面约定**
:整页渲染,
**无报表 iframe**
;定位均在
`page`
上。
**菜单导航**
:菜单「基础设置 → 流程设置 → 审批流程设置」;建议
`openPath('/spd/basic/flowSet/workflow/flowSet')`
,与「审批流实例」用 exact 区分。
**写操作**
:禁止点「保 存」提交线上审批路由。新增流程/改节点后必须「重 置」或取消条件配置;必填拦截若需点保存,仅空行拦截成功后立刻重置。
**动态取数**
:从左侧读取
`${sampleBizType}`
(如采购计划);自定义行读取
`${sampleFlowName}`
、
`${sampleCondText}`
;mock:
`__NOT_EXIST_FLOW__99999`
。
---
## 基础设置 · 流程设置
### 审批流程设置 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-FLOW-DEF-001】【TP_FLOW_DEF_001】菜单进入审批流程设置页
-
前置条件:已进入审批流程设置页
-
操作步骤:
1.
按菜单「基础设置 → 流程设置 → 审批流程设置」进入,或
`openPath`
打开
`/spd/basic/flowSet/workflow/flowSet`
2.
断言 URL 含
`/spd/basic/flowSet/workflow/flowSet`
3.
断言左侧业务类型、右侧默认审批流与自定义审批流、「保 存」「重 置」可见
-
自动化断言:规划与 CSV
`FLOW-DEF-001`
及
`tests/spd/flow-def.spec.ts`
一致
###### 预期结果
进入审批流程设置;不误入审批流实例。
---
#### 异常验证点
##### 【P0】【TC-UI-FLOW-DEF-002】【TP_FLOW_DEF_005】未登录访问拦截
-
前置条件:已进入审批流程设置页
-
操作步骤:
1.
清除登录态后直接打开
`/spd/basic/flowSet/workflow/flowSet`
2.
断言跳转登录或不展示审批流配置
-
自动化断言:规划与 CSV
`FLOW-DEF-002`
及
`tests/spd/flow-def.spec.ts`
一致
###### 预期结果
未登录不可见审批流配置。
---
### 审批流程设置 · 左侧业务类型
#### 功能验证点
##### 【P0】【TC-UI-FLOW-DEF-003】【TP_FLOW_DEF_009】业务类型列表可见
-
前置条件:已进入审批流程设置页
-
操作步骤:
1.
断言左侧可见采购计划等类型且有当前高亮项
2.
读取
`${sampleBizType}`
-
自动化断言:规划与 CSV
`FLOW-DEF-003`
及
`tests/spd/flow-def.spec.ts`
一致
###### 预期结果
类型列表可见;当前项高亮。
---
##### 【P0】【TC-UI-FLOW-DEF-004】【TP_FLOW_DEF_010】按流程名称过滤类型
-
前置条件:已进入审批流程设置页
-
操作步骤:
1.
在「流程名称」输入
`${sampleBizType}`
关键字
2.
断言可见类型名称均匹配关键字
-
自动化断言:规划与 CSV
`FLOW-DEF-004`
及
`tests/spd/flow-def.spec.ts`
一致
###### 预期结果
类型过滤与关键字匹配。
---
##### 【P1】【TC-UI-FLOW-DEF-005】【TP_FLOW_DEF_011】清空关键字恢复全量
-
前置条件:已进入审批流程设置页
-
操作步骤:
1.
记录过滤前类型数量
2.
输入关键字后再清空
3.
断言数量恢复
-
自动化断言:规划与 CSV
`FLOW-DEF-005`
及
`tests/spd/flow-def.spec.ts`
一致
###### 预期结果
清空后类型列表恢复全量。
---
##### 【P0】【TC-UI-FLOW-DEF-006】【TP_FLOW_DEF_012】切换类型刷新右侧配置
-
前置条件:已进入审批流程设置页
-
操作步骤:
1.
记录当前类型默认流节点文案
2.
点选另一业务类型(仅 1 个则 skip)
3.
断言右侧默认流/自定义流已刷新,不残留上一类型节点人员
-
自动化断言:规划与 CSV
`FLOW-DEF-006`
及
`tests/spd/flow-def.spec.ts`
一致
###### 预期结果
切换类型后右侧与该类型已保存配置一致。
---
#### 异常验证点
##### 【P1】【TC-UI-FLOW-DEF-007】【TP_FLOW_DEF_015】无匹配类型(mock反例)
-
前置条件:已进入审批流程设置页
-
操作步骤:
1.
流程名称填入
`__NOT_EXIST_FLOW__99999`
2.
断言左侧无匹配或空,右侧不把上一类型配置展示为当前成功配置
-
自动化断言:规划与 CSV
`FLOW-DEF-007`
及
`tests/spd/flow-def.spec.ts`
一致
###### 预期结果
无匹配不报错。
---
### 审批流程设置 · 默认审批流
#### 功能验证点
##### 【P0】【TC-UI-FLOW-DEF-008】【TP_FLOW_DEF_017】默认审批流节点可见
-
前置条件:已进入审批流程设置页
-
操作步骤:
1.
选中「采购计划」(或当前默认类型)
2.
断言「默认审批流」区域可见节点卡片,含节点/账号/人员三行信息(按卡片容器取文本)
-
自动化断言:规划与 CSV
`FLOW-DEF-008`
及
`tests/spd/flow-def.spec.ts`
一致
###### 预期结果
默认流节点结构可见;不点保存。
---
### 审批流程设置 · 自定义审批流
#### 功能验证点
##### 【P0】【TC-UI-FLOW-DEF-009】【TP_FLOW_DEF_022】新增流程增加一行后重置
-
前置条件:已进入审批流程设置页
-
操作步骤:
1.
记录当前自定义流行数
2.
点击「新增流程」
3.
断言行数 +1,新行含流程名称、条件、审批流程、删除
4.
点击「重 置」,断言行数回到操作前,不点「保 存」
-
自动化断言:规划与 CSV
`FLOW-DEF-009`
及
`tests/spd/flow-def.spec.ts`
一致
###### 预期结果
可新增行;重置放弃未保存行。
---
#### 异常验证点
##### 【P0】【TC-UI-FLOW-DEF-010】【TP_FLOW_DEF_028】空行保存被拦截后重置
-
前置条件:已进入审批流程设置页
-
操作步骤:
1.
点击「新增流程」得到空行
2.
点击「保 存」
3.
断言出现必填拦截提示,配置未按成功态关闭
4.
点击「重 置」,放弃该空行
-
自动化断言:规划与 CSV
`FLOW-DEF-010`
及
`tests/spd/flow-def.spec.ts`
一致
###### 预期结果
空名称/条件/节点不能落库;拦截后重置恢复。
---
### 审批流程设置 · 条件配置
#### 功能验证点
##### 【P0】【TC-UI-FLOW-DEF-011】【TP_FLOW_DEF_031】打开条件配置后取消
-
前置条件:当前类型至少 1 条自定义流
-
操作步骤:
1.
若无自定义行则 skip
2.
点击首条自定义流条件列「编辑」
3.
断言打开「条件配置」
4.
点「取 消」,断言行内条件文案与打开前一致
-
自动化断言:规划与 CSV
`FLOW-DEF-011`
及
`tests/spd/flow-def.spec.ts`
一致
###### 预期结果
条件配置可打开;取消不改行内条件。
---
### 审批流程设置 · 保存与重置
#### 功能验证点
##### 【P0】【TC-UI-FLOW-DEF-012】【TP_FLOW_DEF_038】重置放弃未保存改动
-
前置条件:已进入审批流程设置页
-
操作步骤:
1.
点击「新增流程」增加一行
2.
点击「重 置」
3.
断言自定义流行回到上次保存结果
-
自动化断言:规划与 CSV
`FLOW-DEF-012`
及
`tests/spd/flow-def.spec.ts`
一致
###### 预期结果
重置不提交;未保存行消失。
---
### 审批流程设置 · 左侧业务类型
#### 集成验证点
##### 【P1】【TC-UI-FLOW-DEF-013】【TP_FLOW_DEF_016】类型与审批流实例业务类型同源
-
前置条件:已进入审批流程设置页
-
操作步骤:
1.
记录本页左侧类型名称集合(可见范围)
2.
打开审批流实例,展开「业务类型」下拉
3.
断言选项与本页类型同源(允许按权限裁剪,本页有的关键类型如采购计划应能对应)
-
自动化断言:规划与 CSV
`FLOW-DEF-013`
及
`tests/spd/flow-def.spec.ts`
一致
###### 预期结果
两页业务类型同源。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 |
**13**
条(P0=10 / P1=3) |
| 来源 | 从 41 条测试点选取可稳定自动化的主路径与关键反向 |
| 未纳入自动化 | 真实保存审批链、自定义流持久化、条件保存落库、历史实例快照、接口失败、会话过期 |
| 单一职责 | 每条只断言一个核心业务结果 |
| 独立性 | 每条独立
`open()`
,不复用 BrowserContext;不依赖上一条写结果 |
testcases/基础管理-用户管理-医共体用户管理-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-用户管理-医共体用户管理 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-用户管理-医共体用户管理-测试点分析-01.md`
**执行 CSV**
:
`testcase/基础管理-用户管理-医共体用户管理-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/user/platform/personCom`
**定位器 YAML**
:
`locators/spd/basic-user-union.locator.yaml`
**元素扫描**
:
`data/scan/basic-user-union-elements.json`
(221 项)
**关联规范**
:
`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-USER-002.md`
**版本**
:2026-10-20
**自动化框架**
:Playwright + TypeScript(规划
`tests/spd/basic-user-union.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:正例账号
`test_1`
经
`auth.setup`
写入
`storageState`
(密码仅存
`.env`
的
`TEST_PASS`
);具备「基础设置 → 用户管理 → 医共体用户管理」权限。反例筛选用 mock(
`__NOT_EXIST_USER__99999`
/
`__NOT_EXIST_ROLE__99999`
)。
**页面约定**
:整页渲染,
**无报表 iframe**
;定位均在
`page`
上。
**菜单导航**
:菜单「基础设置 → 用户管理 → 医共体用户管理」;可用
`openPath('/spd/basic/user/platform/personCom')`
。
**写操作**
:新增/编辑只打开后取消,不提交保存;授权与改密规则同用户管理,本页不重复真实写操作。禁止写死医院名称。
**动态取数**
:查询后从首行读取
`${sampleLoginName}`
、
`${sampleUserName}`
、
`${sampleHospital}`
、
`${samplePhone}`
;禁止写死扫描到的医院名;mock:
`__NOT_EXIST_USER__99999`
。
---
## 基础设置 · 用户管理
### 医共体用户管理 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-USER-UNI-001】【TP_USER_UNI_001】菜单进入医共体用户管理页
-
前置条件:已进入医共体用户管理页
-
操作步骤:
1.
按菜单「基础设置 → 用户管理 → 医共体用户管理」进入,或
`openPath`
打开
`/spd/basic/user/platform/personCom`
2.
断言 URL 含
`/spd/basic/user/platform/personCom`
3.
断言所属医院筛选、工具栏、列表列头与分页可见
-
自动化断言:规划与 CSV
`USER-UNI-001`
及
`tests/spd/basic-user-union.spec.ts`
一致
###### 预期结果
进入医共体用户管理页;不误入用户管理或角色管理。
---
#### 异常验证点
##### 【P0】【TC-UI-USER-UNI-002】【TP_USER_UNI_005】未登录访问拦截
-
前置条件:已进入医共体用户管理页
-
操作步骤:
1.
清除登录态后直接打开
`/spd/basic/user/platform/personCom`
2.
断言跳转登录或不展示用户业务列表
-
自动化断言:规划与 CSV
`USER-UNI-002`
及
`tests/spd/basic-user-union.spec.ts`
一致
###### 预期结果
未登录不可见医共体用户数据。
---
### 医共体用户管理 · 筛选与查询
#### 功能验证点
##### 【P0】【TC-UI-USER-UNI-003】【TP_USER_UNI_009】默认查询列表有数据或空态明确
-
前置条件:已进入医共体用户管理页
-
操作步骤:
1.
点击「查 询」并等待列表稳定
2.
断言出现数据行,或空态且分页总数为 0
-
自动化断言:规划与 CSV
`USER-UNI-003`
及
`tests/spd/basic-user-union.spec.ts`
一致
###### 预期结果
查询无报错;有数据时「共 N 条」N≥1。
---
##### 【P0】【TC-UI-USER-UNI-004】【TP_USER_UNI_010】姓名或登录账号关键字查询
-
前置条件:默认查询至少 1 条
-
操作步骤:
1.
从首行读取
`${sampleUserName}`
或
`${sampleLoginName}`
2.
在「姓名」框填入关键字,点击「查 询」
3.
断言结果行姓名或登录账号匹配
-
自动化断言:规划与 CSV
`USER-UNI-004`
及
`tests/spd/basic-user-union.spec.ts`
一致
###### 预期结果
查询结果与关键字匹配。
---
##### 【P0】【TC-UI-USER-UNI-005】【TP_USER_UNI_011】所属医院筛选
-
前置条件:已进入医共体用户管理页
-
操作步骤:
1.
记录当前默认
`${sampleHospital}`
与分页总数
2.
切换「所属医院」为另一可选项(仅 1 家则 skip)
3.
点击「查 询」
4.
断言结果行「所属医院」均为所选值,「共 N 条」可与默认不同
-
自动化断言:规划与 CSV
`USER-UNI-005`
及
`tests/spd/basic-user-union.spec.ts`
一致
###### 预期结果
列表仅该院用户;总数随医院变化。
---
##### 【P0】【TC-UI-USER-UNI-006】【TP_USER_UNI_013】姓名+医院+联系方式组合查询
-
前置条件:默认查询至少 1 条
-
操作步骤:
1.
读取
`${sampleUserName}`
、
`${sampleHospital}`
、
`${samplePhone}`
(电话非法占位如
`1`
时改用姓名+医院)
2.
填写后点击「查 询」
3.
断言结果同时满足已填条件
-
自动化断言:规划与 CSV
`USER-UNI-006`
及
`tests/spd/basic-user-union.spec.ts`
一致
###### 预期结果
组合条件同时生效。
---
##### 【P1】【TC-UI-USER-UNI-007】【TP_USER_UNI_014】重置恢复默认医院
-
前置条件:已进入医共体用户管理页
-
操作步骤:
1.
更改所属医院或姓名后点击「重 置」
2.
断言所属医院恢复进入页时的默认值,列表刷新
-
自动化断言:规划与 CSV
`USER-UNI-007`
及
`tests/spd/basic-user-union.spec.ts`
一致
###### 预期结果
医院等条件恢复默认。
---
##### 【P1】【TC-UI-USER-UNI-008】【TP_USER_UNI_015】展开高级筛选
-
前置条件:已进入医共体用户管理页
-
操作步骤:
1.
点击「高级筛选」
2.
断言可见所属医院、联系方式、科室、角色及「筛 选」
-
自动化断言:规划与 CSV
`USER-UNI-008`
及
`tests/spd/basic-user-union.spec.ts`
一致
###### 预期结果
高级筛选含医院维度字段。
---
#### 异常验证点
##### 【P1】【TC-UI-USER-UNI-009】【TP_USER_UNI_021】无匹配空态(mock反例)
-
前置条件:已进入医共体用户管理页
-
操作步骤:
1.
姓名框填入
`__NOT_EXIST_USER__99999`
,点击「查 询」
2.
断言空态且分页总数为 0
-
自动化断言:规划与 CSV
`USER-UNI-009`
及
`tests/spd/basic-user-union.spec.ts`
一致
###### 预期结果
无匹配不报错;总数为 0。
---
### 医共体用户管理 · 列表与分页
#### 功能验证点
##### 【P0】【TC-UI-USER-UNI-010】【TP_USER_UNI_024】列表列顺序含所属医院
-
前置条件:已进入医共体用户管理页
-
操作步骤:
1.
断言列顺序为登录账号、姓名、联系方式、所属医院、所属科室、医院员工编号、角色、科室任职数、操作
2.
勿用用户管理页列断言(用户管理无所属医院且姓名在登录账号前)
-
自动化断言:规划与 CSV
`USER-UNI-010`
及
`tests/spd/basic-user-union.spec.ts`
一致
###### 预期结果
列顺序与用户管理页不同;含所属医院。
---
##### 【P1】【TC-UI-USER-UNI-011】【TP_USER_UNI_026】分页翻至第 2 页
-
前置条件:总条数大于一页,否则 skip
-
操作步骤:
1.
记录第 1 页首行登录账号
2.
翻到第 2 页
3.
断言数据更换且所属医院筛选仍保持
-
自动化断言:规划与 CSV
`USER-UNI-011`
及
`tests/spd/basic-user-union.spec.ts`
一致
###### 预期结果
翻页成功;医院条件不丢失。
---
#### 集成验证点
##### 【P1】【TC-UI-USER-UNI-012】【TP_USER_UNI_033】与用户管理页同一用户字段一致
-
前置条件:两页都能查到同一账号,否则 skip
-
操作步骤:
1.
记录本页首行
`${sampleLoginName}`
、姓名、所属科室、角色
2.
打开用户管理页,按登录账号查询同一用户
3.
断言姓名、角色、所属科室一致;本页仅多「所属医院」
-
自动化断言:规划与 CSV
`USER-UNI-012`
及
`tests/spd/basic-user-union.spec.ts`
一致
###### 预期结果
同一登录账号跨页字段一致。
---
### 医共体用户管理 · 新增与编辑
#### 功能验证点
##### 【P0】【TC-UI-USER-UNI-013】【TP_USER_UNI_036】打开新增弹窗
-
前置条件:已进入医共体用户管理页
-
操作步骤:
1.
点击「新 增」
2.
断言弹出用户表单,含账号、姓名、联系方式及取消/确定
-
自动化断言:规划与 CSV
`USER-UNI-013`
及
`tests/spd/basic-user-union.spec.ts`
一致
###### 预期结果
新增弹窗可见。
---
##### 【P1】【TC-UI-USER-UNI-014】【TP_USER_UNI_038】新增取消不落库
-
前置条件:已进入医共体用户管理页
-
操作步骤:
1.
打开新增,账号填
`${uniqLogin}`
后点「取 消」
2.
当前医院下列表查询该账号,断言不存在
-
自动化断言:规划与 CSV
`USER-UNI-014`
及
`tests/spd/basic-user-union.spec.ts`
一致
###### 预期结果
取消后当前医院列表不出现该账号。
---
#### 异常验证点
##### 【P0】【TC-UI-USER-UNI-015】【TP_USER_UNI_046】必填为空拦截
-
前置条件:已进入医共体用户管理页
-
操作步骤:
1.
打开新增,账号或姓名留空后点「确 定」
2.
断言被拦截,弹窗仍打开,不落库
-
自动化断言:规划与 CSV
`USER-UNI-015`
及
`tests/spd/basic-user-union.spec.ts`
一致
###### 预期结果
必填为空不可保存。
---
#### 功能验证点
##### 【P0】【TC-UI-USER-UNI-016】【TP_USER_UNI_039】打开编辑并回填
-
前置条件:列表至少 1 条
-
操作步骤:
1.
点击首行「编辑」
2.
断言弹窗回填与该行登录账号、姓名、所属医院一致
3.
点「取 消」
-
自动化断言:规划与 CSV
`USER-UNI-016`
及
`tests/spd/basic-user-union.spec.ts`
一致
###### 预期结果
编辑回填正确;本条不保存。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 |
**16**
条(P0=10 / P1=6) |
| 来源 | 从 58 条测试点选取可稳定自动化的主路径与关键反向 |
| 未纳入自动化 | 授权/改密持久化(引用 TP_USER_USR)、真实跨院保存、Excel 导入文件、接口失败、会话过期 |
| 单一职责 | 每条只断言一个核心业务结果 |
testcases/基础管理-用户管理-用户管理-UI自动化测试用例-01.md
0 → 100644
View file @
6a181bea
# 基础管理-用户管理-用户管理 UI 自动化测试用例
**来源测试点**
:
`testpoint/基础管理-用户管理-用户管理-测试点分析-01.md`
**执行 CSV**
:
`testcase/基础管理-用户管理-用户管理-UI自动化测试用例-01.csv`
**页面 URL**
:
`/spd/basic/user/platform/person`
**定位器 YAML**
:
`locators/spd/basic-user.locator.yaml`
**元素扫描**
:
`data/scan/basic-user-elements.json`
(219 项)
**关联规范**
:
`knowledge-base/08-UI专项规范库/UI-SPEC-SPD-USER-001.md`
**版本**
:2026-10-20
**自动化框架**
:Playwright + TypeScript(规划
`tests/spd/basic-user.spec.ts`
,依赖
`auth.setup`
登录态)
**通用前置**
:正例账号
`test_1`
经
`auth.setup`
写入
`storageState`
(密码仅存
`.env`
的
`TEST_PASS`
);具备「基础设置 → 用户管理 → 用户管理」权限。反例筛选用 mock(
`__NOT_EXIST_USER__99999`
/
`__NOT_EXIST_ROLE__99999`
)。
**页面约定**
:整页渲染,
**无报表 iframe**
;定位均在
`page`
上。
**菜单导航**
:一级菜单与叶子菜单均名「用户管理」,须点「基础设置 → 用户管理(子菜单)→ 用户管理(叶子)」;建议
`openPath('/spd/basic/user/platform/person')`
并断言 URL,勿误入医共体/角色管理。
**写操作**
:新增/编辑只打开后取消,不提交保存;授权只打开后取消;重置密码只验证确认框后取消,不确认改密。禁止写死生产账号。
**动态取数**
:查询后从首行读取
`${sampleUserName}`
、
`${sampleLoginName}`
、
`${sampleDept}`
、
`${sampleRole}`
;科室为
`--`
时换一行;mock:
`__NOT_EXIST_USER__99999`
;写操作用
`${uniqLogin}`
(建议
`auto.usr.${timestamp}`
),取消不落库。
---
## 基础设置 · 用户管理
### 用户管理 · 页面进入
#### 功能验证点
##### 【P0】【TC-UI-USER-USR-001】【TP_USER_USR_001】菜单进入用户管理页
-
前置条件:已进入用户管理页
-
操作步骤:
1.
按菜单「基础设置 → 用户管理(子菜单)→ 用户管理(叶子)」进入,或
`openPath`
打开
`/spd/basic/user/platform/person`
2.
断言 URL 含
`/spd/basic/user/platform/person`
3.
断言筛选区、工具栏「新 增」「Excel导入」、列表列头与分页可见
-
自动化断言:规划与 CSV
`USER-USR-001`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
进入用户管理页;不误入医共体用户管理或角色管理;无报错遮罩。
---
#### 异常验证点
##### 【P0】【TC-UI-USER-USR-002】【TP_USER_USR_005】未登录访问拦截
-
前置条件:已进入用户管理页
-
操作步骤:
1.
清除登录态后直接打开
`/spd/basic/user/platform/person`
2.
断言跳转登录或不展示用户业务列表
-
自动化断言:规划与 CSV
`USER-USR-002`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
未登录不可见用户数据。
---
### 用户管理 · 筛选与查询
#### 功能验证点
##### 【P0】【TC-UI-USER-USR-003】【TP_USER_USR_009】默认查询列表有数据或空态明确
-
前置条件:已进入用户管理页
-
操作步骤:
1.
点击「查 询」并等待列表稳定
2.
断言出现数据行,或「暂无数据」且分页总数为 0
-
自动化断言:规划与 CSV
`USER-USR-003`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
查询无报错;有数据时分页「共 N 条」N≥1;无数据时空态明确。
---
##### 【P0】【TC-UI-USER-USR-004】【TP_USER_USR_010】姓名或登录账号关键字查询
-
前置条件:默认查询至少 1 条且姓名或登录账号非空
-
操作步骤:
1.
从首行读取
`${sampleUserName}`
或
`${sampleLoginName}`
取关键字
2.
在「姓名」框(占位「姓名、登录账号」)填入关键字,点击「查 询」
3.
断言结果行姓名或登录账号匹配该关键字
-
自动化断言:规划与 CSV
`USER-USR-004`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
查询结果与已填关键字匹配;无未捕获异常。
---
##### 【P0】【TC-UI-USER-USR-005】【TP_USER_USR_011】科室下拉筛选
-
前置条件:列表存在所属科室非空行,否则 skip
-
操作步骤:
1.
取首条所属科室非
`--`
的行,读取
`${sampleDept}`
2.
科室下拉选择该值,点击「查 询」
3.
断言结果行「所属科室」与所选一致,且不含未分配
`--`
行
-
自动化断言:规划与 CSV
`USER-USR-005`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
所属科室列与筛选条件一致。
---
##### 【P0】【TC-UI-USER-USR-006】【TP_USER_USR_013】姓名+科室+角色组合查询
-
前置条件:默认查询至少 1 条
-
操作步骤:
1.
读取
`${sampleUserName}`
、
`${sampleDept}`
、
`${sampleRole}`
(角色可从该行截断前列名)
2.
填写姓名、科室、角色后点击「查 询」
3.
断言结果同时满足已填条件
-
自动化断言:规划与 CSV
`USER-USR-006`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
组合查询无报错;结果同时满足全部已填条件。
---
##### 【P1】【TC-UI-USER-USR-007】【TP_USER_USR_014】重置恢复默认
-
前置条件:已进入用户管理页
-
操作步骤:
1.
填写姓名等筛选条件后点击「重 置」
2.
断言筛选字段恢复默认,列表按默认规则刷新
-
自动化断言:规划与 CSV
`USER-USR-007`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
条件恢复默认;列表刷新。
---
##### 【P1】【TC-UI-USER-USR-008】【TP_USER_USR_015】展开高级筛选
-
前置条件:已进入用户管理页
-
操作步骤:
1.
点击「高级筛选」
2.
断言展开后面板可见姓名/科室/角色/状态及「重 置」「筛 选」
-
自动化断言:规划与 CSV
`USER-USR-008`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
高级筛选面板展开;关键字段与筛选按钮可见。
---
##### 【P0】【TC-UI-USER-USR-009】【TP_USER_USR_016】高级筛选按状态过滤
-
前置条件:已进入用户管理页
-
操作步骤:
1.
展开高级筛选,状态下拉选择「启用」或「禁用」
2.
点击「筛 选」
3.
断言列表仅保留对应状态用户(无匹配则空态且总数为 0)
-
自动化断言:规划与 CSV
`USER-USR-009`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
按状态过滤成功;无报错。
---
#### 异常验证点
##### 【P1】【TC-UI-USER-USR-010】【TP_USER_USR_022】无匹配结果空态(mock反例)
-
前置条件:已进入用户管理页
-
操作步骤:
1.
姓名框填入
`__NOT_EXIST_USER__99999`
2.
点击「查 询」
3.
断言空态或「暂无数据」,分页总数为 0
-
自动化断言:规划与 CSV
`USER-USR-010`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
无匹配时不报错;空态明确;总数为 0。
---
### 用户管理 · 列表与分页
#### 功能验证点
##### 【P0】【TC-UI-USER-USR-011】【TP_USER_USR_025】列表核心列完整
-
前置条件:已进入用户管理页
-
操作步骤:
1.
断言表头含序号、姓名、登录账号、联系方式、所属科室、医院员工编号、角色、科室任职数、操作
2.
断言操作列可见「编辑」「授权」「重置密码」
-
自动化断言:规划与 CSV
`USER-USR-011`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
核心列完整;行内三个操入口可见。
---
##### 【P1】【TC-UI-USER-USR-012】【TP_USER_USR_026】列表不含所属医院列
-
前置条件:已进入用户管理页
-
操作步骤:
1.
断言表头不含「所属医院」
-
自动化断言:规划与 CSV
`USER-USR-012`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
本页无所属医院列,与医共体用户管理页区分。
---
##### 【P1】【TC-UI-USER-USR-013】【TP_USER_USR_031】分页翻至第 2 页
-
前置条件:默认查询总条数大于一页,否则 skip
-
操作步骤:
1.
记录第 1 页首行登录账号
2.
点击页码「2」或「下一页」
3.
断言页码高亮为 2,首行账号与第 1 页不同
-
自动化断言:规划与 CSV
`USER-USR-013`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
翻页成功;数据更换。
---
### 用户管理 · 新增用户
#### 功能验证点
##### 【P0】【TC-UI-USER-USR-014】【TP_USER_USR_041】打开新增用户弹窗
-
前置条件:已进入用户管理页
-
操作步骤:
1.
点击「新 增」
2.
断言弹出用户表单,可见账号、姓名、联系方式、医院员工编号、启用/禁用、「取 消」「确 定」
-
自动化断言:规划与 CSV
`USER-USR-014`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
新增弹窗可见;关键字段与按钮齐全。
---
##### 【P1】【TC-UI-USER-USR-015】【TP_USER_USR_043】新增取消不落库
-
前置条件:已进入用户管理页
-
操作步骤:
1.
打开新增,账号填
`${uniqLogin}`
,姓名填任意合法值
2.
点击「取 消」
3.
按账号查询,断言无该记录
-
自动化断言:规划与 CSV
`USER-USR-015`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
弹窗关闭;列表不出现
`${uniqLogin}`
。
---
#### 异常验证点
##### 【P0】【TC-UI-USER-USR-016】【TP_USER_USR_047】必填为空拦截
-
前置条件:已进入用户管理页
-
操作步骤:
1.
打开新增,账号或姓名留空后点击「确 定」
2.
断言出现必填提示,弹窗仍打开
-
自动化断言:规划与 CSV
`USER-USR-016`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
确定被拦截;不落库;弹窗不关闭。
---
##### 【P0】【TC-UI-USER-USR-017】【TP_USER_USR_048】登录账号重复拦截
-
前置条件:默认查询至少 1 条且登录账号非空
-
操作步骤:
1.
打开新增,账号填入已存在的
`${sampleLoginName}`
,补齐其它必填后点「确 定」
2.
断言保存失败并提示,弹窗仍打开
3.
查询该账号,断言原用户未被覆盖
-
自动化断言:规划与 CSV
`USER-USR-017`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
重复账号被拒绝;不覆盖原用户。
---
### 用户管理 · 编辑用户
#### 功能验证点
##### 【P0】【TC-UI-USER-USR-018】【TP_USER_USR_054】打开编辑用户弹窗并回填
-
前置条件:列表至少 1 条
-
操作步骤:
1.
点击首行「编辑」
2.
断言弹窗标题含「编辑用户」
3.
断言账号、姓名与该行
`${sampleLoginName}`
、
`${sampleUserName}`
一致(允许规范化空白)
-
自动化断言:规划与 CSV
`USER-USR-018`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
编辑弹窗可见;回填与列表行一致。
---
##### 【P1】【TC-UI-USER-USR-019】【TP_USER_USR_058】编辑取消不保存
-
前置条件:列表至少 1 条
-
操作步骤:
1.
打开首行编辑,记录原姓名
2.
将姓名改为临时值后点「取 消」
3.
再次打开编辑,断言姓名仍为原值
-
自动化断言:规划与 CSV
`USER-USR-019`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
取消后列表与回看均为修改前姓名。
---
#### 边界验证点
##### 【P1】【TC-UI-USER-USR-020】【TP_USER_USR_061】编辑时账号只读
-
前置条件:列表至少 1 条
-
操作步骤:
1.
打开首行编辑
2.
断言登录账号不可改(disabled/readonly 或无法输入)
-
自动化断言:规划与 CSV
`USER-USR-020`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
编辑态登录账号只读。
---
#### 功能验证点
##### 【P1】【TC-UI-USER-USR-021】【TP_USER_USR_056】编辑弹窗可见签名图片
-
前置条件:列表至少 1 条
-
操作步骤:
1.
打开首行编辑
2.
断言可见「签名图片」区域(有图则展示,无图则上传入口可见)
3.
点「取 消」,不保存
-
自动化断言:规划与 CSV
`USER-USR-021`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
签名图片控件可见;本条不上传、不保存。
---
### 用户管理 · 授权
#### 功能验证点
##### 【P0】【TC-UI-USER-USR-022】【TP_USER_USR_068】打开授权后取消不生效
-
前置条件:列表至少 1 条
-
操作步骤:
1.
点击首行「授权」
2.
断言打开授权层(弹窗或权限树),可见可勾选菜单/功能
3.
如可勾选则改一处勾选后点取消/关闭
4.
再次打开同一用户授权,断言勾选与操作前一致
-
自动化断言:规划与 CSV
`USER-USR-022`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
授权层可打开;取消后勾选不落库。
---
### 用户管理 · 重置密码
#### 功能验证点
##### 【P0】【TC-UI-USER-USR-023】【TP_USER_USR_075】行内重置密码确认后取消
-
前置条件:列表至少 1 条
-
操作步骤:
1.
点击首行「重置密码」
2.
断言出现确认框或密码表单,含取消/关闭
3.
点取消/关闭
4.
断言仍停留本页且该行仍在
-
自动化断言:规划与 CSV
`USER-USR-023`
及
`tests/spd/basic-user.spec.ts`
一致
###### 预期结果
重置需确认;取消后不改密。本条不点确定,避免污染账号。
## 质量与覆盖说明
| 项 | 说明 |
|----|------|
| 用例数 |
**23**
条(P0=14 / P1=9) |
| 来源 | 从 81 条测试点选取可稳定自动化的主路径与关键反向 |
| 未纳入自动化 | 真实保存用户、禁用后登录、真实改密、Excel 导入文件、接口失败注入、会话过期、无菜单权限 |
| 单一职责 | 每条只断言一个核心业务结果 |
Prev
1
…
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