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
6c31a476
Commit
6c31a476
authored
Oct 28, 2026
by
liguangyu06
Browse files
同步基础管理与统计报表用例文档,并更新 Playwright 脚本与 PO。
对齐 CSV/MD/测试点与现网列名及组合查询;补充厂商资质子 Tab 与基础模块复跑脚本。
parent
aa8987ce
Changes
350
Hide whitespace changes
Inline
Side-by-side
tests/spd/vendor-audit.spec.ts
View file @
6c31a476
...
...
@@ -26,187 +26,247 @@ async function smokeMockEmpty(po: VendorAuditPage): Promise<void> {
* 运行:npm run test:vendor-audit:all
*/
test
.
describe
(
'
基础设置 · 厂商管理
'
,
()
=>
{
test
.
describe
(
'
授权变更初审 · 页面进入
'
,
()
=>
{
test
(
'
VENDOR-AF1-001 菜单进入授权变更初审页
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorAuthFirstPage
})
=>
{
await
smokeEnter
(
vendorAuthFirstPage
);
});
});
test
.
describe
(
'
授权变更初审 · 筛选与列表
'
,
()
=>
{
test
(
'
VENDOR-AF1-002 默认查询列表有数据或空态明确
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorAuthFirstPage
})
=>
{
await
smokeQuery
(
vendorAuthFirstPage
);
});
test
(
'
VENDOR-AF1-003 按单号筛选
'
,
async
({
vendorAuthFirstPage
})
=>
{
await
vendorAuthFirstPage
.
open
();
await
vendorAuthFirstPage
.
filterByOrderNo
();
});
test
(
'
VENDOR-AF1-004 按进院供应商筛选
'
,
async
({
vendorAuthFirstPage
})
=>
{
await
vendorAuthFirstPage
.
open
();
await
vendorAuthFirstPage
.
filterBySupplierOrCert
();
});
test
(
'
VENDOR-AF1-005 重置恢复默认
'
,
async
({
vendorAuthFirstPage
})
=>
{
await
vendorAuthFirstPage
.
open
();
test
(
'
VENDOR-AF1-001 重置恢复默认
'
,
async
({
vendorAuthFirstPage
})
=>
{
await
vendorAuthFirstPage
.
open
({
keepQueryDefaults
:
true
});
await
vendorAuthFirstPage
.
resetFilters
();
});
test
(
'
VENDOR-AF1-00
6
无匹配空态(mock反例)
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorAuthFirstPage
})
=>
{
test
(
'
VENDOR-AF1-00
2
无匹配空态(mock反例)
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorAuthFirstPage
})
=>
{
await
smokeMockEmpty
(
vendorAuthFirstPage
);
});
test
(
'
VENDOR-AF1-00
8 制单日期起止同一天
'
,
async
({
vendorAuthFirstPage
})
=>
{
test
(
'
VENDOR-AF1-00
4 筛选区展开与收起正常使用
'
,
async
({
vendorAuthFirstPage
})
=>
{
await
vendorAuthFirstPage
.
open
();
await
vendorAuthFirstPage
.
filterMakeDateSameDay
();
await
vendorAuthFirstPage
.
expectFilterExpandCollapseWorks
();
});
test
(
'
VENDOR-AF1-010 多条件组合查询(制单日期等9项)
'
,
async
({
vendorAuthFirstPage
})
=>
{
});
test
.
describe
(
'
授权变更初审 · 列设置
'
,
()
=>
{
test
.
describe
.
configure
({
mode
:
'
serial
'
,
timeout
:
120
_000
});
test
.
beforeEach
(
async
({
vendorAuthFirstPage
})
=>
{
await
vendorAuthFirstPage
.
open
();
await
vendorAuthFirstPage
.
filterCombination
();
await
vendorAuthFirstPage
.
query
();
});
test
(
'
VENDOR-AF1-003 列设置取消勾选后再勾选列表列恢复
'
,
async
({
vendorAuthFirstPage
})
=>
{
await
vendorAuthFirstPage
.
executeColumnSettingsToggleRestoreTest
();
});
});
test
.
describe
(
'
授权变更初审 · 详情
'
,
()
=>
{
test
(
'
VENDOR-AF1-00
7 打开
详情后返回
'
,
async
({
vendorAuthFirstPage
})
=>
{
test
(
'
VENDOR-AF1-00
5 点击详情进入
详情
页
后返回
'
,
async
({
vendorAuthFirstPage
})
=>
{
await
vendorAuthFirstPage
.
open
();
await
vendorAuthFirstPage
.
detailAndBack
();
});
test
(
'
VENDOR-AF1-009 与终审单据衔接不串单
'
,
async
({
vendorAuthFirstPage
,
vendorAuthFinalPage
})
=>
{
await
vendorAuthFirstPage
.
open
();
await
vendorAuthFirstPage
.
expectPeerHandoff
(
vendorAuthFinalPage
);
await
vendorAuthFirstPage
.
openDetailAndBack
();
});
});
test
.
describe
(
'
授权变更终审 · 页面进入
'
,
()
=>
{
test
(
'
VENDOR-AF2-001 菜单进入授权变更终审页
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorAuthFinalPage
})
=>
{
await
smokeEnter
(
vendorAuthFinalPage
);
test
.
describe
(
'
授权变更初审 · 组合查询
'
,
()
=>
{
test
(
'
VENDOR-AF1-006 首行九项组合查询
'
,
async
({
vendorAuthFirstPage
})
=>
{
await
vendorAuthFirstPage
.
open
();
const
sample
=
await
vendorAuthFirstPage
.
queryFirstRowNineFieldCombo
();
await
assertListOrEmpty
(
await
vendorAuthFirstPage
.
snapshotList
(),
'
首行九项组合查询
'
);
expect
(
await
vendorAuthFirstPage
.
rowsMatchKeyword
(
'
单号
'
,
sample
.
orderNo
),
'
结果行单号应含首行取值
'
,
).
toBeTruthy
();
});
});
test
.
describe
(
'
授权变更终审 · 筛选与列表
'
,
()
=>
{
test
(
'
VENDOR-AF2-002 默认查询列表有数据或空态明确
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorAuthFinalPage
})
=>
{
await
smokeQuery
(
vendorAuthFinalPage
);
test
(
'
VENDOR-AF2-001 重置恢复默认
'
,
async
({
vendorAuthFinalPage
})
=>
{
await
vendorAuthFinalPage
.
open
({
keepQueryDefaults
:
true
});
await
vendorAuthFinalPage
.
resetFilters
();
});
test
(
'
VENDOR-AF2-003 按单号筛选
'
,
async
({
vendorAuthFinalPage
})
=>
{
await
vendorAuthFinalPage
.
open
();
await
vendorAuthFinalPage
.
filterByOrderNo
();
test
(
'
VENDOR-AF2-002 无匹配空态(mock反例)
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorAuthFinalPage
})
=>
{
await
smokeMockEmpty
(
vendorAuthFinalPage
);
});
test
(
'
VENDOR-AF2-00
4 按进院供应商筛选
'
,
async
({
vendorAuthFinalPage
})
=>
{
test
(
'
VENDOR-AF2-00
3 筛选区展开与收起正常使用
'
,
async
({
vendorAuthFinalPage
})
=>
{
await
vendorAuthFinalPage
.
open
();
await
vendorAuthFinalPage
.
filterBySupplierOrCert
();
await
vendorAuthFinalPage
.
expectFilterExpandCollapseWorks
();
});
test
(
'
VENDOR-AF2-00
5 重置恢复默认
'
,
async
({
vendorAuthFinalPage
})
=>
{
test
(
'
VENDOR-AF2-00
7 分页翻至第 2 页
'
,
async
({
vendorAuthFinalPage
})
=>
{
await
vendorAuthFinalPage
.
open
();
await
vendorAuthFinalPage
.
resetFilt
er
s
();
}
);
test
(
'
VENDOR-AF2-006 无匹配空态(mock反例)
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorAuthFinalPage
})
=>
{
await
smokeMockEmpty
(
vendorAuthFinalPage
);
await
vendorAuthFinalPage
.
qu
er
y
();
await
vendorAuthFinalPage
.
goToPage2
(
);
const
state
=
await
vendorAuthFinalPage
.
snapshotList
();
expect
(
state
.
rows
,
'
第 2 页应有数据
'
).
toBeGreaterThan
(
0
);
});
test
(
'
VENDOR-AF2-008
制单日期起止同一天
'
,
async
({
vendorAuthFinalPage
})
=>
{
test
(
'
VENDOR-AF2-008
切换20条每页页面正常且列表同步
'
,
async
({
vendorAuthFinalPage
})
=>
{
await
vendorAuthFinalPage
.
open
();
await
vendorAuthFinalPage
.
filterMakeDateSameDay
();
await
vendorAuthFinalPage
.
query
();
const
{
total
,
rowsBefore
,
rowsAfter
,
pageSizeLabel
}
=
await
vendorAuthFinalPage
.
switchToSmallerPageSize
();
const
sizeNum
=
Number
((
pageSizeLabel
.
match
(
/
\d
+/
)
??
[
'
20
'
])[
0
]);
const
expectedRows
=
Math
.
min
(
total
,
sizeNum
);
expect
(
rowsAfter
,
`当前页行数应与
${
pageSizeLabel
}
及总条数一致`
).
toBe
(
expectedRows
);
if
(
total
>
sizeNum
)
{
expect
(
rowsAfter
,
'
切换后可见行应随每页条数变化
'
).
toBeLessThan
(
rowsBefore
);
}
expect
(
await
vendorAuthFinalPage
.
getTotalCount
(),
'
总条数应不变
'
).
toBe
(
total
);
await
expect
(
vendorAuthFinalPage
.
pageSizeChanger
(),
'
每页条数
'
).
toContainText
(
new
RegExp
(
String
(
sizeNum
)));
});
test
(
'
VENDOR-AF2-010 多条件组合查询(制单日期等7项)
'
,
async
({
vendorAuthFinalPage
})
=>
{
});
test
.
describe
(
'
授权变更终审 · 列设置
'
,
()
=>
{
test
.
describe
.
configure
({
mode
:
'
serial
'
,
timeout
:
120
_000
});
test
.
beforeEach
(
async
({
vendorAuthFinalPage
})
=>
{
await
vendorAuthFinalPage
.
open
();
await
vendorAuthFinalPage
.
filterCombination
();
await
vendorAuthFinalPage
.
query
();
});
test
(
'
VENDOR-AF2-004 列设置取消勾选后再勾选列表列恢复
'
,
async
({
vendorAuthFinalPage
})
=>
{
await
vendorAuthFinalPage
.
executeColumnSettingsToggleRestoreTest
();
});
});
test
.
describe
(
'
授权变更终审 · 详情
'
,
()
=>
{
test
(
'
VENDOR-AF2-007 打开详情后返回
'
,
async
({
vendorAuthFinalPage
})
=>
{
await
vendorAuthFinalPage
.
open
();
await
vendorAuthFinalPage
.
detailAndBack
();
});
test
(
'
VENDOR-AF2-009 与初审单据衔接不串单
'
,
async
({
vendorAuthFinalPage
,
vendorAuthFirstPage
})
=>
{
test
(
'
VENDOR-AF2-005 点击详情进入详情页后返回
'
,
async
({
vendorAuthFinalPage
})
=>
{
await
vendorAuthFinalPage
.
open
();
await
vendorAuthFinalPage
.
expectPeerHandoff
(
vendorAuthFirstPage
);
await
vendorAuthFinalPage
.
openDetailAndBack
(
);
});
});
test
.
describe
(
'
注册证变更初审 · 页面进入
'
,
()
=>
{
test
(
'
VENDOR-CF1-001 菜单进入注册证变更初审页
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorCertFirstPage
})
=>
{
await
smokeEnter
(
vendorCertFirstPage
);
test
.
describe
(
'
授权变更终审 · 组合查询
'
,
()
=>
{
test
(
'
VENDOR-AF2-006 首行七项组合查询
'
,
async
({
vendorAuthFinalPage
})
=>
{
await
vendorAuthFinalPage
.
open
();
const
sample
=
await
vendorAuthFinalPage
.
queryFirstRowSevenFieldCombo
();
await
assertListOrEmpty
(
await
vendorAuthFinalPage
.
snapshotList
(),
'
首行七项组合查询
'
);
expect
(
await
vendorAuthFinalPage
.
rowsMatchKeyword
(
'
单号
'
,
sample
.
orderNo
),
'
结果行单号应含首行取值
'
,
).
toBeTruthy
();
});
});
test
.
describe
(
'
注册证变更初审 · 筛选与列表
'
,
()
=>
{
test
(
'
VENDOR-CF1-002 默认查询列表有数据或空态明确
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorCertFirstPage
})
=>
{
await
smokeQuery
(
vendorCertFirstPage
);
test
(
'
VENDOR-CF1-001 重置恢复默认
'
,
async
({
vendorCertFirstPage
})
=>
{
await
vendorCertFirstPage
.
open
({
keepQueryDefaults
:
true
});
await
vendorCertFirstPage
.
resetFilters
();
});
test
(
'
VENDOR-CF1-003 按单号筛选
'
,
async
({
vendorCertFirstPage
})
=>
{
await
vendorCertFirstPage
.
open
();
await
vendorCertFirstPage
.
filterByOrderNo
();
test
(
'
VENDOR-CF1-002 无匹配空态(mock反例)
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorCertFirstPage
})
=>
{
await
smokeMockEmpty
(
vendorCertFirstPage
);
});
test
(
'
VENDOR-CF1-004
按注册证号(新)筛选
'
,
async
({
vendorCertFirstPage
})
=>
{
test
(
'
VENDOR-CF1-004
筛选区展开与收起正常使用
'
,
async
({
vendorCertFirstPage
})
=>
{
await
vendorCertFirstPage
.
open
();
await
vendorCertFirstPage
.
filterBySupplierOrCert
();
await
vendorCertFirstPage
.
expectFilterExpandCollapseWorks
();
});
test
(
'
VENDOR-CF1-00
5 重置恢复默认
'
,
async
({
vendorCertFirstPage
})
=>
{
test
(
'
VENDOR-CF1-00
6 分页翻至第 2 页
'
,
async
({
vendorCertFirstPage
})
=>
{
await
vendorCertFirstPage
.
open
();
await
vendorCertFirstPage
.
resetFilt
er
s
();
}
);
test
(
'
VENDOR-CF1-006 无匹配空态(mock反例)
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorCertFirstPage
})
=>
{
await
smokeMockEmpty
(
vendorCertFirstPage
);
await
vendorCertFirstPage
.
qu
er
y
();
await
vendorCertFirstPage
.
goToPage2
(
);
const
state
=
await
vendorCertFirstPage
.
snapshotList
();
expect
(
state
.
rows
,
'
第 2 页应有数据
'
).
toBeGreaterThan
(
0
);
});
test
(
'
VENDOR-CF1-00
8 制单日期起止同一天
'
,
async
({
vendorCertFirstPage
})
=>
{
test
(
'
VENDOR-CF1-00
7 切换20条每页页面正常且列表同步
'
,
async
({
vendorCertFirstPage
})
=>
{
await
vendorCertFirstPage
.
open
();
await
vendorCertFirstPage
.
filterMakeDateSameDay
();
await
vendorCertFirstPage
.
query
();
const
{
total
,
rowsBefore
,
rowsAfter
,
pageSizeLabel
}
=
await
vendorCertFirstPage
.
switchToSmallerPageSize
();
const
sizeNum
=
Number
((
pageSizeLabel
.
match
(
/
\d
+/
)
??
[
'
20
'
])[
0
]);
const
expectedRows
=
Math
.
min
(
total
,
sizeNum
);
expect
(
rowsAfter
,
`当前页行数应与
${
pageSizeLabel
}
及总条数一致`
).
toBe
(
expectedRows
);
if
(
total
>
sizeNum
)
{
expect
(
rowsAfter
,
'
切换后可见行应随每页条数变化
'
).
toBeLessThan
(
rowsBefore
);
}
expect
(
await
vendorCertFirstPage
.
getTotalCount
(),
'
总条数应不变
'
).
toBe
(
total
);
await
expect
(
vendorCertFirstPage
.
pageSizeChanger
(),
'
每页条数
'
).
toContainText
(
new
RegExp
(
String
(
sizeNum
)));
});
test
(
'
VENDOR-CF1-010 多条件组合查询(制单日期等6项)
'
,
async
({
vendorCertFirstPage
})
=>
{
});
test
.
describe
(
'
注册证变更初审 · 列设置
'
,
()
=>
{
test
.
describe
.
configure
({
mode
:
'
serial
'
,
timeout
:
120
_000
});
test
.
beforeEach
(
async
({
vendorCertFirstPage
})
=>
{
await
vendorCertFirstPage
.
open
();
await
vendorCertFirstPage
.
filterCombination
();
await
vendorCertFirstPage
.
query
();
});
test
(
'
VENDOR-CF1-003 列设置取消勾选后再勾选列表列恢复
'
,
async
({
vendorCertFirstPage
})
=>
{
await
vendorCertFirstPage
.
executeColumnSettingsToggleRestoreTest
();
});
});
test
.
describe
(
'
注册证变更初审 · 详情
'
,
()
=>
{
test
(
'
VENDOR-CF1-007 打开详情后返回
'
,
async
({
vendorCertFirstPage
})
=>
{
await
vendorCertFirstPage
.
open
();
await
vendorCertFirstPage
.
detailAndBack
();
});
test
(
'
VENDOR-CF1-009 与终审单据衔接不串单
'
,
async
({
vendorCertFirstPage
,
vendorCertFinalPage
})
=>
{
test
(
'
VENDOR-CF1-005 点击详情进入详情页后返回
'
,
async
({
vendorCertFirstPage
})
=>
{
await
vendorCertFirstPage
.
open
();
await
vendorCertFirstPage
.
expectPeerHandoff
(
vendorCertFinalPage
);
await
vendorCertFirstPage
.
openDetailAndBack
(
);
});
});
test
.
describe
(
'
注册证变更终审 · 页面进入
'
,
()
=>
{
test
(
'
VENDOR-CF2-001 菜单进入注册证变更终审页
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorCertFinalPage
})
=>
{
await
smokeEnter
(
vendorCertFinalPage
);
test
.
describe
(
'
注册证变更初审 · 组合查询
'
,
()
=>
{
test
(
'
VENDOR-CF1-008 首行六项组合查询
'
,
async
({
vendorCertFirstPage
})
=>
{
await
vendorCertFirstPage
.
open
();
const
sample
=
await
vendorCertFirstPage
.
queryFirstRowSixFieldCombo
();
await
assertListOrEmpty
(
await
vendorCertFirstPage
.
snapshotList
(),
'
首行六项组合查询
'
);
expect
(
await
vendorCertFirstPage
.
rowsMatchKeyword
(
'
单号
'
,
sample
.
orderNo
),
'
结果行单号应含首行取值
'
,
).
toBeTruthy
();
});
});
test
.
describe
(
'
注册证变更终审 · 筛选与列表
'
,
()
=>
{
test
(
'
VENDOR-CF2-002 默认查询列表有数据或空态明确
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorCertFinalPage
})
=>
{
await
smokeQuery
(
vendorCertFinalPage
);
test
(
'
VENDOR-CF2-001 重置恢复默认
'
,
async
({
vendorCertFinalPage
})
=>
{
await
vendorCertFinalPage
.
open
({
keepQueryDefaults
:
true
});
await
vendorCertFinalPage
.
resetFilters
();
});
test
(
'
VENDOR-CF2-003 按单号筛选
'
,
async
({
vendorCertFinalPage
})
=>
{
await
vendorCertFinalPage
.
open
();
await
vendorCertFinalPage
.
filterByOrderNo
();
test
(
'
VENDOR-CF2-002 无匹配空态(mock反例)
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorCertFinalPage
})
=>
{
await
smokeMockEmpty
(
vendorCertFinalPage
);
});
test
(
'
VENDOR-CF2-004
按注册证号(新)筛选
'
,
async
({
vendorCertFinalPage
})
=>
{
test
(
'
VENDOR-CF2-004
筛选区展开与收起正常使用
'
,
async
({
vendorCertFinalPage
})
=>
{
await
vendorCertFinalPage
.
open
();
await
vendorCertFinalPage
.
filterBySupplierOrCert
();
await
vendorCertFinalPage
.
expectFilterExpandCollapseWorks
();
});
test
(
'
VENDOR-CF2-00
5 重置恢复默认
'
,
async
({
vendorCertFinalPage
})
=>
{
test
(
'
VENDOR-CF2-00
6 分页翻至第 2 页
'
,
async
({
vendorCertFinalPage
})
=>
{
await
vendorCertFinalPage
.
open
();
await
vendorCertFinalPage
.
resetFilt
er
s
();
}
);
test
(
'
VENDOR-CF2-006 无匹配空态(mock反例)
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorCertFinalPage
})
=>
{
await
smokeMockEmpty
(
vendorCertFinalPage
);
await
vendorCertFinalPage
.
qu
er
y
();
await
vendorCertFinalPage
.
goToPage2
(
);
const
state
=
await
vendorCertFinalPage
.
snapshotList
();
expect
(
state
.
rows
,
'
第 2 页应有数据
'
).
toBeGreaterThan
(
0
);
});
test
(
'
VENDOR-CF2-00
8 制单日期起止同一天
'
,
async
({
vendorCertFinalPage
})
=>
{
test
(
'
VENDOR-CF2-00
7 切换20条每页页面正常且列表同步
'
,
async
({
vendorCertFinalPage
})
=>
{
await
vendorCertFinalPage
.
open
();
await
vendorCertFinalPage
.
filterMakeDateSameDay
();
await
vendorCertFinalPage
.
query
();
const
{
total
,
rowsBefore
,
rowsAfter
,
pageSizeLabel
}
=
await
vendorCertFinalPage
.
switchToSmallerPageSize
();
const
sizeNum
=
Number
((
pageSizeLabel
.
match
(
/
\d
+/
)
??
[
'
20
'
])[
0
]);
const
expectedRows
=
Math
.
min
(
total
,
sizeNum
);
expect
(
rowsAfter
,
`当前页行数应与
${
pageSizeLabel
}
及总条数一致`
).
toBe
(
expectedRows
);
if
(
total
>
sizeNum
)
{
expect
(
rowsAfter
,
'
切换后可见行应随每页条数变化
'
).
toBeLessThan
(
rowsBefore
);
}
expect
(
await
vendorCertFinalPage
.
getTotalCount
(),
'
总条数应不变
'
).
toBe
(
total
);
await
expect
(
vendorCertFinalPage
.
pageSizeChanger
(),
'
每页条数
'
).
toContainText
(
new
RegExp
(
String
(
sizeNum
)));
});
test
(
'
VENDOR-CF2-010 多条件组合查询(制单日期等5项)
'
,
async
({
vendorCertFinalPage
})
=>
{
});
test
.
describe
(
'
注册证变更终审 · 列设置
'
,
()
=>
{
test
.
describe
.
configure
({
mode
:
'
serial
'
,
timeout
:
120
_000
});
test
.
beforeEach
(
async
({
vendorCertFinalPage
})
=>
{
await
vendorCertFinalPage
.
open
();
await
vendorCertFinalPage
.
filterCombination
();
await
vendorCertFinalPage
.
query
();
});
test
(
'
VENDOR-CF2-003 列设置取消勾选后再勾选列表列恢复
'
,
async
({
vendorCertFinalPage
})
=>
{
await
vendorCertFinalPage
.
executeColumnSettingsToggleRestoreTest
();
});
});
test
.
describe
(
'
注册证变更终审 · 详情
'
,
()
=>
{
test
(
'
VENDOR-CF2-00
7 打开
详情后返回
'
,
async
({
vendorCertFinalPage
})
=>
{
test
(
'
VENDOR-CF2-00
5 点击详情进入
详情
页
后返回
'
,
async
({
vendorCertFinalPage
})
=>
{
await
vendorCertFinalPage
.
open
();
await
vendorCertFinalPage
.
d
etailAndBack
();
await
vendorCertFinalPage
.
openD
etailAndBack
();
});
test
(
'
VENDOR-CF2-009 与初审单据衔接不串单
'
,
async
({
vendorCertFinalPage
,
vendorCertFirstPage
})
=>
{
});
test
.
describe
(
'
注册证变更终审 · 组合查询
'
,
()
=>
{
test
(
'
VENDOR-CF2-008 首行六项组合查询
'
,
async
({
vendorCertFinalPage
})
=>
{
await
vendorCertFinalPage
.
open
();
await
vendorCertFinalPage
.
expectPeerHandoff
(
vendorCertFirstPage
);
const
sample
=
await
vendorCertFinalPage
.
queryFirstRowSixFieldCombo
();
await
assertListOrEmpty
(
await
vendorCertFinalPage
.
snapshotList
(),
'
首行六项组合查询
'
);
expect
(
await
vendorCertFinalPage
.
rowsMatchKeyword
(
'
单号
'
,
sample
.
orderNo
),
'
结果行单号应含首行取值
'
,
).
toBeTruthy
();
});
});
});
tests/spd/vendor-cert-diff.spec.ts
View file @
6c31a476
import
{
test
}
from
'
../../fixtures
'
;
import
{
expect
,
test
}
from
'
../../fixtures
'
;
import
type
{
VendorCertDiffPage
}
from
'
../../pages/spd/vendor-cert-diff.page
'
;
import
{
assertListOrEmpty
,
assertMockEmpty
}
from
'
./helpers/vendor-assert.helper
'
;
async
function
smokeMockEmpty
(
po
:
VendorCertDiffPage
):
Promise
<
void
>
{
await
po
.
open
();
await
po
.
mockEmpty
();
await
assertMockEmpty
(
await
po
.
snapshotList
());
}
/**
* 全量用例:与 testcase/基础管理-厂商管理-注册证差异对比-UI自动化测试用例-01.csv 严格一致
* 运行:npm run test:vendor-cert-diff:all
*/
test
.
describe
(
'
基础设置 · 厂商管理
'
,
()
=>
{
test
.
describe
(
'
注册证差异对比 ·
页面进入
'
,
()
=>
{
test
(
'
VENDOR-CDF-001
菜单进入注册证差异对比页
'
,
{
tag
:
'
@smoke
'
}
,
async
({
vendorCertDiffPage
})
=>
{
test
.
describe
(
'
注册证差异对比 ·
筛选与列表
'
,
()
=>
{
test
(
'
VENDOR-CDF-001
重置恢复默认
'
,
async
({
vendorCertDiffPage
})
=>
{
test
.
setTimeout
(
120
_000
);
await
vendorCertDiffPage
.
open
FromMenu
(
);
await
vendorCertDiffPage
.
expectEn
ter
ed
();
await
vendorCertDiffPage
.
open
({
keepQueryDefaults
:
true
}
);
await
vendorCertDiffPage
.
resetFil
ter
s
();
});
});
test
.
describe
(
'
注册证差异对比 · 筛选与对比
'
,
()
=>
{
test
(
'
VENDOR-CDF-002 默认查询列表有数据或空态明确
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorCertDiffPage
})
=>
{
test
(
'
VENDOR-CDF-002 无匹配空态(mock反例)
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorCertDiffPage
})
=>
{
test
.
setTimeout
(
120
_000
);
await
vendorCertDiffPage
.
open
();
await
vendorCertDiffPage
.
queryDefault
();
await
smokeMockEmpty
(
vendorCertDiffPage
);
});
test
(
'
VENDOR-CDF-003 切换不一致 Tab
'
,
async
({
vendorCertDiffPage
})
=>
{
test
(
'
VENDOR-CDF-004 筛选区展开与收起正常使用
'
,
async
({
vendorCertDiffPage
})
=>
{
test
.
setTimeout
(
120
_000
);
await
vendorCertDiffPage
.
open
();
await
vendorCertDiffPage
.
switchInconsistent
();
await
vendorCertDiffPage
.
expectFilterExpandCollapseWorks
();
});
test
(
'
VENDOR-CDF-004 切换一致 Tab
'
,
async
({
vendorCertDiffPage
})
=>
{
test
(
'
VENDOR-CDF-006 分页翻至第 2 页
'
,
async
({
vendorCertDiffPage
})
=>
{
test
.
setTimeout
(
120
_000
);
await
vendorCertDiffPage
.
open
();
await
vendorCertDiffPage
.
switchConsistent
();
await
vendorCertDiffPage
.
query
();
await
vendorCertDiffPage
.
goToPage2
();
const
state
=
await
vendorCertDiffPage
.
snapshotList
();
expect
(
state
.
rows
,
'
第 2 页应有数据
'
).
toBeGreaterThan
(
0
);
});
test
(
'
VENDOR-CDF-005 按物料名称筛选
'
,
async
({
vendorCertDiffPage
})
=>
{
test
.
setTimeout
(
120
_000
);
await
vendorCertDiffPage
.
open
();
await
vendorCertDiffPage
.
filterByMaterialSample
();
});
test
(
'
VENDOR-CDF-006 无匹配空态(mock反例)
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorCertDiffPage
})
=>
{
test
(
'
VENDOR-CDF-007 切换20条每页页面正常且列表同步
'
,
async
({
vendorCertDiffPage
})
=>
{
test
.
setTimeout
(
120
_000
);
await
vendorCertDiffPage
.
open
();
await
vendorCertDiffPage
.
mockEmpty
();
await
vendorCertDiffPage
.
query
();
const
{
total
,
rowsBefore
,
rowsAfter
,
pageSizeLabel
}
=
await
vendorCertDiffPage
.
switchToSmallerPageSize
();
const
sizeNum
=
Number
((
pageSizeLabel
.
match
(
/
\d
+/
)
??
[
'
20
'
])[
0
]);
const
expectedRows
=
Math
.
min
(
total
,
sizeNum
);
expect
(
rowsAfter
,
`当前页行数应与
${
pageSizeLabel
}
及总条数一致`
).
toBe
(
expectedRows
);
if
(
total
>
sizeNum
)
{
expect
(
rowsAfter
,
'
切换后可见行应随每页条数变化
'
).
toBeLessThan
(
rowsBefore
);
}
expect
(
await
vendorCertDiffPage
.
getTotalCount
(),
'
总条数应不变
'
).
toBe
(
total
);
await
expect
(
vendorCertDiffPage
.
pageSizeChanger
(),
'
每页条数
'
).
toContainText
(
new
RegExp
(
String
(
sizeNum
)));
});
});
test
(
'
VENDOR-CDF-007 列表核心列完整
'
,
async
({
vendorCertDiffPage
})
=>
{
test
.
setTimeout
(
120
_000
);
await
vendorCertDiffPage
.
open
();
await
vendorCertDiffPage
.
expectCoreColumns
();
});
test
.
describe
(
'
注册证差异对比 · 列设置
'
,
()
=>
{
test
.
describe
.
configure
({
mode
:
'
serial
'
,
timeout
:
120
_000
});
test
(
'
VENDOR-CDF-009 仅空格物料名称搜索
'
,
async
({
vendorCertDiffPage
})
=>
{
test
.
setTimeout
(
120
_000
);
test
.
beforeEach
(
async
({
vendorCertDiffPage
})
=>
{
await
vendorCertDiffPage
.
open
();
await
vendorCertDiffPage
.
searchSpacesOnl
y
();
await
vendorCertDiffPage
.
quer
y
();
});
test
(
'
VENDOR-CDF-010 一致行两侧字段抽样一致
'
,
async
({
vendorCertDiffPage
})
=>
{
test
.
setTimeout
(
120
_000
);
await
vendorCertDiffPage
.
open
();
await
vendorCertDiffPage
.
expectConsistentRowAligned
();
test
(
'
VENDOR-CDF-003 列设置取消勾选后再勾选列表列恢复
'
,
async
({
vendorCertDiffPage
})
=>
{
await
vendorCertDiffPage
.
executeColumnSettingsToggleRestoreTest
();
});
});
test
(
'
VENDOR-CDF-011 不一致行至少一侧差异
'
,
async
({
vendorCertDiffPage
})
=>
{
test
.
describe
(
'
注册证差异对比 · 详情
'
,
()
=>
{
test
(
'
VENDOR-CDF-005 点击详情进入详情页后返回
'
,
async
({
vendorCertDiffPage
})
=>
{
test
.
setTimeout
(
120
_000
);
await
vendorCertDiffPage
.
open
();
await
vendorCertDiffPage
.
expectInconsistentRowDiffers
();
});
test
(
'
VENDOR-CDF-012 多条件组合查询(物料名称等8项)
'
,
async
({
vendorCertDiffPage
})
=>
{
await
vendorCertDiffPage
.
open
();
await
vendorCertDiffPage
.
filterCombination
();
await
vendorCertDiffPage
.
openDetailAndBack
();
});
});
test
.
describe
(
'
注册证差异对比 ·
导出
'
,
()
=>
{
test
(
'
VENDOR-CDF-008
导出按钮可见
'
,
async
({
vendorCertDiffPage
})
=>
{
test
.
describe
(
'
注册证差异对比 ·
组合查询
'
,
()
=>
{
test
(
'
VENDOR-CDF-008
首行八项组合查询
'
,
async
({
vendorCertDiffPage
})
=>
{
test
.
setTimeout
(
120
_000
);
await
vendorCertDiffPage
.
open
();
await
vendorCertDiffPage
.
expectExportVisible
();
const
sample
=
await
vendorCertDiffPage
.
queryFirstRowEightFieldCombo
();
await
assertListOrEmpty
(
await
vendorCertDiffPage
.
snapshotList
(),
'
首行八项组合查询
'
);
expect
(
await
vendorCertDiffPage
.
rowsMatchKeyword
(
'
物料名称
'
,
sample
.
materialName
),
'
结果行物料名称应含首行取值
'
,
).
toBeTruthy
();
});
});
});
tests/spd/vendor-eval-indicator.spec.ts
View file @
6c31a476
import
{
test
}
from
'
../../fixtures
'
;
import
{
expect
,
test
}
from
'
../../fixtures
'
;
import
{
assertListOrEmpty
}
from
'
./helpers/vendor-assert.helper
'
;
/**
*
全量用例:
与 testcase/基础管理-厂商管理-评价指标维护-UI自动化测试用例-01.csv 严格一致
* 与 testcase/基础管理-厂商管理-评价指标维护-UI自动化测试用例-01.csv 严格一致
* 运行:npm run test:vendor-eval-indicator:all
*/
test
.
describe
(
'
基础设置 · 厂商管理
'
,
()
=>
{
test
.
describe
(
'
评价指标维护 · 页面进入
'
,
()
=>
{
test
(
'
VENDOR-EVI-001 菜单进入评价指标维护页
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorEvalIndicatorPage
})
=>
{
await
vendorEvalIndicatorPage
.
openFromMenu
();
await
vendorEvalIndicatorPage
.
expectEntered
();
});
});
test
.
describe
(
'
评价指标维护 · 树与列表
'
,
()
=>
{
test
(
'
VENDOR-EVI-00
2 默认查询列表有数据或空态明确
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorEvalIndicatorPage
})
=>
{
test
(
'
VENDOR-EVI-00
1 点击左侧分类可正常展开
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorEvalIndicatorPage
})
=>
{
await
vendorEvalIndicatorPage
.
open
();
await
vendorEvalIndicatorPage
.
queryDefault
();
await
vendorEvalIndicatorPage
.
expandLeftCategory
();
});
test
(
'
VENDOR-EVI-00
3 点击左侧分类树
'
,
async
({
vendorEvalIndicatorPage
})
=>
{
test
(
'
VENDOR-EVI-00
2 切换左侧不同分类右侧内容同步变化
'
,
async
({
vendorEvalIndicatorPage
})
=>
{
await
vendorEvalIndicatorPage
.
open
();
await
vendorEvalIndicatorPage
.
clickFirstTreeNode
();
await
vendorEvalIndicatorPage
.
switchCategoriesRightContentSyncs
();
});
test
(
'
VENDOR-EVI-00
4 按指标编码筛选
'
,
async
({
vendorEvalIndicatorPage
})
=>
{
test
(
'
VENDOR-EVI-00
3 选中左侧分类首行同步分类名称查询条件
'
,
async
({
vendorEvalIndicatorPage
})
=>
{
await
vendorEvalIndicatorPage
.
open
();
await
vendorEvalIndicatorPage
.
filterByIndicatorCode
();
await
vendorEvalIndicatorPage
.
selectFirstCategoryAndExpectCategoryNameFilter
();
});
});
test
.
describe
(
'
评价指标维护 · 指标一级分类右侧列表
'
,
()
=>
{
test
.
describe
.
configure
({
timeout
:
120
_000
});
test
(
'
VENDOR-EVI-005 无匹配空态(mock反例)
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorEvalIndicatorPage
})
=>
{
test
.
beforeEach
(
async
({
vendorEvalIndicatorPage
})
=>
{
await
vendorEvalIndicatorPage
.
open
();
await
vendorEvalIndicatorPage
.
mockEmpty
();
await
vendorEvalIndicatorPage
.
prepareLevel1CategoryRightList
();
});
test
(
'
VENDOR-EVI-006 列表核心列完整
'
,
async
({
vendorEvalIndicatorPage
})
=>
{
await
vendorEvalIndicatorPage
.
open
();
await
vendorEvalIndicatorPage
.
expectCoreColumns
();
test
(
'
VENDOR-EVI-004 指标编号指标名称状态列可排序
'
,
async
({
vendorEvalIndicatorPage
})
=>
{
await
vendorEvalIndicatorPage
.
expectSortableColumnsUnderLevel1
();
});
test
(
'
VENDOR-EVI-008 启用指标可供方案使用
'
,
async
({
vendorEvalIndicatorPage
,
vendorEvalSchemePage
})
=>
{
await
vendorEvalIndicatorPage
.
open
();
await
vendorEvalIndicatorPage
.
expectEnabledUsableInScheme
(
vendorEvalSchemePage
);
test
(
'
VENDOR-EVI-005 首行指标编码与指标名称组合查询
'
,
async
({
vendorEvalIndicatorPage
})
=>
{
const
sample
=
await
vendorEvalIndicatorPage
.
queryFirstRowCodeAndNameCombo
();
await
assertListOrEmpty
(
await
vendorEvalIndicatorPage
.
snapshotList
(),
'
指标编码与指标名称组合查询
'
);
expect
(
await
vendorEvalIndicatorPage
.
rowsMatchKeyword
(
sample
.
codeColumn
,
sample
.
code
),
`结果行
${
sample
.
codeColumn
}
应含首行取值`
,
).
toBeTruthy
();
expect
(
await
vendorEvalIndicatorPage
.
rowsMatchKeyword
(
'
指标名称
'
,
sample
.
name
),
'
结果行指标名称应含首行取值
'
,
).
toBeTruthy
();
});
test
(
'
VENDOR-EVI-009 多条件组合查询(指标编码等2项)
'
,
async
({
vendorEvalIndicatorPage
})
=>
{
await
vendorEvalIndicatorPage
.
open
();
await
vendorEvalIndicatorPage
.
filterCombination
();
test
(
'
VENDOR-EVI-006 重置清空指标编码与指标名称筛选
'
,
async
({
vendorEvalIndicatorPage
})
=>
{
await
vendorEvalIndicatorPage
.
expectResetClearsCodeAndNameFilters
();
});
});
test
.
describe
(
'
评价指标维护 · 详情
'
,
()
=>
{
test
(
'
VENDOR-EVI-007 打开详情后返回
'
,
async
({
vendorEvalIndicatorPage
})
=>
{
await
vendorEvalIndicatorPage
.
open
();
await
vendorEvalIndicatorPage
.
openDetailAndBack
();
test
(
'
VENDOR-EVI-007 列设置取消勾选后再勾选列表列恢复
'
,
async
({
vendorEvalIndicatorPage
})
=>
{
await
vendorEvalIndicatorPage
.
executeColumnSettingsToggleRestoreTest
();
});
});
});
tests/spd/vendor-eval-scheme.spec.ts
View file @
6c31a476
import
{
vendorEvalSchemeData
}
from
'
../../data/vendor-eval-scheme.data
'
;
import
{
expect
,
test
}
from
'
../../fixtures
'
;
import
{
assertListOrEmpty
,
assertMockEmpty
}
from
'
./helpers/vendor-assert.helper
'
;
import
{
assertListOrEmpty
}
from
'
./helpers/vendor-assert.helper
'
;
/**
* 全量用例:与 testcase/基础管理-厂商管理-评价方案维护-UI自动化测试用例-01.csv 严格一致
* 运行:npm run test:vendor-eval-scheme:all
*/
test
.
describe
(
'
基础设置 · 厂商管理
'
,
()
=>
{
test
.
describe
(
'
评价方案维护 · 页面进入
'
,
()
=>
{
test
(
'
VENDOR-EVS-001 菜单进入评价方案维护页
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorEvalSchemePage
})
=>
{
test
.
describe
(
'
评价方案维护 · 筛选与维护
'
,
()
=>
{
test
(
'
VENDOR-EVS-001 默认创建日期区间内首行四字段组合查询
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorEvalSchemePage
,
})
=>
{
await
vendorEvalSchemePage
.
openFromMenu
();
await
vendorEvalSchemePage
.
expectOnPage
();
await
expect
(
vendorEvalSchemePage
.
button
(
'
查询
'
).
first
(),
'
查询
'
).
toBeVisible
();
await
expect
(
vendorEvalSchemePage
.
button
(
'
新增
'
).
first
(),
'
新增
'
).
toBeVisible
();
expect
(
vendorEvalSchemePage
.
browserPage
.
url
()).
toContain
(
'
evaluationPlan
'
);
});
});
test
.
describe
(
'
评价方案维护 · 筛选与维护
'
,
()
=>
{
test
(
'
VENDOR-EVS-002 默认查询列表有数据或空态明确
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorEvalSchemePage
})
=>
{
await
vendorEvalSchemePage
.
open
();
await
vendorEvalSchemePage
.
query
();
await
assertListOrEmpty
(
await
vendorEvalSchemePage
.
snapshotList
());
const
sample
=
await
vendorEvalSchemePage
.
queryWithFirstRowFourFieldCombo
();
await
assertListOrEmpty
(
await
vendorEvalSchemePage
.
snapshotList
(),
'
首行四字段组合查询
'
);
expect
(
await
vendorEvalSchemePage
.
rowsMatchKeyword
(
'
方案编码
'
,
sample
.
schemeCode
),
'
结果行方案编码应含首行取值
'
,
).
toBeTruthy
();
expect
(
await
vendorEvalSchemePage
.
rowsMatchKeyword
(
'
方案名称
'
,
sample
.
schemeName
),
'
结果行方案名称应含首行取值
'
,
).
toBeTruthy
();
});
test
(
'
VENDOR-EVS-0
03 按方案编码筛选
'
,
async
({
vendorEvalSchemePage
})
=>
{
test
(
'
VENDOR-EVS-0
14 筛选区展开与收起正常使用
'
,
async
({
vendorEvalSchemePage
})
=>
{
await
vendorEvalSchemePage
.
open
();
await
vendorEvalSchemePage
.
filterBySchemeCode
();
await
assertListOrEmpty
(
await
vendorEvalSchemePage
.
snapshotList
(),
'
方案编码筛选
'
);
await
vendorEvalSchemePage
.
expectFilterExpandCollapseWorks
();
});
});
test
(
'
VENDOR-EVS-004 重置恢复默认
'
,
async
({
vendorEvalSchemePage
})
=>
{
await
vendorEvalSchemePage
.
open
();
await
vendorEvalSchemePage
.
resetFilters
();
await
assertListOrEmpty
(
await
vendorEvalSchemePage
.
snapshotList
(),
'
重置后
'
);
});
test
.
describe
(
'
评价方案维护 · 列设置
'
,
()
=>
{
test
.
describe
.
configure
({
mode
:
'
serial
'
,
timeout
:
120
_000
});
test
(
'
VENDOR-EVS-005 无匹配空态(mock反例)
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorEvalSchemePage
})
=>
{
test
.
beforeEach
(
async
({
vendorEvalSchemePage
})
=>
{
await
vendorEvalSchemePage
.
open
();
await
vendorEvalSchemePage
.
mockEmpty
();
await
assertMockEmpty
(
await
vendorEvalSchemePage
.
snapshotList
());
await
vendorEvalSchemePage
.
prepareListForColumnSettings
();
});
test
(
'
VENDOR-EVS-006 列表核心列完整
'
,
async
({
vendorEvalSchemePage
})
=>
{
await
vendorEvalSchemePage
.
open
();
await
vendorEvalSchemePage
.
query
();
const
headers
=
await
vendorEvalSchemePage
.
headerTexts
();
for
(
const
name
of
[
'
方案编码
'
,
'
方案名称
'
,
'
创建人
'
,
'
创建时间
'
,
'
状态
'
,
'
操作
'
])
{
expect
(
headers
.
join
(
'
'
),
`表头应含「
${
name
}
」`
).
toContain
(
name
.
replace
(
/
\s
/g
,
''
));
}
test
(
'
VENDOR-EVS-002 打开列设置面板
'
,
async
({
vendorEvalSchemePage
})
=>
{
await
vendorEvalSchemePage
.
openColumnSettings
();
await
vendorEvalSchemePage
.
expectColumnSettingsPanel
();
await
vendorEvalSchemePage
.
closeColumnSettingsPanel
();
});
test
(
'
VENDOR-EVS-009 方案与评价指标可关联
'
,
async
({
vendorEvalSchemePage
})
=>
{
await
vendorEvalSchemePage
.
open
();
await
vendorEvalSchemePage
.
expectIndicatorLinkable
();
});
test
(
'
VENDOR-EVS-010 多条件组合查询(创建日期等4项)
'
,
async
({
vendorEvalSchemePage
})
=>
{
await
vendorEvalSchemePage
.
open
();
await
vendorEvalSchemePage
.
filterCombination
();
test
(
'
VENDOR-EVS-003 列设置取消勾选后再勾选列表列恢复
'
,
async
({
vendorEvalSchemePage
})
=>
{
await
vendorEvalSchemePage
.
executeColumnSettingsToggleRestoreTest
();
});
});
test
.
describe
(
'
评价方案维护 · 新增
'
,
()
=>
{
test
(
'
VENDOR-EVS-007 打开新增后取消
'
,
async
({
vendorEvalSchemePage
})
=>
{
await
vendorEvalSchemePage
.
open
();
await
vendorEvalSchemePage
.
openAddAndCancel
();
await
assertListOrEmpty
(
await
vendorEvalSchemePage
.
snapshotList
(),
'
取消新增后
'
);
});
test
.
describe
(
'
评价方案维护 · 列表排序
'
,
()
=>
{
test
.
describe
.
configure
({
timeout
:
120
_000
});
test
(
'
VENDOR-EVS-008 必填为空提交拦截
'
,
async
({
vendorEvalSchemePage
})
=>
{
test
.
beforeEach
(
async
({
vendorEvalSchemePage
})
=>
{
await
vendorEvalSchemePage
.
open
();
await
vendorEvalSchemePage
.
emptyRequiredBlocked
();
await
vendorEvalSchemePage
.
prepareListForColumnSettings
();
});
for
(
const
{
id
,
column
}
of
vendorEvalSchemeData
.
sortColumnCases
)
{
test
(
`
${
id
}
${
column
}
列升序降序切换`
,
async
({
vendorEvalSchemePage
})
=>
{
await
vendorEvalSchemePage
.
expectColumnSortCase
(
column
);
});
}
});
});
tests/spd/vendor-holiday.spec.ts
View file @
6c31a476
...
...
@@ -5,27 +5,14 @@ import { expect, test } from '../../fixtures';
* 运行:npm run test:vendor-holiday:all
*/
test
.
describe
(
'
基础设置 · 厂商管理
'
,
()
=>
{
test
.
describe
(
'
供应商节假日管理 · 页面进入
'
,
()
=>
{
test
(
'
VENDOR-HLD-001 菜单进入供应商节假日管理页
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorHolidayPage
})
=>
{
await
vendorHolidayPage
.
openFromMenu
();
await
vendorHolidayPage
.
expectOnPage
();
await
expect
(
vendorHolidayPage
.
browserPage
.
getByText
(
/供应商节假日|默认假日|节假日设置/
).
first
(),
'
节假日主区
'
,
).
toBeVisible
({
timeout
:
15
_000
});
await
expect
(
vendorHolidayPage
.
button
(
'
新增
'
).
first
(),
'
新增
'
).
toBeVisible
();
expect
(
vendorHolidayPage
.
browserPage
.
url
()).
toContain
(
'
prov/holiday
'
);
});
});
test
.
describe
(
'
供应商节假日管理 · 左右分栏
'
,
()
=>
{
test
(
'
VENDOR-HLD-00
2
选中左侧节假日展示详情
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorHolidayPage
})
=>
{
test
(
'
VENDOR-HLD-00
1
选中左侧节假日展示详情
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorHolidayPage
})
=>
{
await
vendorHolidayPage
.
open
();
await
vendorHolidayPage
.
selectFirstHoliday
();
await
expect
(
vendorHolidayPage
.
browserPage
.
getByText
(
/默认假日详情|供应商自定义/
).
first
()).
toBeVisible
();
});
test
(
'
VENDOR-HLD-00
3
左侧搜索无匹配空态(mock反例)
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorHolidayPage
})
=>
{
test
(
'
VENDOR-HLD-00
2
左侧搜索无匹配空态(mock反例)
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorHolidayPage
})
=>
{
await
vendorHolidayPage
.
open
();
await
vendorHolidayPage
.
mockEmptyLeft
();
const
rows
=
vendorHolidayPage
.
browserPage
.
locator
(
...
...
@@ -36,25 +23,53 @@ test.describe('基础设置 · 厂商管理', () => {
expect
(
count
===
0
||
empty
,
'
左侧无匹配应空态
'
).
toBeTruthy
();
});
test
(
'
VENDOR-HLD-00
5 自定义节假日列表区可见
'
,
async
({
vendorHolidayPage
})
=>
{
test
(
'
VENDOR-HLD-00
6 切换列表行右侧详情名称年度一致
'
,
{
tag
:
'
@smoke
'
}
,
async
({
vendorHolidayPage
})
=>
{
await
vendorHolidayPage
.
open
();
await
vendorHolidayPage
.
selectFirstHoliday
();
await
expect
(
vendorHolidayPage
.
browserPage
.
getByText
(
'
供应商自定义节假日列表
'
).
first
()).
toBeVisible
();
await
vendorHolidayPage
.
expectSwitchRowsDetailSync
();
});
test
(
'
VENDOR-HLD-00
6 进院供应商主数据一致
'
,
async
({
vendorHolidayPage
})
=>
{
test
(
'
VENDOR-HLD-00
5 首行名称或年度搜索验证
'
,
{
tag
:
'
@smoke
'
}
,
async
({
vendorHolidayPage
})
=>
{
await
vendorHolidayPage
.
open
();
await
vendorHolidayPage
.
expectSupplierMatchesMaster
();
const
{
keyword
,
field
}
=
await
vendorHolidayPage
.
searchLeftByFirstRowSample
();
expect
(
await
vendorHolidayPage
.
leftRowsMatchKeyword
(
field
,
keyword
),
`左侧列表「
${
field
}
」应匹配关键字`
,
).
toBeTruthy
();
});
});
test
.
describe
(
'
供应商节假日管理 · 维护
'
,
()
=>
{
test
(
'
VENDOR-HLD-004 左侧新增取消
'
,
async
({
vendorHolidayPage
})
=>
{
test
(
'
VENDOR-HLD-003 点击左侧新增弹出新增弹框
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorHolidayPage
})
=>
{
await
vendorHolidayPage
.
open
();
const
dialog
=
await
vendorHolidayPage
.
openLeftAddDialog
();
await
expect
(
dialog
,
'
应为新增表单层
'
).
toContainText
(
/新增|假日|节假日/
);
await
vendorHolidayPage
.
leaveWithoutCommit
();
await
vendorHolidayPage
.
expectOnPage
();
});
test
(
'
VENDOR-HLD-004 选中首行点击编辑弹出编辑弹框
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorHolidayPage
})
=>
{
await
vendorHolidayPage
.
open
();
await
vendorHolidayPage
.
openLeftAddAndCancel
();
expect
(
vendorHolidayPage
.
browserPage
.
url
()).
toContain
(
'
prov/holiday
'
);
const
dialog
=
await
vendorHolidayPage
.
openLeftEditDialogFromFirstRow
();
await
expect
(
dialog
,
'
应为编辑表单层
'
).
toContainText
(
/编辑|假日|节假日/
);
await
vendorHolidayPage
.
leaveWithoutCommit
();
await
vendorHolidayPage
.
expectOnPage
();
});
});
test
(
'
VENDOR-HLD-007 默认假日详情区点击右侧新增弹出弹框
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorHolidayPage
})
=>
{
await
vendorHolidayPage
.
open
();
const
dialog
=
await
vendorHolidayPage
.
openRightAddDialogWithDefaultDetail
();
await
expect
(
dialog
,
'
应为新增表单层
'
).
toContainText
(
/新增|假日|节假日|供应商/
);
await
vendorHolidayPage
.
leaveWithoutCommit
();
await
vendorHolidayPage
.
expectOnPage
();
});
});
test
.
describe
(
'
供应商节假日管理 · 列设置
'
,
()
=>
{
test
(
'
VENDOR-HLD-008 右侧自定义列表打开列设置面板
'
,
async
({
vendorHolidayPage
})
=>
{
await
vendorHolidayPage
.
open
();
await
vendorHolidayPage
.
openRightColumnSettings
();
await
vendorHolidayPage
.
expectRightColumnSettingsPanel
();
await
vendorHolidayPage
.
closeRightColumnSettingsPanel
();
});
});
});
tests/spd/vendor-qual-column-settings.spec.ts
0 → 100644
View file @
6c31a476
import
{
test
}
from
'
../../fixtures
'
;
import
{
vendorQualColumnSettingsOtherTabs
}
from
'
../../data/vendor-qual-column-settings-cases
'
;
/**
* 各主 Tab 列设置(CSV VENDOR-QUL-058~073;证件效期提醒 QUL-005/006 见 vendor-qual.spec.ts)。
*/
for
(
const
{
tab
,
openCaseId
,
toggleCaseId
}
of
vendorQualColumnSettingsOtherTabs
)
{
test
.
describe
(
`供应商资质管理 ·
${
tab
}
· 列设置`
,
()
=>
{
test
.
describe
.
configure
({
mode
:
'
serial
'
,
timeout
:
120
_000
});
test
.
beforeEach
(
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
openOnMainTab
(
tab
);
await
vendorQualPage
.
query
();
});
test
(
`
${
openCaseId
}
${
tab
}
·打开列设置面板`
,
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
openColumnSettings
();
await
vendorQualPage
.
expectColumnSettingsPanel
();
await
vendorQualPage
.
closeColumnSettingsPanel
();
});
test
(
`
${
toggleCaseId
}
${
tab
}
·列设置取消勾选后再勾选列表列恢复`
,
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
executeColumnSettingsToggleRestoreTest
();
});
});
}
tests/spd/vendor-qual-sync-tabs.spec.ts
0 → 100644
View file @
6c31a476
import
{
expect
,
test
}
from
'
../../fixtures
'
;
import
{
listSubTabTitleSummary
}
from
'
../../data/vendor-qual-subtabs.data
'
;
import
{
vendorQualComboTestLabel
,
vendorQualResetTestLabel
,
vendorQualSyncTabs
,
}
from
'
../../data/vendor-qual-tab-cases
'
;
function
expectDetailSupplierMatchesList
(
listSupplier
:
string
,
detailSupplier
:
string
):
void
{
const
listNorm
=
listSupplier
.
replace
(
/
\s
/g
,
''
);
const
detailNorm
=
detailSupplier
.
replace
(
/
\s
/g
,
''
);
expect
(
detailNorm
.
length
,
'
详情应展示销售商(自定义)
'
).
toBeGreaterThan
(
0
);
expect
(
detailNorm
.
includes
(
listNorm
)
||
listNorm
.
includes
(
detailNorm
),
'
详情销售商(自定义)应与列表首行一致
'
,
).
toBeTruthy
();
}
/**
* 与 testcase/…供应商资质管理-UI自动化测试用例-01.csv 中 VENDOR-QUL-010 起各主 Tab 用例一致。
*/
for
(
const
tabCase
of
vendorQualSyncTabs
)
{
const
{
tab
,
caseIds
}
=
tabCase
;
test
.
describe
(
`供应商资质管理 ·
${
tab
}
`
,
()
=>
{
test
(
`
${
caseIds
.
combo
}
${
tab
}
·
${
vendorQualComboTestLabel
(
tabCase
)}
组合查询`
,
async
({
vendorQualPage
})
=>
{
const
sample
=
await
vendorQualPage
.
queryByFirstRowCombo
(
tabCase
);
await
vendorQualPage
.
expectQueryMatchesCombo
(
tabCase
,
sample
.
supplierKeyword
,
sample
.
secondValue
,
sample
.
extraFields
,
);
});
test
(
`
${
caseIds
.
reset
}
${
tab
}
·
${
vendorQualResetTestLabel
(
tabCase
)}
`
,
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
resetClearsSupplierFilterAfterFill
(
tabCase
);
});
test
(
`
${
caseIds
.
export
}
${
tab
}
·查询后导出无报错`
,
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
exportAfterQueryWithFirstRow
(
tabCase
);
});
test
(
`
${
caseIds
.
view
}
${
tab
}
·首行查看详情销售商(自定义)一致`
,
async
({
vendorQualPage
})
=>
{
const
{
listSupplier
,
detailSupplier
}
=
await
vendorQualPage
.
viewFirstRowAndReadSuppliers
(
tabCase
);
expectDetailSupplierMatchesList
(
listSupplier
,
detailSupplier
);
});
if
(
tabCase
.
hasExpirySubTabs
&&
caseIds
.
expirySwitch
&&
caseIds
.
expiryCount
)
{
test
(
`
${
caseIds
.
expirySwitch
}
${
tab
}
·列表子 Tab
${
listSubTabTitleSummary
(
tab
)}
可切换`
,
async
({
vendorQualPage
,
})
=>
{
await
vendorQualPage
.
switchAllExpirySubTabs
(
tabCase
);
});
test
(
`
${
caseIds
.
expiryCount
}
${
tab
}
·列表子 Tab 计数与列表一致`
,
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
expectExpirySubTabCountsMatchList
(
tabCase
);
});
}
});
}
tests/spd/vendor-qual.spec.ts
View file @
6c31a476
import
{
expect
,
test
}
from
'
../../fixtures
'
;
import
{
assertHeadersContain
,
assertListOrEmpty
,
assertMockEmpty
}
from
'
./helpers/vendor-assert.helper
'
;
/**
*
全量用例:与 testcase/基础管理-厂商管理-供应商资质管理-UI自动化测试用例-01.csv 严格一致
*
断言在用例;PO 负责动作/取数
。运行:npm run test:vendor-qual:all
*
证件效期提醒 Tab:VENDOR-QUL-001~009、005–006(列设置)、007–008(列表效期子 Tab)。
*
其它主 Tab:vendor-qual-sync-tabs.spec.ts(QUL-010~057);各 Tab 列设置:005/006(证件效期提醒)、058~073(vendor-qual-column-settings.spec.ts)
。运行:npm run test:vendor-qual:all
*/
test
.
describe
(
'
基础设置 · 厂商管理
'
,
()
=>
{
test
.
describe
(
'
供应商资质管理 · 页面进入
'
,
()
=>
{
test
(
'
VENDOR-QUL-001
菜单进入供应商资质管理页
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorQualPage
})
=>
{
test
(
'
VENDOR-QUL-001
进入页面列表 Tab 默认证件效期提醒
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
openFromMenu
();
await
vendorQualPage
.
expectOnPage
();
await
expect
(
vendorQualPage
.
button
(
'
查询
'
).
first
(),
'
查询
'
).
toBeVisible
();
await
expect
(
vendorQualPage
.
button
(
'
重置
'
).
first
(),
'
重置
'
).
toBeVisible
();
expect
(
vendorQualPage
.
browserPage
.
url
()).
toContain
(
'
basic/qcManage
'
);
await
vendorQualPage
.
expectTabActive
(
'
证件效期提醒
'
);
});
});
test
.
describe
(
'
供应商资质管理 · 筛选与 Tab
'
,
()
=>
{
test
(
'
VENDOR-QUL-002 默认查询列表有数据或空态明确
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
open
();
await
vendorQualPage
.
query
();
await
assertListOrEmpty
(
await
vendorQualPage
.
snapshotList
());
test
.
describe
(
'
供应商资质管理 · 证件效期提醒
'
,
()
=>
{
test
(
'
VENDOR-QUL-002 首行选中销售商(自定义)名称与证件类型组合查询
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorQualPage
,
})
=>
{
const
sample
=
await
vendorQualPage
.
queryByFirstRowSupplierAndCertType
();
await
vendorQualPage
.
expectQueryMatchesSupplierAndCertType
(
sample
.
supplierKeyword
,
sample
.
certType
);
});
test
(
'
VENDOR-QUL-003 切换授权链路效期预警 Tab
'
,
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
open
();
await
vendorQualPage
.
switchAuthLinkWarning
();
await
assertListOrEmpty
(
await
vendorQualPage
.
snapshotList
(),
'
授权链路效期预警
'
);
test
(
'
VENDOR-QUL-003 填写销售商(自定义)名称后重置清空条件
'
,
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
resetClearsSupplierFilterAfterFill
();
});
test
(
'
VENDOR-QUL-004 近三个月到期计数一致
'
,
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
open
();
await
vendorQualPage
.
switchExpiringThreeMonths
();
await
assertListOrEmpty
(
await
vendorQualPage
.
snapshotList
(),
'
近三个月到期
'
);
test
(
'
VENDOR-QUL-004 查询后导出无报错
'
,
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
exportAfterQueryWithFirstRow
();
});
test
(
'
VENDOR-QUL-005 按进院供应商筛选
'
,
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
open
();
await
vendorQualPage
.
filterBySupplierSample
();
await
assertListOrEmpty
(
await
vendorQualPage
.
snapshotList
(),
'
进院供应商筛选
'
);
test
(
'
VENDOR-QUL-009 首行查看详情销售商(自定义)与列表一致
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorQualPage
})
=>
{
const
{
listSupplier
,
detailSupplier
}
=
await
vendorQualPage
.
viewFirstRowAndReadSuppliers
();
const
listNorm
=
listSupplier
.
replace
(
/
\s
/g
,
''
);
const
detailNorm
=
detailSupplier
.
replace
(
/
\s
/g
,
''
);
expect
(
detailNorm
.
length
,
'
详情应展示销售商(自定义)
'
).
toBeGreaterThan
(
0
);
expect
(
detailNorm
.
includes
(
listNorm
)
||
listNorm
.
includes
(
detailNorm
),
'
详情销售商(自定义)应与列表首行一致
'
,
).
toBeTruthy
();
});
});
test
(
'
VENDOR-QUL-006 重置恢复默认
'
,
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
open
();
await
vendorQualPage
.
resetFilters
();
await
assertListOrEmpty
(
await
vendorQualPage
.
snapshotList
(),
'
重置后
'
);
});
test
.
describe
(
'
供应商资质管理 · 列设置
'
,
()
=>
{
test
.
describe
.
configure
({
mode
:
'
serial
'
,
timeout
:
120
_000
});
test
(
'
VENDOR-QUL-007 无匹配空态(mock反例)
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
open
();
await
vendorQualPage
.
mockEmpty
();
await
assertMockEmpty
(
await
vendorQualPage
.
snapshotList
());
test
.
beforeEach
(
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
openOnCertExpiryReminder
();
await
vendorQualPage
.
query
();
});
test
(
'
VENDOR-QUL-009 制单/效期日期起止同一天
'
,
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
open
();
await
vendorQualPage
.
filterSameDayExpiryOrMakeDate
();
await
assertListOrEmpty
(
await
vendorQualPage
.
snapshotList
(),
'
同日日期筛选
'
);
test
(
'
VENDOR-QUL-005 打开列设置面板
'
,
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
openColumnSettings
();
await
vendorQualPage
.
expectColumnSettingsPanel
();
await
vendorQualPage
.
closeColumnSettingsPanel
();
});
test
(
'
VENDOR-QUL-010 多条件组合查询(销售商名称等2项)
'
,
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
open
();
await
vendorQualPage
.
filterCombination
();
test
(
'
VENDOR-QUL-006 列设置取消勾选后再勾选列表列恢复
'
,
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
executeColumnSettingsToggleRestoreTest
();
});
});
test
.
describe
(
'
供应商资质管理 · 查看与导出
'
,
()
=>
{
test
(
'
VENDOR-QUL-008 导出按钮可见
'
,
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
open
();
const
exportBtn
=
vendorQualPage
.
button
(
'
导出
'
).
or
(
vendorQualPage
.
button
(
'
导出明细
'
)).
first
();
await
expect
(
exportBtn
,
'
导出按钮
'
).
toBeVisible
();
test
.
describe
(
'
供应商资质管理 · 证件效期提醒 · 效期子 Tab
'
,
()
=>
{
test
(
'
VENDOR-QUL-007 效期子 Tab 三个月内/一个月内/已过期可切换
'
,
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
switchAllExpirySubTabs
();
});
test
(
'
VENDOR-QUL-008 效期子 Tab 计数与列表总数一致
'
,
async
({
vendorQualPage
})
=>
{
await
vendorQualPage
.
expectExpirySubTabCountsMatchList
();
});
});
});
tests/spd/vendor-query.spec.ts
View file @
6c31a476
import
{
vendorData
}
from
'
../../data/vendor.data
'
;
import
{
expect
,
test
}
from
'
../../fixtures
'
;
import
{
assertHeadersContain
,
assertListOrEmpty
,
assertMockEmpty
}
from
'
./helpers/vendor-assert.helper
'
;
import
{
assertListOrEmpty
,
assertMockEmpty
}
from
'
./helpers/vendor-assert.helper
'
;
/**
* 全量用例:与 testcase/基础管理-厂商管理-厂商查询-UI自动化测试用例-01.csv 严格一致
...
...
@@ -7,74 +8,33 @@ import { assertHeadersContain, assertListOrEmpty, assertMockEmpty } from './help
* 运行:npm run test:vendor-query:all
*/
test
.
describe
(
'
基础设置 · 厂商管理
'
,
()
=>
{
test
.
describe
(
'
厂商查询 · 页面进入
'
,
()
=>
{
test
(
'
VENDOR-QRY-001 菜单进入厂商查询页
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorQueryPage
})
=>
{
await
vendorQueryPage
.
openFromMenu
();
await
vendorQueryPage
.
ready
();
await
expect
(
vendorQueryPage
.
registrantTab
(),
'
器械注册人 Tab
'
).
toBeVisible
();
await
expect
(
vendorQueryPage
.
distributorTab
(),
'
经销商 Tab
'
).
toBeVisible
();
await
expect
(
vendorQueryPage
.
nameSearch
(),
'
厂商名称搜索
'
).
toBeVisible
();
expect
(
vendorQueryPage
.
browserPage
.
url
(),
'
URL 应含厂商查询 path
'
).
toContain
(
'
mfrsName/factory
'
);
});
test
.
describe
(
'
未登录
'
,
()
=>
{
test
.
use
({
storageState
:
{
cookies
:
[],
origins
:
[]
}
});
test
(
'
VENDOR-QRY-010 未登录访问拦截
'
,
async
({
vendorQueryPage
})
=>
{
const
probe
=
await
vendorQueryPage
.
probeUnauthAccess
();
expect
(
probe
.
onLogin
||
!
probe
.
hasBusinessRow
,
'
未登录不可见厂商业务列表
'
).
toBeTruthy
();
});
});
});
test
.
describe
(
'
厂商查询 · Tab 与搜索
'
,
()
=>
{
test
(
'
VENDOR-QRY-002 默认器械注册人列表有数据或空态明确
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorQueryPage
})
=>
{
await
vendorQueryPage
.
open
();
await
vendorQueryPage
.
switchRegistrant
();
await
assertListOrEmpty
(
await
vendorQueryPage
.
snapshotList
(),
'
器械注册人
'
);
});
test
(
'
VENDOR-QRY-003 切换经销商 Tab
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorQueryPage
})
=>
{
test
(
'
VENDOR-QRY-001 切换经销商 Tab
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorQueryPage
})
=>
{
await
vendorQueryPage
.
open
();
await
vendorQueryPage
.
switchDistributor
();
await
assertListOrEmpty
(
await
vendorQueryPage
.
snapshotList
(),
'
经销商
'
);
});
test
(
'
VENDOR-QRY-00
4
按厂商名称搜索
'
,
async
({
vendorQueryPage
})
=>
{
test
(
'
VENDOR-QRY-00
2
按厂商名称搜索
'
,
async
({
vendorQueryPage
})
=>
{
await
vendorQueryPage
.
open
();
const
keyword
=
await
vendorQueryPage
.
searchBySampleName
();
expect
(
await
vendorQueryPage
.
rowsMatchKeyword
(
'
厂商名称
'
,
keyword
),
'
结果行厂商名称应匹配关键字
'
).
toBeTruthy
();
});
test
(
'
VENDOR-QRY-00
5
清空搜索恢复
'
,
async
({
vendorQueryPage
})
=>
{
test
(
'
VENDOR-QRY-00
3
清空搜索恢复
'
,
async
({
vendorQueryPage
})
=>
{
await
vendorQueryPage
.
open
();
await
vendorQueryPage
.
searchBySampleName
();
const
{
before
,
after
}
=
await
vendorQueryPage
.
clearNameSearch
();
expect
(
after
,
'
清空后条数应不少于过滤后
'
).
toBeGreaterThanOrEqual
(
before
);
});
test
(
'
VENDOR-QRY-00
6
无匹配空态(mock反例)
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorQueryPage
})
=>
{
test
(
'
VENDOR-QRY-00
4
无匹配空态(mock反例)
'
,
{
tag
:
'
@smoke
'
},
async
({
vendorQueryPage
})
=>
{
await
vendorQueryPage
.
open
();
await
vendorQueryPage
.
searchMockEmpty
();
await
assertMockEmpty
(
await
vendorQueryPage
.
snapshotList
());
});
test
(
'
VENDOR-QRY-007 列表核心列完整
'
,
async
({
vendorQueryPage
})
=>
{
await
vendorQueryPage
.
open
();
await
vendorQueryPage
.
switchRegistrant
();
assertHeadersContain
(
await
vendorQueryPage
.
headerTexts
(),
[
'
序号
'
,
'
厂商编号
'
,
'
厂商名称
'
,
'
产地
'
,
'
详细地址
'
,
'
简称
'
,
'
开户银行
'
,
'
银行账号
'
,
]);
});
test
(
'
VENDOR-QRY-008 分页翻至第 2 页
'
,
async
({
vendorQueryPage
})
=>
{
test
(
'
VENDOR-QRY-005 分页翻至第 2 页
'
,
async
({
vendorQueryPage
})
=>
{
await
vendorQueryPage
.
open
();
await
vendorQueryPage
.
switchRegistrant
();
await
vendorQueryPage
.
goToPage2
();
...
...
@@ -82,16 +42,48 @@ test.describe('基础设置 · 厂商管理', () => {
expect
(
state
.
rows
,
'
第 2 页应有数据
'
).
toBeGreaterThan
(
0
);
});
test
(
'
VENDOR-QRY-009 仅空格关键字搜索
'
,
async
({
vendorQueryPage
})
=>
{
test
(
'
VENDOR-QRY-006 经销商选首行验证厂商名称查询条件
'
,
async
({
vendorQueryPage
})
=>
{
await
vendorQueryPage
.
open
();
const
keyword
=
await
vendorQueryPage
.
searchByDistributorFirstRowSelection
();
expect
(
await
vendorQueryPage
.
rowsMatchKeyword
(
'
厂商名称
'
,
keyword
),
'
按首行厂商名称查询应命中
'
).
toBeTruthy
();
const
filterValue
=
((
await
vendorQueryPage
.
nameSearch
().
inputValue
().
catch
(()
=>
''
))
??
''
).
trim
();
expect
(
filterValue
.
replace
(
/
\s
/g
,
''
),
'
厂商名称查询条件应已写入关键字
'
).
toContain
(
keyword
.
replace
(
/
\s
/g
,
''
),
);
});
test
(
'
VENDOR-QRY-007 切换20条每页页面正常且列表同步
'
,
async
({
vendorQueryPage
})
=>
{
await
vendorQueryPage
.
open
();
await
vendorQueryPage
.
searchSpacesOnly
();
await
assertListOrEmpty
(
await
vendorQueryPage
.
snapshotList
(),
'
空格搜索
'
);
await
vendorQueryPage
.
switchRegistrant
();
const
{
total
,
rowsBefore
,
rowsAfter
,
pageSizeLabel
}
=
await
vendorQueryPage
.
switchToSmallerPageSize
();
const
sizeNum
=
Number
((
pageSizeLabel
.
match
(
/
\d
+/
)
??
[
'
20
'
])[
0
]);
const
expectedRows
=
Math
.
min
(
total
,
sizeNum
);
expect
(
rowsAfter
,
`当前页行数应与
${
pageSizeLabel
}
及总条数一致`
).
toBe
(
expectedRows
);
if
(
total
>
sizeNum
)
{
expect
(
rowsAfter
,
'
切换后可见行应随每页条数变化
'
).
toBeLessThan
(
rowsBefore
);
}
expect
(
await
vendorQueryPage
.
getTotalCount
(),
'
总条数应不变
'
).
toBe
(
total
);
await
expect
(
vendorQueryPage
.
pageSizeChanger
(),
'
每页条数
'
).
toContainText
(
new
RegExp
(
String
(
sizeNum
)));
expect
(
pageSizeLabel
,
'
与数据配置一致
'
).
toBe
(
vendorData
.
paginationPageSizeTo
);
});
});
test
(
'
VENDOR-QRY-011 厂商名称与资质管理进院供应商可对照
'
,
async
({
vendorQueryPage
,
vendorQualPage
})
=>
{
test
.
describe
(
'
厂商查询 · 列设置
'
,
()
=>
{
test
.
describe
.
configure
({
mode
:
'
serial
'
,
timeout
:
120
_000
});
test
.
beforeEach
(
async
({
vendorQueryPage
})
=>
{
await
vendorQueryPage
.
open
();
await
vendorQueryPage
.
searchQualWithNameKeyword
(
vendorQualPage
);
await
assertListOrEmpty
(
await
vendorQualPage
.
snapshotList
(),
'
资质管理对照
'
);
await
vendorQueryPage
.
switchRegistrant
();
});
test
(
'
VENDOR-QRY-008 打开列设置面板
'
,
async
({
vendorQueryPage
})
=>
{
await
vendorQueryPage
.
openColumnSettings
();
await
vendorQueryPage
.
expectColumnSettingsPanel
();
await
vendorQueryPage
.
closeColumnSettingsPanel
();
});
test
(
'
VENDOR-QRY-009 列设置取消勾选后再勾选列表列恢复
'
,
async
({
vendorQueryPage
})
=>
{
await
vendorQueryPage
.
executeColumnSettingsToggleRestoreTest
();
});
});
});
tests/spd/warehouse-zone.spec.ts
View file @
6c31a476
...
...
@@ -30,17 +30,9 @@ test.describe('基础设置 · 库房管理', () => {
});
test
.
describe
(
'
库区设置 · 左侧库房树
'
,
()
=>
{
test
(
'
WH-ZON-003 库房树默认有选中项
'
,
{
tag
:
'
@smoke
'
},
async
({
warehouseZonePage
})
=>
{
await
warehouseZonePage
.
open
();
const
names
=
await
warehouseZonePage
.
visibleTreeNames
();
expect
(
names
.
length
,
'
库房树至少 1 个节点
'
).
toBeGreaterThan
(
0
);
const
selected
=
await
warehouseZonePage
.
selectedWarehouse
();
expect
(
selected
,
'
应有选中库房
'
).
toBeTruthy
();
await
assertListOrEmpty
(
await
warehouseZonePage
.
snapshotList
(),
'
当前库房库区
'
);
});
test
(
'
WH-ZON-004 清空库房名称恢复全量树
'
,
async
({
warehouseZonePage
})
=>
{
test
(
'
WH-ZON-003 清空库房名称恢复全量树
'
,
async
({
warehouseZonePage
})
=>
{
await
warehouseZonePage
.
open
();
const
before
=
(
await
warehouseZonePage
.
visibleTreeNames
()).
length
;
const
sample
=
await
warehouseZonePage
.
selectedWarehouse
();
...
...
@@ -50,7 +42,7 @@ test.describe('基础设置 · 库房管理', () => {
expect
(
after
,
'
清空后树应恢复全量
'
).
toBe
(
before
);
});
test
(
'
WH-ZON-00
5
切换库房刷新右侧列表
'
,
async
({
warehouseZonePage
})
=>
{
test
(
'
WH-ZON-00
4
切换库房刷新右侧列表
'
,
async
({
warehouseZonePage
})
=>
{
await
warehouseZonePage
.
open
();
const
rows
=
await
warehouseZonePage
.
listRows
();
const
firstNo
=
(
await
rows
.
count
())
>
0
?
await
warehouseZonePage
.
tryCell
(
rows
.
first
(),
'
库区编号
'
)
:
''
;
...
...
@@ -65,7 +57,7 @@ test.describe('基础设置 · 库房管理', () => {
});
});
test
.
describe
(
'
库区设置 · 右侧库区列表与分页
'
,
()
=>
{
test
(
'
WH-ZON-00
6
列表核心列完整
'
,
{
tag
:
'
@smoke
'
},
async
({
warehouseZonePage
})
=>
{
test
(
'
WH-ZON-00
5
列表核心列完整
'
,
{
tag
:
'
@smoke
'
},
async
({
warehouseZonePage
})
=>
{
await
warehouseZonePage
.
open
();
assertHeadersContain
(
await
warehouseZonePage
.
headerTexts
(),
[
'
库区编号
'
,
...
...
@@ -87,7 +79,7 @@ test.describe('基础设置 · 库房管理', () => {
}
});
test
(
'
WH-ZON-00
7
默认库区以标签展示
'
,
async
({
warehouseZonePage
})
=>
{
test
(
'
WH-ZON-00
6
默认库区以标签展示
'
,
async
({
warehouseZonePage
})
=>
{
await
warehouseZonePage
.
open
();
const
headers
=
(
await
warehouseZonePage
.
headerTexts
()).
join
(
'
'
);
expect
(
headers
.
includes
(
'
默认库区
'
),
'
默认库区不是独立列
'
).
toBeFalsy
();
...
...
@@ -98,14 +90,14 @@ test.describe('基础设置 · 库房管理', () => {
});
test
.
describe
(
'
库区设置 · 库区搜索
'
,
()
=>
{
test
(
'
WH-ZON-00
8
按库区编号搜索
'
,
{
tag
:
'
@smoke
'
},
async
({
warehouseZonePage
})
=>
{
test
(
'
WH-ZON-00
7
按库区编号搜索
'
,
{
tag
:
'
@smoke
'
},
async
({
warehouseZonePage
})
=>
{
await
warehouseZonePage
.
open
();
const
zoneNo
=
await
warehouseZonePage
.
sampleCell
(
'
库区编号
'
);
await
warehouseZonePage
.
searchZone
(
zoneNo
);
expect
(
await
warehouseZonePage
.
rowsMatchKeyword
(
'
库区编号
'
,
zoneNo
),
'
结果应含该编号
'
).
toBeTruthy
();
});
test
(
'
WH-ZON-00
9
按库区名称搜索
'
,
async
({
warehouseZonePage
})
=>
{
test
(
'
WH-ZON-00
8
按库区名称搜索
'
,
async
({
warehouseZonePage
})
=>
{
await
warehouseZonePage
.
open
();
const
name
=
await
warehouseZonePage
.
sampleCell
(
'
库区名称
'
);
const
keyword
=
name
.
replace
(
/默认库区/g
,
''
).
slice
(
0
,
Math
.
min
(
name
.
length
,
6
));
...
...
@@ -113,7 +105,7 @@ test.describe('基础设置 · 库房管理', () => {
expect
(
await
warehouseZonePage
.
rowsMatchKeyword
(
'
库区名称
'
,
keyword
),
'
名称关键字应命中
'
).
toBeTruthy
();
});
test
(
'
WH-ZON-0
1
0 无匹配库区空态(mock反例)
'
,
{
tag
:
'
@smoke
'
},
async
({
warehouseZonePage
})
=>
{
test
(
'
WH-ZON-00
9
无匹配库区空态(mock反例)
'
,
{
tag
:
'
@smoke
'
},
async
({
warehouseZonePage
})
=>
{
await
warehouseZonePage
.
open
();
await
warehouseZonePage
.
searchZone
(
warehouseData
.
mockZone
);
await
assertMockEmpty
(
await
warehouseZonePage
.
snapshotList
(),
'
库区 mock
'
);
...
...
@@ -121,7 +113,7 @@ test.describe('基础设置 · 库房管理', () => {
});
test
.
describe
(
'
库区设置 · 新增库区
'
,
()
=>
{
test
(
'
WH-ZON-01
1
打开新增库区弹窗
'
,
{
tag
:
'
@smoke
'
},
async
({
warehouseZonePage
})
=>
{
test
(
'
WH-ZON-01
0
打开新增库区弹窗
'
,
{
tag
:
'
@smoke
'
},
async
({
warehouseZonePage
})
=>
{
await
warehouseZonePage
.
open
();
const
dialog
=
await
warehouseZonePage
.
openAddDialog
();
expect
(
await
warehouseZonePage
.
dialogTitle
(),
'
标题
'
).
toContain
(
'
新增库区
'
);
...
...
@@ -134,7 +126,7 @@ test.describe('基础设置 · 库房管理', () => {
await
warehouseZonePage
.
cancelDialog
();
});
test
(
'
WH-ZON-01
2
新增取消不落库
'
,
async
({
warehouseZonePage
})
=>
{
test
(
'
WH-ZON-01
1
新增取消不落库
'
,
async
({
warehouseZonePage
})
=>
{
await
warehouseZonePage
.
open
();
const
zoneNo
=
`AUTO
${
Date
.
now
()}
`
;
await
warehouseZonePage
.
openAddDialog
();
...
...
@@ -144,7 +136,7 @@ test.describe('基础设置 · 库房管理', () => {
await
assertMockEmpty
(
await
warehouseZonePage
.
snapshotList
(),
'
取消新增
'
);
});
test
(
'
WH-ZON-01
3
必填为空拦截
'
,
async
({
warehouseZonePage
})
=>
{
test
(
'
WH-ZON-01
2
必填为空拦截
'
,
async
({
warehouseZonePage
})
=>
{
await
warehouseZonePage
.
open
();
await
warehouseZonePage
.
openAddDialog
();
await
warehouseZonePage
.
confirmDialog
();
...
...
@@ -156,7 +148,7 @@ test.describe('基础设置 · 库房管理', () => {
});
test
.
describe
(
'
库区设置 · 编辑库区
'
,
()
=>
{
test
(
'
WH-ZON-01
4
打开编辑并回填
'
,
async
({
warehouseZonePage
})
=>
{
test
(
'
WH-ZON-01
3
打开编辑并回填
'
,
async
({
warehouseZonePage
})
=>
{
await
warehouseZonePage
.
open
();
const
sample
=
await
warehouseZonePage
.
openEditFirst
();
expect
(
await
warehouseZonePage
.
dialogTitle
(),
'
标题
'
).
toContain
(
'
编辑库区信息
'
);
...
...
@@ -172,7 +164,7 @@ test.describe('基础设置 · 库房管理', () => {
await
warehouseZonePage
.
cancelDialog
();
});
test
(
'
WH-ZON-01
5
编辑取消不保存
'
,
async
({
warehouseZonePage
})
=>
{
test
(
'
WH-ZON-01
4
编辑取消不保存
'
,
async
({
warehouseZonePage
})
=>
{
await
warehouseZonePage
.
open
();
const
before
=
await
warehouseZonePage
.
openEditFirst
();
await
warehouseZonePage
.
fill
(
warehouseZonePage
.
locators
.
shelfName
,
`临时
${
Date
.
now
()}
`
,
'
改名称
'
);
...
...
@@ -182,7 +174,7 @@ test.describe('基础设置 · 库房管理', () => {
await
warehouseZonePage
.
cancelDialog
();
});
test
(
'
WH-ZON-01
6
编辑清空必填拦截
'
,
async
({
warehouseZonePage
})
=>
{
test
(
'
WH-ZON-01
5
编辑清空必填拦截
'
,
async
({
warehouseZonePage
})
=>
{
await
warehouseZonePage
.
open
();
const
before
=
await
warehouseZonePage
.
openEditFirst
();
await
warehouseZonePage
.
fill
(
warehouseZonePage
.
locators
.
shelfName
,
''
,
'
清空库区名称
'
);
...
...
Prev
1
…
14
15
16
17
18
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