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
b8b4c69c
Commit
b8b4c69c
authored
Nov 04, 2026
by
liguangyu06
Browse files
新增产品管理全链路自动化资产,并修复详情层/树页/路径串页等稳定问题。
parent
297e887d
Changes
234
Hide whitespace changes
Inline
Side-by-side
tests/spd/prodm-material-chg.spec.ts
0 → 100644
View file @
b8b4c69c
import
{
expect
,
test
}
from
'
../../fixtures
'
;
/**
* 全量用例:与 testcase/基础管理-产品管理-物料信息变更-UI自动化测试用例-01.csv 严格一致
* 运行:npm run test:prodm-material-chg:all
*/
test
.
describe
(
'
基础设置 · 产品管理
'
,
()
=>
{
test
.
describe
(
'
物料信息变更 · 快捷筛选查询
'
,
()
=>
{
test
(
'
PRODM-MCH-001 快捷区重置恢复默认
'
,
{
tag
:
'
@smoke
'
},
async
({
prodmMaterialChgPage
})
=>
{
await
prodmMaterialChgPage
.
open
();
await
prodmMaterialChgPage
.
clickResetQuick
();
await
prodmMaterialChgPage
.
expectOnPage
();
});
});
test
.
describe
(
'
物料信息变更 · 高级筛选抽屉
'
,
()
=>
{
test
(
'
PRODM-MCH-002 全量查询条件组合查询
'
,
async
({
prodmMaterialChgPage
})
=>
{
test
.
skip
(
true
,
'
组合查询须按页面配置 quickFields/drawerFields 实现 searchWithQuickAndDrawerCombo(对齐 center-report-sheet STAT-IOD-004),禁止临时启发式填表
'
,
);
});
test
(
'
PRODM-MCH-003 点击高级筛选打开抽屉
'
,
async
({
prodmMaterialChgPage
})
=>
{
await
prodmMaterialChgPage
.
open
();
await
prodmMaterialChgPage
.
openAdvancedFilterDrawer
();
});
});
test
.
describe
(
'
物料信息变更 · 列表
'
,
()
=>
{
test
(
'
PRODM-MCH-004 列表核心列完整
'
,
async
({
prodmMaterialChgPage
})
=>
{
await
prodmMaterialChgPage
.
open
();
await
prodmMaterialChgPage
.
assertConfiguredHeaders
();
});
test
(
'
PRODM-MCH-008 列设置隐藏后再恢复
'
,
async
({
prodmMaterialChgPage
})
=>
{
await
prodmMaterialChgPage
.
open
();
await
prodmMaterialChgPage
.
clickQuery
();
await
prodmMaterialChgPage
.
executeColumnSettingsToggleRestoreTest
();
});
test
(
'
PRODM-MCH-009 横向滚动与列对齐
'
,
async
({
prodmMaterialChgPage
})
=>
{
await
prodmMaterialChgPage
.
open
();
await
prodmMaterialChgPage
.
expectHorizontalScrollAlignment
();
});
test
(
'
PRODM-MCH-010 无匹配空态(mock反例)
'
,
async
({
prodmMaterialChgPage
})
=>
{
await
prodmMaterialChgPage
.
open
();
await
prodmMaterialChgPage
.
searchByMockKeyword
();
const
snap
=
await
prodmMaterialChgPage
.
snapshotList
();
expect
(
snap
.
rows
===
0
||
snap
.
emptyVisible
,
'
无匹配应空态
'
).
toBeTruthy
();
});
});
test
.
describe
(
'
物料信息变更 · 行内操作
'
,
()
=>
{
test
(
'
PRODM-MCH-005 行内「详情」可达(只读冒烟)
'
,
async
({
prodmMaterialChgPage
})
=>
{
await
prodmMaterialChgPage
.
open
();
await
prodmMaterialChgPage
.
rowActionSmoke
(
'
详情
'
);
});
test
(
'
PRODM-MCH-006 行内「编辑」可达(只读冒烟)
'
,
async
({
prodmMaterialChgPage
})
=>
{
await
prodmMaterialChgPage
.
open
();
await
prodmMaterialChgPage
.
rowActionSmoke
(
'
编辑
'
);
});
test
(
'
PRODM-MCH-007 行内「日志」可达(只读冒烟)
'
,
async
({
prodmMaterialChgPage
})
=>
{
await
prodmMaterialChgPage
.
open
();
await
prodmMaterialChgPage
.
rowActionSmoke
(
'
日志
'
);
});
});
test
.
describe
(
'
物料信息变更 · 分页
'
,
()
=>
{
test
(
'
PRODM-MCH-011 有数据时总条数
'
,
async
({
prodmMaterialChgPage
})
=>
{
await
prodmMaterialChgPage
.
open
();
await
prodmMaterialChgPage
.
assertTotalWhenHasData
();
});
test
(
'
PRODM-MCH-012 切换至第 2 页
'
,
async
({
prodmMaterialChgPage
})
=>
{
await
prodmMaterialChgPage
.
open
();
await
prodmMaterialChgPage
.
goToPage2ForProdm
();
});
test
(
'
PRODM-MCH-013 切换20条每页页面正常且列表同步
'
,
async
({
prodmMaterialChgPage
})
=>
{
await
prodmMaterialChgPage
.
open
();
const
{
total
,
rowsBefore
,
rowsAfter
}
=
await
prodmMaterialChgPage
.
switchToPageSizeTwenty
();
const
expectedRows
=
Math
.
min
(
total
,
20
);
expect
(
rowsAfter
,
'
当前页行数应与 20 条/页及总条数一致
'
).
toBe
(
expectedRows
);
if
(
total
>
20
)
{
expect
(
rowsAfter
,
'
切换后可见行应随每页条数变化
'
).
not
.
toBe
(
rowsBefore
);
}
expect
(
await
prodmMaterialChgPage
.
getTotalCount
(),
'
总条数应不变
'
).
toBe
(
total
);
});
});
test
.
describe
(
'
物料信息变更 · 打印
'
,
()
=>
{
test
(
'
PRODM-MCH-014 按当前条件打印
'
,
async
({
prodmMaterialChgPage
})
=>
{
await
prodmMaterialChgPage
.
open
();
await
prodmMaterialChgPage
.
clickPrintIfVisible
();
});
});
test
.
describe
(
'
物料信息变更 · 新增
'
,
()
=>
{
test
(
'
PRODM-MCH-015 打开「新增」对应弹窗/抽屉
'
,
async
({
prodmMaterialChgPage
})
=>
{
await
prodmMaterialChgPage
.
open
();
await
prodmMaterialChgPage
.
openToolbarOverlay
(
'
新增
'
);
await
prodmMaterialChgPage
.
closeOverlay
();
});
test
(
'
PRODM-MCH-016 「新增」取消不落库
'
,
async
({
prodmMaterialChgPage
})
=>
{
await
prodmMaterialChgPage
.
open
();
await
prodmMaterialChgPage
.
cancelToolbarWithoutCommit
(
'
新增
'
);
});
test
(
'
PRODM-MCH-017 「新增」必填为空拦截
'
,
async
({
prodmMaterialChgPage
})
=>
{
await
prodmMaterialChgPage
.
open
();
await
prodmMaterialChgPage
.
assertRequiredInterceptFor
(
'
新增
'
);
});
});
});
tests/spd/prodm-material.spec.ts
0 → 100644
View file @
b8b4c69c
import
{
expect
,
test
}
from
'
../../fixtures
'
;
/**
* 全量用例:与 testcase/基础管理-产品管理-物料信息管理-UI自动化测试用例-01.csv 严格一致
* 运行:npm run test:prodm-material:all
*/
test
.
describe
(
'
基础设置 · 产品管理
'
,
()
=>
{
test
.
describe
(
'
物料信息管理 · 左侧耗材分类树
'
,
()
=>
{
test
(
'
PRODM-MAT-001 树默认有选中或可展开节点
'
,
{
tag
:
'
@smoke
'
},
async
({
prodmMaterialPage
})
=>
{
await
prodmMaterialPage
.
open
();
await
prodmMaterialPage
.
expectTreeDefaultScope
();
});
test
(
'
PRODM-MAT-002 切换树节点刷新右侧
'
,
async
({
prodmMaterialPage
})
=>
{
await
prodmMaterialPage
.
open
();
const
switched
=
await
prodmMaterialPage
.
switchOtherTreeNode
();
expect
(
switched
,
'
应能切换树节点
'
).
toBeTruthy
();
});
});
test
.
describe
(
'
物料信息管理 · 快捷筛选查询
'
,
()
=>
{
test
(
'
PRODM-MAT-003 快捷区重置恢复默认
'
,
async
({
prodmMaterialPage
})
=>
{
await
prodmMaterialPage
.
open
();
await
prodmMaterialPage
.
clickResetQuick
();
await
prodmMaterialPage
.
expectOnPage
();
});
});
test
.
describe
(
'
物料信息管理 · 高级筛选抽屉
'
,
()
=>
{
test
(
'
PRODM-MAT-004 全量查询条件组合查询
'
,
async
({
prodmMaterialPage
})
=>
{
test
.
skip
(
true
,
'
组合查询须按页面配置 quickFields/drawerFields 实现 searchWithQuickAndDrawerCombo(对齐 center-report-sheet STAT-IOD-004),禁止临时启发式填表
'
,
);
});
test
(
'
PRODM-MAT-005 点击高级筛选打开抽屉
'
,
async
({
prodmMaterialPage
})
=>
{
await
prodmMaterialPage
.
open
();
await
prodmMaterialPage
.
openAdvancedFilterDrawer
();
});
});
test
.
describe
(
'
物料信息管理 · 列表
'
,
()
=>
{
test
(
'
PRODM-MAT-006 列表核心列完整
'
,
async
({
prodmMaterialPage
})
=>
{
await
prodmMaterialPage
.
open
();
await
prodmMaterialPage
.
assertConfiguredHeaders
();
});
test
(
'
PRODM-MAT-007 行内「详情」可达(只读冒烟)
'
,
async
({
prodmMaterialPage
})
=>
{
await
prodmMaterialPage
.
open
();
await
prodmMaterialPage
.
rowActionSmoke
(
'
详情
'
);
});
test
(
'
PRODM-MAT-008 列设置隐藏后再恢复
'
,
async
({
prodmMaterialPage
})
=>
{
await
prodmMaterialPage
.
open
();
await
prodmMaterialPage
.
clickQuery
();
await
prodmMaterialPage
.
executeColumnSettingsToggleRestoreTest
();
});
test
(
'
PRODM-MAT-009 横向滚动与列对齐
'
,
async
({
prodmMaterialPage
})
=>
{
await
prodmMaterialPage
.
open
();
await
prodmMaterialPage
.
expectHorizontalScrollAlignment
();
});
test
(
'
PRODM-MAT-010 无匹配空态(mock反例)
'
,
async
({
prodmMaterialPage
})
=>
{
await
prodmMaterialPage
.
open
();
await
prodmMaterialPage
.
searchByMockKeyword
();
const
snap
=
await
prodmMaterialPage
.
snapshotList
();
expect
(
snap
.
rows
===
0
||
snap
.
emptyVisible
,
'
无匹配应空态
'
).
toBeTruthy
();
});
});
test
.
describe
(
'
物料信息管理 · 分页
'
,
()
=>
{
test
(
'
PRODM-MAT-011 有数据时总条数
'
,
async
({
prodmMaterialPage
})
=>
{
await
prodmMaterialPage
.
open
();
await
prodmMaterialPage
.
assertTotalWhenHasData
();
});
test
(
'
PRODM-MAT-012 切换至第 2 页
'
,
async
({
prodmMaterialPage
})
=>
{
await
prodmMaterialPage
.
open
();
await
prodmMaterialPage
.
goToPage2ForProdm
();
});
test
(
'
PRODM-MAT-013 切换20条每页页面正常且列表同步
'
,
async
({
prodmMaterialPage
})
=>
{
await
prodmMaterialPage
.
open
();
const
{
total
,
rowsBefore
,
rowsAfter
}
=
await
prodmMaterialPage
.
switchToPageSizeTwenty
();
const
expectedRows
=
Math
.
min
(
total
,
20
);
expect
(
rowsAfter
,
'
当前页行数应与 20 条/页及总条数一致
'
).
toBe
(
expectedRows
);
if
(
total
>
20
)
{
expect
(
rowsAfter
,
'
切换后可见行应随每页条数变化
'
).
not
.
toBe
(
rowsBefore
);
}
expect
(
await
prodmMaterialPage
.
getTotalCount
(),
'
总条数应不变
'
).
toBe
(
total
);
});
});
test
.
describe
(
'
物料信息管理 · 导出
'
,
()
=>
{
test
(
'
PRODM-MAT-014 当前查询条件下导出
'
,
async
({
prodmMaterialPage
})
=>
{
await
prodmMaterialPage
.
open
();
await
prodmMaterialPage
.
clickExportIfVisible
();
});
});
test
.
describe
(
'
物料信息管理 · 添加
'
,
()
=>
{
test
(
'
PRODM-MAT-015 打开「添加」对应弹窗/抽屉
'
,
async
({
prodmMaterialPage
})
=>
{
await
prodmMaterialPage
.
open
();
await
prodmMaterialPage
.
openToolbarOverlay
(
'
添加
'
);
await
prodmMaterialPage
.
closeOverlay
();
});
test
(
'
PRODM-MAT-016 「添加」取消不落库
'
,
async
({
prodmMaterialPage
})
=>
{
await
prodmMaterialPage
.
open
();
await
prodmMaterialPage
.
cancelToolbarWithoutCommit
(
'
添加
'
);
});
test
(
'
PRODM-MAT-017 「添加」必填为空拦截
'
,
async
({
prodmMaterialPage
})
=>
{
await
prodmMaterialPage
.
open
();
await
prodmMaterialPage
.
assertRequiredInterceptFor
(
'
添加
'
);
});
});
});
tests/spd/prodm-peripheral-add.spec.ts
0 → 100644
View file @
b8b4c69c
import
{
expect
,
test
}
from
'
../../fixtures
'
;
/**
* 全量用例:与 testcase/基础管理-产品管理-外围系统产品新增-UI自动化测试用例-01.csv 严格一致
* 运行:npm run test:prodm-peripheral-add:all
*/
test
.
describe
(
'
基础设置 · 产品管理
'
,
()
=>
{
test
.
describe
(
'
外围系统产品新增 · 快捷筛选查询
'
,
()
=>
{
test
(
'
PRODM-PPA-001 快捷区重置恢复默认
'
,
{
tag
:
'
@smoke
'
},
async
({
prodmPeripheralAddPage
})
=>
{
await
prodmPeripheralAddPage
.
open
();
await
prodmPeripheralAddPage
.
clickResetQuick
();
await
prodmPeripheralAddPage
.
expectOnPage
();
});
test
(
'
PRODM-PPA-002 全量可见条件组合查询
'
,
async
({
prodmPeripheralAddPage
})
=>
{
test
.
skip
(
true
,
'
组合查询须按页面配置 quickFields/drawerFields 实现 searchWithQuickAndDrawerCombo(对齐 center-report-sheet STAT-IOD-004),禁止临时启发式填表
'
,
);
});
});
test
.
describe
(
'
外围系统产品新增 · 查询条件展开收起
'
,
()
=>
{
test
(
'
PRODM-PPA-003 展开后更多条件可见
'
,
async
({
prodmPeripheralAddPage
})
=>
{
await
prodmPeripheralAddPage
.
open
();
await
prodmPeripheralAddPage
.
toggleFilterExpand
();
});
});
test
.
describe
(
'
外围系统产品新增 · 列表
'
,
()
=>
{
test
(
'
PRODM-PPA-004 列表核心列完整
'
,
async
({
prodmPeripheralAddPage
})
=>
{
await
prodmPeripheralAddPage
.
open
();
await
prodmPeripheralAddPage
.
assertConfiguredHeaders
();
});
test
(
'
PRODM-PPA-005 行内「详情」可达(只读冒烟)
'
,
async
({
prodmPeripheralAddPage
})
=>
{
await
prodmPeripheralAddPage
.
open
();
await
prodmPeripheralAddPage
.
rowActionSmoke
(
'
详情
'
);
});
test
(
'
PRODM-PPA-006 无匹配空态(mock反例)
'
,
async
({
prodmPeripheralAddPage
})
=>
{
await
prodmPeripheralAddPage
.
open
();
await
prodmPeripheralAddPage
.
searchByMockKeyword
();
const
snap
=
await
prodmPeripheralAddPage
.
snapshotList
();
expect
(
snap
.
rows
===
0
||
snap
.
emptyVisible
,
'
无匹配应空态
'
).
toBeTruthy
();
});
});
test
.
describe
(
'
外围系统产品新增 · 分页
'
,
()
=>
{
test
(
'
PRODM-PPA-007 有数据时总条数
'
,
async
({
prodmPeripheralAddPage
})
=>
{
await
prodmPeripheralAddPage
.
open
();
await
prodmPeripheralAddPage
.
assertTotalWhenHasData
();
});
test
(
'
PRODM-PPA-008 切换至第 2 页
'
,
async
({
prodmPeripheralAddPage
})
=>
{
await
prodmPeripheralAddPage
.
open
();
await
prodmPeripheralAddPage
.
goToPage2ForProdm
();
});
test
(
'
PRODM-PPA-009 切换20条每页页面正常且列表同步
'
,
async
({
prodmPeripheralAddPage
})
=>
{
await
prodmPeripheralAddPage
.
open
();
const
{
total
,
rowsBefore
,
rowsAfter
}
=
await
prodmPeripheralAddPage
.
switchToPageSizeTwenty
();
const
expectedRows
=
Math
.
min
(
total
,
20
);
expect
(
rowsAfter
,
'
当前页行数应与 20 条/页及总条数一致
'
).
toBe
(
expectedRows
);
if
(
total
>
20
)
{
expect
(
rowsAfter
,
'
切换后可见行应随每页条数变化
'
).
not
.
toBe
(
rowsBefore
);
}
expect
(
await
prodmPeripheralAddPage
.
getTotalCount
(),
'
总条数应不变
'
).
toBe
(
total
);
});
});
test
.
describe
(
'
外围系统产品新增 · 导出
'
,
()
=>
{
test
(
'
PRODM-PPA-010 当前查询条件下导出
'
,
async
({
prodmPeripheralAddPage
})
=>
{
await
prodmPeripheralAddPage
.
open
();
await
prodmPeripheralAddPage
.
clickExportIfVisible
();
});
});
test
.
describe
(
'
外围系统产品新增 · 批量推送
'
,
()
=>
{
test
(
'
PRODM-PPA-011 打开「批量推送」对应弹窗/抽屉
'
,
async
({
prodmPeripheralAddPage
})
=>
{
await
prodmPeripheralAddPage
.
open
();
await
prodmPeripheralAddPage
.
openToolbarOverlay
(
'
批量推送
'
);
await
prodmPeripheralAddPage
.
closeOverlay
();
});
test
(
'
PRODM-PPA-012 「批量推送」取消不落库
'
,
async
({
prodmPeripheralAddPage
})
=>
{
await
prodmPeripheralAddPage
.
open
();
await
prodmPeripheralAddPage
.
cancelToolbarWithoutCommit
(
'
批量推送
'
);
});
test
(
'
PRODM-PPA-013 「批量推送」必填为空拦截
'
,
async
({
prodmPeripheralAddPage
})
=>
{
await
prodmPeripheralAddPage
.
open
();
await
prodmPeripheralAddPage
.
assertRequiredInterceptFor
(
'
批量推送
'
);
});
});
});
tests/spd/prodm-peripheral-chg.spec.ts
0 → 100644
View file @
b8b4c69c
import
{
expect
,
test
}
from
'
../../fixtures
'
;
/**
* 全量用例:与 testcase/基础管理-产品管理-外围系统产品变更管理-UI自动化测试用例-01.csv 严格一致
* 运行:npm run test:prodm-peripheral-chg:all
*/
test
.
describe
(
'
基础设置 · 产品管理
'
,
()
=>
{
test
.
describe
(
'
外围系统产品变更管理 · 快捷筛选查询
'
,
()
=>
{
test
(
'
PRODM-PPC-001 快捷区重置恢复默认
'
,
{
tag
:
'
@smoke
'
},
async
({
prodmPeripheralChgPage
})
=>
{
await
prodmPeripheralChgPage
.
open
();
await
prodmPeripheralChgPage
.
clickResetQuick
();
await
prodmPeripheralChgPage
.
expectOnPage
();
});
test
(
'
PRODM-PPC-002 全量可见条件组合查询
'
,
async
({
prodmPeripheralChgPage
})
=>
{
test
.
skip
(
true
,
'
组合查询须按页面配置 quickFields/drawerFields 实现 searchWithQuickAndDrawerCombo(对齐 center-report-sheet STAT-IOD-004),禁止临时启发式填表
'
,
);
});
});
test
.
describe
(
'
外围系统产品变更管理 · 查询条件展开收起
'
,
()
=>
{
test
(
'
PRODM-PPC-003 展开后更多条件可见
'
,
async
({
prodmPeripheralChgPage
})
=>
{
await
prodmPeripheralChgPage
.
open
();
await
prodmPeripheralChgPage
.
toggleFilterExpand
();
});
});
test
.
describe
(
'
外围系统产品变更管理 · 列表
'
,
()
=>
{
test
(
'
PRODM-PPC-004 列表核心列完整
'
,
async
({
prodmPeripheralChgPage
})
=>
{
await
prodmPeripheralChgPage
.
open
();
await
prodmPeripheralChgPage
.
assertConfiguredHeaders
();
});
test
(
'
PRODM-PPC-007 无匹配空态(mock反例)
'
,
async
({
prodmPeripheralChgPage
})
=>
{
await
prodmPeripheralChgPage
.
open
();
await
prodmPeripheralChgPage
.
searchByMockKeyword
();
const
snap
=
await
prodmPeripheralChgPage
.
snapshotList
();
expect
(
snap
.
rows
===
0
||
snap
.
emptyVisible
,
'
无匹配应空态
'
).
toBeTruthy
();
});
});
test
.
describe
(
'
外围系统产品变更管理 · 行内操作
'
,
()
=>
{
test
(
'
PRODM-PPC-005 行内「详情」可达(只读冒烟)
'
,
async
({
prodmPeripheralChgPage
})
=>
{
await
prodmPeripheralChgPage
.
open
();
await
prodmPeripheralChgPage
.
rowActionSmoke
(
'
详情
'
);
});
test
(
'
PRODM-PPC-006 行内「编辑」可达(只读冒烟)
'
,
async
({
prodmPeripheralChgPage
})
=>
{
await
prodmPeripheralChgPage
.
open
();
await
prodmPeripheralChgPage
.
rowActionSmoke
(
'
编辑
'
);
});
});
test
.
describe
(
'
外围系统产品变更管理 · 分页
'
,
()
=>
{
test
(
'
PRODM-PPC-008 有数据时总条数
'
,
async
({
prodmPeripheralChgPage
})
=>
{
await
prodmPeripheralChgPage
.
open
();
await
prodmPeripheralChgPage
.
assertTotalWhenHasData
();
});
test
(
'
PRODM-PPC-009 切换至第 2 页
'
,
async
({
prodmPeripheralChgPage
})
=>
{
await
prodmPeripheralChgPage
.
open
();
await
prodmPeripheralChgPage
.
goToPage2ForProdm
();
});
test
(
'
PRODM-PPC-010 切换20条每页页面正常且列表同步
'
,
async
({
prodmPeripheralChgPage
})
=>
{
await
prodmPeripheralChgPage
.
open
();
const
{
total
,
rowsBefore
,
rowsAfter
}
=
await
prodmPeripheralChgPage
.
switchToPageSizeTwenty
();
const
expectedRows
=
Math
.
min
(
total
,
20
);
expect
(
rowsAfter
,
'
当前页行数应与 20 条/页及总条数一致
'
).
toBe
(
expectedRows
);
if
(
total
>
20
)
{
expect
(
rowsAfter
,
'
切换后可见行应随每页条数变化
'
).
not
.
toBe
(
rowsBefore
);
}
expect
(
await
prodmPeripheralChgPage
.
getTotalCount
(),
'
总条数应不变
'
).
toBe
(
total
);
});
});
});
tests/spd/prodm-price-adj.spec.ts
0 → 100644
View file @
b8b4c69c
import
{
expect
,
test
}
from
'
../../fixtures
'
;
/**
* 全量用例:与 testcase/基础管理-产品管理-调价管理-UI自动化测试用例-01.csv 严格一致
* 运行:npm run test:prodm-price-adj:all
*/
test
.
describe
(
'
基础设置 · 产品管理
'
,
()
=>
{
test
.
describe
(
'
调价管理 · 快捷筛选查询
'
,
()
=>
{
test
(
'
PRODM-PAD-001 快捷区重置恢复默认
'
,
{
tag
:
'
@smoke
'
},
async
({
prodmPriceAdjPage
})
=>
{
await
prodmPriceAdjPage
.
open
();
await
prodmPriceAdjPage
.
clickResetQuick
();
await
prodmPriceAdjPage
.
expectOnPage
();
});
});
test
.
describe
(
'
调价管理 · 高级筛选抽屉
'
,
()
=>
{
test
(
'
PRODM-PAD-002 全量查询条件组合查询
'
,
async
({
prodmPriceAdjPage
})
=>
{
test
.
skip
(
true
,
'
组合查询须按页面配置 quickFields/drawerFields 实现 searchWithQuickAndDrawerCombo(对齐 center-report-sheet STAT-IOD-004),禁止临时启发式填表
'
,
);
});
test
(
'
PRODM-PAD-003 点击高级筛选打开抽屉
'
,
async
({
prodmPriceAdjPage
})
=>
{
await
prodmPriceAdjPage
.
open
();
await
prodmPriceAdjPage
.
openAdvancedFilterDrawer
();
});
});
test
.
describe
(
'
调价管理 · 列表
'
,
()
=>
{
test
(
'
PRODM-PAD-004 列表核心列完整
'
,
async
({
prodmPriceAdjPage
})
=>
{
await
prodmPriceAdjPage
.
open
();
await
prodmPriceAdjPage
.
assertConfiguredHeaders
();
});
test
(
'
PRODM-PAD-008 列设置隐藏后再恢复
'
,
async
({
prodmPriceAdjPage
})
=>
{
await
prodmPriceAdjPage
.
open
();
await
prodmPriceAdjPage
.
clickQuery
();
await
prodmPriceAdjPage
.
executeColumnSettingsToggleRestoreTest
();
});
test
(
'
PRODM-PAD-009 横向滚动与列对齐
'
,
async
({
prodmPriceAdjPage
})
=>
{
await
prodmPriceAdjPage
.
open
();
await
prodmPriceAdjPage
.
expectHorizontalScrollAlignment
();
});
test
(
'
PRODM-PAD-010 无匹配空态(mock反例)
'
,
async
({
prodmPriceAdjPage
})
=>
{
await
prodmPriceAdjPage
.
open
();
await
prodmPriceAdjPage
.
searchByMockKeyword
();
const
snap
=
await
prodmPriceAdjPage
.
snapshotList
();
expect
(
snap
.
rows
===
0
||
snap
.
emptyVisible
,
'
无匹配应空态
'
).
toBeTruthy
();
});
});
test
.
describe
(
'
调价管理 · 行内操作
'
,
()
=>
{
test
(
'
PRODM-PAD-005 行内「再次调价」可达(只读冒烟)
'
,
async
({
prodmPriceAdjPage
})
=>
{
await
prodmPriceAdjPage
.
open
();
await
prodmPriceAdjPage
.
rowActionSmoke
(
'
再次调价
'
);
});
test
(
'
PRODM-PAD-006 行内「详情」可达(只读冒烟)
'
,
async
({
prodmPriceAdjPage
})
=>
{
await
prodmPriceAdjPage
.
open
();
await
prodmPriceAdjPage
.
rowActionSmoke
(
'
详情
'
);
});
test
(
'
PRODM-PAD-007 行内「打印」可达(只读冒烟)
'
,
async
({
prodmPriceAdjPage
})
=>
{
await
prodmPriceAdjPage
.
open
();
await
prodmPriceAdjPage
.
rowActionSmoke
(
'
打印
'
);
});
});
test
.
describe
(
'
调价管理 · 分页
'
,
()
=>
{
test
(
'
PRODM-PAD-011 有数据时总条数
'
,
async
({
prodmPriceAdjPage
})
=>
{
await
prodmPriceAdjPage
.
open
();
await
prodmPriceAdjPage
.
assertTotalWhenHasData
();
});
test
(
'
PRODM-PAD-012 切换至第 2 页
'
,
async
({
prodmPriceAdjPage
})
=>
{
await
prodmPriceAdjPage
.
open
();
await
prodmPriceAdjPage
.
goToPage2ForProdm
();
});
test
(
'
PRODM-PAD-013 切换20条每页页面正常且列表同步
'
,
async
({
prodmPriceAdjPage
})
=>
{
await
prodmPriceAdjPage
.
open
();
const
{
total
,
rowsBefore
,
rowsAfter
}
=
await
prodmPriceAdjPage
.
switchToPageSizeTwenty
();
const
expectedRows
=
Math
.
min
(
total
,
20
);
expect
(
rowsAfter
,
'
当前页行数应与 20 条/页及总条数一致
'
).
toBe
(
expectedRows
);
if
(
total
>
20
)
{
expect
(
rowsAfter
,
'
切换后可见行应随每页条数变化
'
).
not
.
toBe
(
rowsBefore
);
}
expect
(
await
prodmPriceAdjPage
.
getTotalCount
(),
'
总条数应不变
'
).
toBe
(
total
);
});
});
test
.
describe
(
'
调价管理 · 打印
'
,
()
=>
{
test
(
'
PRODM-PAD-014 按当前条件打印
'
,
async
({
prodmPriceAdjPage
})
=>
{
await
prodmPriceAdjPage
.
open
();
await
prodmPriceAdjPage
.
clickPrintIfVisible
();
});
});
test
.
describe
(
'
调价管理 · 新增
'
,
()
=>
{
test
(
'
PRODM-PAD-015 打开「新增」对应弹窗/抽屉
'
,
async
({
prodmPriceAdjPage
})
=>
{
await
prodmPriceAdjPage
.
open
();
await
prodmPriceAdjPage
.
openToolbarOverlay
(
'
新增
'
);
await
prodmPriceAdjPage
.
closeOverlay
();
});
test
(
'
PRODM-PAD-016 「新增」取消不落库
'
,
async
({
prodmPriceAdjPage
})
=>
{
await
prodmPriceAdjPage
.
open
();
await
prodmPriceAdjPage
.
cancelToolbarWithoutCommit
(
'
新增
'
);
});
test
(
'
PRODM-PAD-017 「新增」必填为空拦截
'
,
async
({
prodmPriceAdjPage
})
=>
{
await
prodmPriceAdjPage
.
open
();
await
prodmPriceAdjPage
.
assertRequiredInterceptFor
(
'
新增
'
);
});
});
});
tests/spd/prodm-price-check.spec.ts
0 → 100644
View file @
b8b4c69c
import
{
expect
,
test
}
from
'
../../fixtures
'
;
/**
* 全量用例:与 testcase/基础管理-产品管理-产品物价核对-UI自动化测试用例-01.csv 严格一致
* 运行:npm run test:prodm-price-check:all
*/
test
.
describe
(
'
基础设置 · 产品管理
'
,
()
=>
{
test
.
describe
(
'
产品物价核对 · 快捷筛选查询
'
,
()
=>
{
test
(
'
PRODM-PRC-001 快捷区重置恢复默认
'
,
{
tag
:
'
@smoke
'
},
async
({
prodmPriceCheckPage
})
=>
{
await
prodmPriceCheckPage
.
open
();
await
prodmPriceCheckPage
.
clickResetQuick
();
await
prodmPriceCheckPage
.
expectOnPage
();
});
test
(
'
PRODM-PRC-002 全量可见条件组合查询
'
,
async
({
prodmPriceCheckPage
})
=>
{
test
.
skip
(
true
,
'
组合查询须按页面配置 quickFields/drawerFields 实现 searchWithQuickAndDrawerCombo(对齐 center-report-sheet STAT-IOD-004),禁止临时启发式填表
'
,
);
});
});
test
.
describe
(
'
产品物价核对 · 查询条件展开收起
'
,
()
=>
{
test
(
'
PRODM-PRC-003 展开后更多条件可见
'
,
async
({
prodmPriceCheckPage
})
=>
{
await
prodmPriceCheckPage
.
open
();
await
prodmPriceCheckPage
.
toggleFilterExpand
();
});
});
test
.
describe
(
'
产品物价核对 · 列表
'
,
()
=>
{
test
(
'
PRODM-PRC-004 列表核心列完整
'
,
async
({
prodmPriceCheckPage
})
=>
{
await
prodmPriceCheckPage
.
open
();
await
prodmPriceCheckPage
.
assertConfiguredHeaders
();
});
test
(
'
PRODM-PRC-008 无匹配空态(mock反例)
'
,
async
({
prodmPriceCheckPage
})
=>
{
await
prodmPriceCheckPage
.
open
();
await
prodmPriceCheckPage
.
searchByMockKeyword
();
const
snap
=
await
prodmPriceCheckPage
.
snapshotList
();
expect
(
snap
.
rows
===
0
||
snap
.
emptyVisible
,
'
无匹配应空态
'
).
toBeTruthy
();
});
});
test
.
describe
(
'
产品物价核对 · 行内操作
'
,
()
=>
{
test
(
'
PRODM-PRC-005 行内「详情」可达(只读冒烟)
'
,
async
({
prodmPriceCheckPage
})
=>
{
await
prodmPriceCheckPage
.
open
();
await
prodmPriceCheckPage
.
rowActionSmoke
(
'
详情
'
);
});
test
(
'
PRODM-PRC-006 行内「审核」可达(只读冒烟)
'
,
async
({
prodmPriceCheckPage
})
=>
{
await
prodmPriceCheckPage
.
open
();
await
prodmPriceCheckPage
.
rowActionSmoke
(
'
审核
'
);
});
test
(
'
PRODM-PRC-007 行内「编辑」可达(只读冒烟)
'
,
async
({
prodmPriceCheckPage
})
=>
{
await
prodmPriceCheckPage
.
open
();
await
prodmPriceCheckPage
.
rowActionSmoke
(
'
编辑
'
);
});
});
test
.
describe
(
'
产品物价核对 · 分页
'
,
()
=>
{
test
(
'
PRODM-PRC-009 有数据时总条数
'
,
async
({
prodmPriceCheckPage
})
=>
{
await
prodmPriceCheckPage
.
open
();
await
prodmPriceCheckPage
.
assertTotalWhenHasData
();
});
test
(
'
PRODM-PRC-010 切换至第 2 页
'
,
async
({
prodmPriceCheckPage
})
=>
{
await
prodmPriceCheckPage
.
open
();
await
prodmPriceCheckPage
.
goToPage2ForProdm
();
});
});
test
.
describe
(
'
产品物价核对 · 导出
'
,
()
=>
{
test
(
'
PRODM-PRC-011 当前查询条件下导出
'
,
async
({
prodmPriceCheckPage
})
=>
{
await
prodmPriceCheckPage
.
open
();
await
prodmPriceCheckPage
.
clickExportIfVisible
();
});
});
test
.
describe
(
'
产品物价核对 · 批量审核
'
,
()
=>
{
test
(
'
PRODM-PRC-012 打开「批量审核」对应弹窗/抽屉
'
,
async
({
prodmPriceCheckPage
})
=>
{
await
prodmPriceCheckPage
.
open
();
await
prodmPriceCheckPage
.
openToolbarOverlay
(
'
批量审核
'
);
await
prodmPriceCheckPage
.
closeOverlay
();
});
test
(
'
PRODM-PRC-013 「批量审核」取消不落库
'
,
async
({
prodmPriceCheckPage
})
=>
{
await
prodmPriceCheckPage
.
open
();
await
prodmPriceCheckPage
.
cancelToolbarWithoutCommit
(
'
批量审核
'
);
});
test
(
'
PRODM-PRC-014 「批量审核」必填为空拦截
'
,
async
({
prodmPriceCheckPage
})
=>
{
await
prodmPriceCheckPage
.
open
();
await
prodmPriceCheckPage
.
assertRequiredInterceptFor
(
'
批量审核
'
);
});
});
test
.
describe
(
'
产品物价核对 · 批量是否收费
'
,
()
=>
{
test
(
'
PRODM-PRC-015 打开「批量是否收费」对应弹窗/抽屉
'
,
async
({
prodmPriceCheckPage
})
=>
{
await
prodmPriceCheckPage
.
open
();
await
prodmPriceCheckPage
.
openToolbarOverlay
(
'
批量是否收费
'
);
await
prodmPriceCheckPage
.
closeOverlay
();
});
test
(
'
PRODM-PRC-016 「批量是否收费」取消不落库
'
,
async
({
prodmPriceCheckPage
})
=>
{
await
prodmPriceCheckPage
.
open
();
await
prodmPriceCheckPage
.
cancelToolbarWithoutCommit
(
'
批量是否收费
'
);
});
test
(
'
PRODM-PRC-017 「批量是否收费」必填为空拦截
'
,
async
({
prodmPriceCheckPage
})
=>
{
await
prodmPriceCheckPage
.
open
();
await
prodmPriceCheckPage
.
assertRequiredInterceptFor
(
'
批量是否收费
'
);
});
});
});
tests/spd/prodm-qual-overview.spec.ts
0 → 100644
View file @
b8b4c69c
import
{
expect
,
test
}
from
'
../../fixtures
'
;
/**
* 全量用例:与 testcase/基础管理-产品管理-产品资质一览-UI自动化测试用例-01.csv 严格一致
* 运行:npm run test:prodm-qual-overview:all
*/
test
.
describe
(
'
基础设置 · 产品管理
'
,
()
=>
{
test
.
describe
(
'
产品资质一览 · 快捷筛选查询
'
,
()
=>
{
test
(
'
PRODM-QOV-001 快捷区重置恢复默认
'
,
{
tag
:
'
@smoke
'
},
async
({
prodmQualOverviewPage
})
=>
{
await
prodmQualOverviewPage
.
open
();
await
prodmQualOverviewPage
.
clickResetQuick
();
await
prodmQualOverviewPage
.
expectOnPage
();
});
test
(
'
PRODM-QOV-002 全量可见条件组合查询
'
,
async
({
prodmQualOverviewPage
})
=>
{
test
.
skip
(
true
,
'
组合查询须按页面配置 quickFields/drawerFields 实现 searchWithQuickAndDrawerCombo(对齐 center-report-sheet STAT-IOD-004),禁止临时启发式填表
'
,
);
});
});
test
.
describe
(
'
产品资质一览 · 列表
'
,
()
=>
{
test
(
'
PRODM-QOV-003 列表核心列完整
'
,
async
({
prodmQualOverviewPage
})
=>
{
await
prodmQualOverviewPage
.
open
();
await
prodmQualOverviewPage
.
assertConfiguredHeaders
();
});
test
(
'
PRODM-QOV-006 无匹配空态(mock反例)
'
,
async
({
prodmQualOverviewPage
})
=>
{
await
prodmQualOverviewPage
.
open
();
await
prodmQualOverviewPage
.
searchByMockKeyword
();
const
snap
=
await
prodmQualOverviewPage
.
snapshotList
();
expect
(
snap
.
rows
===
0
||
snap
.
emptyVisible
,
'
无匹配应空态
'
).
toBeTruthy
();
});
});
test
.
describe
(
'
产品资质一览 · 行内操作
'
,
()
=>
{
test
(
'
PRODM-QOV-004 行内「详情」可达(只读冒烟)
'
,
async
({
prodmQualOverviewPage
})
=>
{
await
prodmQualOverviewPage
.
open
();
await
prodmQualOverviewPage
.
rowActionSmoke
(
'
详情
'
);
});
test
(
'
PRODM-QOV-005 行内「查看」可达(只读冒烟)
'
,
async
({
prodmQualOverviewPage
})
=>
{
await
prodmQualOverviewPage
.
open
();
await
prodmQualOverviewPage
.
rowActionSmoke
(
'
查看
'
);
});
});
test
.
describe
(
'
产品资质一览 · 分页
'
,
()
=>
{
test
(
'
PRODM-QOV-007 有数据时总条数
'
,
async
({
prodmQualOverviewPage
})
=>
{
await
prodmQualOverviewPage
.
open
();
await
prodmQualOverviewPage
.
assertTotalWhenHasData
();
});
test
(
'
PRODM-QOV-008 切换至第 2 页
'
,
async
({
prodmQualOverviewPage
})
=>
{
await
prodmQualOverviewPage
.
open
();
await
prodmQualOverviewPage
.
goToPage2ForProdm
();
});
test
(
'
PRODM-QOV-009 切换20条每页页面正常且列表同步
'
,
async
({
prodmQualOverviewPage
})
=>
{
await
prodmQualOverviewPage
.
open
();
const
{
total
,
rowsBefore
,
rowsAfter
}
=
await
prodmQualOverviewPage
.
switchToPageSizeTwenty
();
const
expectedRows
=
Math
.
min
(
total
,
20
);
expect
(
rowsAfter
,
'
当前页行数应与 20 条/页及总条数一致
'
).
toBe
(
expectedRows
);
if
(
total
>
20
)
{
expect
(
rowsAfter
,
'
切换后可见行应随每页条数变化
'
).
not
.
toBe
(
rowsBefore
);
}
expect
(
await
prodmQualOverviewPage
.
getTotalCount
(),
'
总条数应不变
'
).
toBe
(
total
);
});
});
test
.
describe
(
'
产品资质一览 · 导出
'
,
()
=>
{
test
(
'
PRODM-QOV-010 当前查询条件下导出
'
,
async
({
prodmQualOverviewPage
})
=>
{
await
prodmQualOverviewPage
.
open
();
await
prodmQualOverviewPage
.
clickExportIfVisible
();
});
});
test
.
describe
(
'
产品资质一览 · 资质判断结果
'
,
()
=>
{
test
(
'
PRODM-QOV-011 打开「资质判断结果」对应弹窗/抽屉
'
,
async
({
prodmQualOverviewPage
})
=>
{
await
prodmQualOverviewPage
.
open
();
await
prodmQualOverviewPage
.
openToolbarOverlay
(
'
资质判断结果
'
);
await
prodmQualOverviewPage
.
closeOverlay
();
});
test
(
'
PRODM-QOV-012 「资质判断结果」取消不落库
'
,
async
({
prodmQualOverviewPage
})
=>
{
await
prodmQualOverviewPage
.
open
();
await
prodmQualOverviewPage
.
cancelToolbarWithoutCommit
(
'
资质判断结果
'
);
});
test
(
'
PRODM-QOV-013 「资质判断结果」必填为空拦截
'
,
async
({
prodmQualOverviewPage
})
=>
{
await
prodmQualOverviewPage
.
open
();
await
prodmQualOverviewPage
.
assertRequiredInterceptFor
(
'
资质判断结果
'
);
});
});
});
tests/spd/prodm-qual-rule.spec.ts
0 → 100644
View file @
b8b4c69c
import
{
expect
,
test
}
from
'
../../fixtures
'
;
/**
* 全量用例:与 testcase/基础管理-产品管理-产品资质齐全规则-UI自动化测试用例-01.csv 严格一致
* 运行:npm run test:prodm-qual-rule:all
*/
test
.
describe
(
'
基础设置 · 产品管理
'
,
()
=>
{
test
.
describe
(
'
产品资质齐全规则 · 快捷筛选查询
'
,
()
=>
{
test
(
'
PRODM-QRL-001 快捷区重置恢复默认
'
,
{
tag
:
'
@smoke
'
},
async
({
prodmQualRulePage
})
=>
{
await
prodmQualRulePage
.
open
();
await
prodmQualRulePage
.
clickResetQuick
();
await
prodmQualRulePage
.
expectOnPage
();
});
test
(
'
PRODM-QRL-002 全量可见条件组合查询
'
,
async
({
prodmQualRulePage
})
=>
{
test
.
skip
(
true
,
'
组合查询须按页面配置 quickFields/drawerFields 实现 searchWithQuickAndDrawerCombo(对齐 center-report-sheet STAT-IOD-004),禁止临时启发式填表
'
,
);
});
});
test
.
describe
(
'
产品资质齐全规则 · 列表
'
,
()
=>
{
test
(
'
PRODM-QRL-003 列表核心列完整
'
,
async
({
prodmQualRulePage
})
=>
{
await
prodmQualRulePage
.
open
();
await
prodmQualRulePage
.
assertConfiguredHeaders
();
});
test
(
'
PRODM-QRL-007 无匹配空态(mock反例)
'
,
async
({
prodmQualRulePage
})
=>
{
await
prodmQualRulePage
.
open
();
await
prodmQualRulePage
.
searchByMockKeyword
();
const
snap
=
await
prodmQualRulePage
.
snapshotList
();
expect
(
snap
.
rows
===
0
||
snap
.
emptyVisible
,
'
无匹配应空态
'
).
toBeTruthy
();
});
});
test
.
describe
(
'
产品资质齐全规则 · 行内操作
'
,
()
=>
{
test
(
'
PRODM-QRL-004 行内「详情」可达(只读冒烟)
'
,
async
({
prodmQualRulePage
})
=>
{
await
prodmQualRulePage
.
open
();
await
prodmQualRulePage
.
rowActionSmoke
(
'
详情
'
);
});
test
(
'
PRODM-QRL-005 行内「编辑」可达(只读冒烟)
'
,
async
({
prodmQualRulePage
})
=>
{
await
prodmQualRulePage
.
open
();
await
prodmQualRulePage
.
rowActionSmoke
(
'
编辑
'
);
});
test
(
'
PRODM-QRL-006 行内「日志」可达(只读冒烟)
'
,
async
({
prodmQualRulePage
})
=>
{
await
prodmQualRulePage
.
open
();
await
prodmQualRulePage
.
rowActionSmoke
(
'
日志
'
);
});
});
test
.
describe
(
'
产品资质齐全规则 · 分页
'
,
()
=>
{
test
(
'
PRODM-QRL-008 有数据时总条数
'
,
async
({
prodmQualRulePage
})
=>
{
await
prodmQualRulePage
.
open
();
await
prodmQualRulePage
.
assertTotalWhenHasData
();
});
test
(
'
PRODM-QRL-009 切换至第 2 页
'
,
async
({
prodmQualRulePage
})
=>
{
await
prodmQualRulePage
.
open
();
await
prodmQualRulePage
.
goToPage2ForProdm
();
});
test
(
'
PRODM-QRL-010 切换20条每页页面正常且列表同步
'
,
async
({
prodmQualRulePage
})
=>
{
await
prodmQualRulePage
.
open
();
const
{
total
,
rowsBefore
,
rowsAfter
}
=
await
prodmQualRulePage
.
switchToPageSizeTwenty
();
const
expectedRows
=
Math
.
min
(
total
,
20
);
expect
(
rowsAfter
,
'
当前页行数应与 20 条/页及总条数一致
'
).
toBe
(
expectedRows
);
if
(
total
>
20
)
{
expect
(
rowsAfter
,
'
切换后可见行应随每页条数变化
'
).
not
.
toBe
(
rowsBefore
);
}
expect
(
await
prodmQualRulePage
.
getTotalCount
(),
'
总条数应不变
'
).
toBe
(
total
);
});
});
test
.
describe
(
'
产品资质齐全规则 · 新增
'
,
()
=>
{
test
(
'
PRODM-QRL-011 打开「新增」对应弹窗/抽屉
'
,
async
({
prodmQualRulePage
})
=>
{
await
prodmQualRulePage
.
open
();
await
prodmQualRulePage
.
openToolbarOverlay
(
'
新增
'
);
await
prodmQualRulePage
.
closeOverlay
();
});
test
(
'
PRODM-QRL-012 「新增」取消不落库
'
,
async
({
prodmQualRulePage
})
=>
{
await
prodmQualRulePage
.
open
();
await
prodmQualRulePage
.
cancelToolbarWithoutCommit
(
'
新增
'
);
});
test
(
'
PRODM-QRL-013 「新增」必填为空拦截
'
,
async
({
prodmQualRulePage
})
=>
{
await
prodmQualRulePage
.
open
();
await
prodmQualRulePage
.
assertRequiredInterceptFor
(
'
新增
'
);
});
});
});
tests/spd/prodm-req-channel.spec.ts
0 → 100644
View file @
b8b4c69c
import
{
expect
,
test
}
from
'
../../fixtures
'
;
/**
* 全量用例:与 testcase/基础管理-产品管理-请领出库渠道设置-UI自动化测试用例-01.csv 严格一致
* 运行:npm run test:prodm-req-channel:all
*/
test
.
describe
(
'
基础设置 · 产品管理
'
,
()
=>
{
test
.
describe
(
'
请领出库渠道设置 · 左侧规则目录树
'
,
()
=>
{
test
(
'
PRODM-RCH-001 树默认有选中或可展开节点
'
,
{
tag
:
'
@smoke
'
},
async
({
prodmReqChannelPage
})
=>
{
await
prodmReqChannelPage
.
open
();
await
prodmReqChannelPage
.
expectTreeDefaultScope
();
});
test
(
'
PRODM-RCH-002 切换树节点刷新右侧
'
,
async
({
prodmReqChannelPage
})
=>
{
await
prodmReqChannelPage
.
open
();
const
switched
=
await
prodmReqChannelPage
.
switchOtherTreeNode
();
expect
(
switched
,
'
应能切换树节点
'
).
toBeTruthy
();
});
});
test
.
describe
(
'
请领出库渠道设置 · 快捷筛选查询
'
,
()
=>
{
test
(
'
PRODM-RCH-003 快捷区重置恢复默认
'
,
async
({
prodmReqChannelPage
})
=>
{
await
prodmReqChannelPage
.
open
();
await
prodmReqChannelPage
.
clickResetQuick
();
await
prodmReqChannelPage
.
expectOnPage
();
});
test
(
'
PRODM-RCH-004 全量可见条件组合查询
'
,
async
({
prodmReqChannelPage
})
=>
{
test
.
skip
(
true
,
'
组合查询须按页面配置 quickFields/drawerFields 实现 searchWithQuickAndDrawerCombo(对齐 center-report-sheet STAT-IOD-004),禁止临时启发式填表
'
,
);
});
});
test
.
describe
(
'
请领出库渠道设置 · 列表
'
,
()
=>
{
test
(
'
PRODM-RCH-005 列表核心列完整
'
,
async
({
prodmReqChannelPage
})
=>
{
await
prodmReqChannelPage
.
open
();
await
prodmReqChannelPage
.
assertConfiguredHeaders
();
});
test
(
'
PRODM-RCH-009 列设置隐藏后再恢复
'
,
async
({
prodmReqChannelPage
})
=>
{
await
prodmReqChannelPage
.
open
();
await
prodmReqChannelPage
.
clickQuery
();
await
prodmReqChannelPage
.
executeColumnSettingsToggleRestoreTest
();
});
test
(
'
PRODM-RCH-010 横向滚动与列对齐
'
,
async
({
prodmReqChannelPage
})
=>
{
await
prodmReqChannelPage
.
open
();
await
prodmReqChannelPage
.
expectHorizontalScrollAlignment
();
});
test
(
'
PRODM-RCH-011 无匹配空态(mock反例)
'
,
async
({
prodmReqChannelPage
})
=>
{
await
prodmReqChannelPage
.
open
();
await
prodmReqChannelPage
.
searchByMockKeyword
();
const
snap
=
await
prodmReqChannelPage
.
snapshotList
();
expect
(
snap
.
rows
===
0
||
snap
.
emptyVisible
,
'
无匹配应空态
'
).
toBeTruthy
();
});
});
test
.
describe
(
'
请领出库渠道设置 · 行内操作
'
,
()
=>
{
test
(
'
PRODM-RCH-006 行内「详情」可达(只读冒烟)
'
,
async
({
prodmReqChannelPage
})
=>
{
await
prodmReqChannelPage
.
open
();
await
prodmReqChannelPage
.
rowActionSmoke
(
'
详情
'
);
});
test
(
'
PRODM-RCH-007 行内「编辑」可达(只读冒烟)
'
,
async
({
prodmReqChannelPage
})
=>
{
await
prodmReqChannelPage
.
open
();
await
prodmReqChannelPage
.
rowActionSmoke
(
'
编辑
'
);
});
test
(
'
PRODM-RCH-008 行内「日志」可达(只读冒烟)
'
,
async
({
prodmReqChannelPage
})
=>
{
await
prodmReqChannelPage
.
open
();
await
prodmReqChannelPage
.
rowActionSmoke
(
'
日志
'
);
});
});
test
.
describe
(
'
请领出库渠道设置 · 分页
'
,
()
=>
{
test
(
'
PRODM-RCH-012 有数据时总条数
'
,
async
({
prodmReqChannelPage
})
=>
{
await
prodmReqChannelPage
.
open
();
await
prodmReqChannelPage
.
assertTotalWhenHasData
();
});
test
(
'
PRODM-RCH-013 切换至第 2 页
'
,
async
({
prodmReqChannelPage
})
=>
{
await
prodmReqChannelPage
.
open
();
await
prodmReqChannelPage
.
goToPage2ForProdm
();
});
test
(
'
PRODM-RCH-014 切换20条每页页面正常且列表同步
'
,
async
({
prodmReqChannelPage
})
=>
{
await
prodmReqChannelPage
.
open
();
const
{
total
,
rowsBefore
,
rowsAfter
}
=
await
prodmReqChannelPage
.
switchToPageSizeTwenty
();
const
expectedRows
=
Math
.
min
(
total
,
20
);
expect
(
rowsAfter
,
'
当前页行数应与 20 条/页及总条数一致
'
).
toBe
(
expectedRows
);
if
(
total
>
20
)
{
expect
(
rowsAfter
,
'
切换后可见行应随每页条数变化
'
).
not
.
toBe
(
rowsBefore
);
}
expect
(
await
prodmReqChannelPage
.
getTotalCount
(),
'
总条数应不变
'
).
toBe
(
total
);
});
});
test
.
describe
(
'
请领出库渠道设置 · 导出
'
,
()
=>
{
test
(
'
PRODM-RCH-015 当前查询条件下导出
'
,
async
({
prodmReqChannelPage
})
=>
{
await
prodmReqChannelPage
.
open
();
await
prodmReqChannelPage
.
clickExportIfVisible
();
});
});
});
tests/spd/prodm-settle.spec.ts
0 → 100644
View file @
b8b4c69c
import
{
expect
,
test
}
from
'
../../fixtures
'
;
/**
* 全量用例:与 testcase/基础管理-产品管理-结算点设置-UI自动化测试用例-01.csv 严格一致
* 运行:npm run test:prodm-settle:all
*/
test
.
describe
(
'
基础设置 · 产品管理
'
,
()
=>
{
test
.
describe
(
'
结算点设置 · 左侧规则目录树
'
,
()
=>
{
test
(
'
PRODM-STL-001 树默认有选中或可展开节点
'
,
{
tag
:
'
@smoke
'
},
async
({
prodmSettlePage
})
=>
{
await
prodmSettlePage
.
open
();
await
prodmSettlePage
.
expectTreeDefaultScope
();
});
test
(
'
PRODM-STL-002 切换树节点刷新右侧
'
,
async
({
prodmSettlePage
})
=>
{
await
prodmSettlePage
.
open
();
const
switched
=
await
prodmSettlePage
.
switchOtherTreeNode
();
expect
(
switched
,
'
应能切换树节点
'
).
toBeTruthy
();
});
});
test
.
describe
(
'
结算点设置 · 快捷筛选查询
'
,
()
=>
{
test
(
'
PRODM-STL-003 快捷区重置恢复默认
'
,
async
({
prodmSettlePage
})
=>
{
await
prodmSettlePage
.
open
();
await
prodmSettlePage
.
clickResetQuick
();
await
prodmSettlePage
.
expectOnPage
();
});
});
test
.
describe
(
'
结算点设置 · 高级筛选抽屉
'
,
()
=>
{
test
(
'
PRODM-STL-004 全量查询条件组合查询
'
,
async
({
prodmSettlePage
})
=>
{
test
.
skip
(
true
,
'
组合查询须按页面配置 quickFields/drawerFields 实现 searchWithQuickAndDrawerCombo(对齐 center-report-sheet STAT-IOD-004),禁止临时启发式填表
'
,
);
});
test
(
'
PRODM-STL-005 点击高级筛选打开抽屉
'
,
async
({
prodmSettlePage
})
=>
{
await
prodmSettlePage
.
open
();
await
prodmSettlePage
.
openAdvancedFilterDrawer
();
});
});
test
.
describe
(
'
结算点设置 · 列表
'
,
()
=>
{
test
(
'
PRODM-STL-006 列表核心列完整
'
,
async
({
prodmSettlePage
})
=>
{
await
prodmSettlePage
.
open
();
await
prodmSettlePage
.
assertConfiguredHeaders
();
});
test
(
'
PRODM-STL-010 列设置隐藏后再恢复
'
,
async
({
prodmSettlePage
})
=>
{
await
prodmSettlePage
.
open
();
await
prodmSettlePage
.
clickQuery
();
await
prodmSettlePage
.
executeColumnSettingsToggleRestoreTest
();
});
test
(
'
PRODM-STL-011 结算规则列升序降序切换
'
,
async
({
prodmSettlePage
})
=>
{
await
prodmSettlePage
.
open
();
await
prodmSettlePage
.
expectColumnSortAscDesc
(
'
结算规则
'
);
});
test
(
'
PRODM-STL-012 横向滚动与列对齐
'
,
async
({
prodmSettlePage
})
=>
{
await
prodmSettlePage
.
open
();
await
prodmSettlePage
.
expectHorizontalScrollAlignment
();
});
test
(
'
PRODM-STL-013 无匹配空态(mock反例)
'
,
async
({
prodmSettlePage
})
=>
{
await
prodmSettlePage
.
open
();
await
prodmSettlePage
.
searchByMockKeyword
();
const
snap
=
await
prodmSettlePage
.
snapshotList
();
expect
(
snap
.
rows
===
0
||
snap
.
emptyVisible
,
'
无匹配应空态
'
).
toBeTruthy
();
});
});
test
.
describe
(
'
结算点设置 · 行内操作
'
,
()
=>
{
test
(
'
PRODM-STL-007 行内「详情」可达(只读冒烟)
'
,
async
({
prodmSettlePage
})
=>
{
await
prodmSettlePage
.
open
();
await
prodmSettlePage
.
rowActionSmoke
(
'
详情
'
);
});
test
(
'
PRODM-STL-008 行内「编辑」可达(只读冒烟)
'
,
async
({
prodmSettlePage
})
=>
{
await
prodmSettlePage
.
open
();
await
prodmSettlePage
.
rowActionSmoke
(
'
编辑
'
);
});
test
(
'
PRODM-STL-009 行内「日志」可达(只读冒烟)
'
,
async
({
prodmSettlePage
})
=>
{
await
prodmSettlePage
.
open
();
await
prodmSettlePage
.
rowActionSmoke
(
'
日志
'
);
});
});
test
.
describe
(
'
结算点设置 · 分页
'
,
()
=>
{
test
(
'
PRODM-STL-014 有数据时总条数
'
,
async
({
prodmSettlePage
})
=>
{
await
prodmSettlePage
.
open
();
await
prodmSettlePage
.
assertTotalWhenHasData
();
});
test
(
'
PRODM-STL-015 切换至第 2 页
'
,
async
({
prodmSettlePage
})
=>
{
await
prodmSettlePage
.
open
();
await
prodmSettlePage
.
goToPage2ForProdm
();
});
test
(
'
PRODM-STL-016 切换20条每页页面正常且列表同步
'
,
async
({
prodmSettlePage
})
=>
{
await
prodmSettlePage
.
open
();
const
{
total
,
rowsBefore
,
rowsAfter
}
=
await
prodmSettlePage
.
switchToPageSizeTwenty
();
const
expectedRows
=
Math
.
min
(
total
,
20
);
expect
(
rowsAfter
,
'
当前页行数应与 20 条/页及总条数一致
'
).
toBe
(
expectedRows
);
if
(
total
>
20
)
{
expect
(
rowsAfter
,
'
切换后可见行应随每页条数变化
'
).
not
.
toBe
(
rowsBefore
);
}
expect
(
await
prodmSettlePage
.
getTotalCount
(),
'
总条数应不变
'
).
toBe
(
total
);
});
});
});
tests/spd/prodm-stockout-detail.spec.ts
0 → 100644
View file @
b8b4c69c
import
{
expect
,
test
}
from
'
../../fixtures
'
;
/**
* 全量用例:与 testcase/基础管理-产品管理-缺货目录明细-UI自动化测试用例-01.csv 严格一致
* 运行:npm run test:prodm-stockout-detail:all
*/
test
.
describe
(
'
基础设置 · 产品管理
'
,
()
=>
{
test
.
describe
(
'
缺货目录明细 · 快捷筛选查询
'
,
()
=>
{
test
(
'
PRODM-STD-001 快捷区重置恢复默认
'
,
{
tag
:
'
@smoke
'
},
async
({
prodmStockoutDetailPage
})
=>
{
await
prodmStockoutDetailPage
.
open
();
await
prodmStockoutDetailPage
.
clickResetQuick
();
await
prodmStockoutDetailPage
.
expectOnPage
();
});
test
(
'
PRODM-STD-002 全量可见条件组合查询
'
,
async
({
prodmStockoutDetailPage
})
=>
{
test
.
skip
(
true
,
'
组合查询须按页面配置 quickFields/drawerFields 实现 searchWithQuickAndDrawerCombo(对齐 center-report-sheet STAT-IOD-004),禁止临时启发式填表
'
,
);
});
});
test
.
describe
(
'
缺货目录明细 · 查询条件展开收起
'
,
()
=>
{
test
(
'
PRODM-STD-003 展开后更多条件可见
'
,
async
({
prodmStockoutDetailPage
})
=>
{
await
prodmStockoutDetailPage
.
open
();
await
prodmStockoutDetailPage
.
toggleFilterExpand
();
});
});
test
.
describe
(
'
缺货目录明细 · 列表
'
,
()
=>
{
test
(
'
PRODM-STD-004 列表核心列完整
'
,
async
({
prodmStockoutDetailPage
})
=>
{
await
prodmStockoutDetailPage
.
open
();
await
prodmStockoutDetailPage
.
assertConfiguredHeaders
();
});
test
(
'
PRODM-STD-007 无匹配空态(mock反例)
'
,
async
({
prodmStockoutDetailPage
})
=>
{
await
prodmStockoutDetailPage
.
open
();
await
prodmStockoutDetailPage
.
searchByMockKeyword
();
const
snap
=
await
prodmStockoutDetailPage
.
snapshotList
();
expect
(
snap
.
rows
===
0
||
snap
.
emptyVisible
,
'
无匹配应空态
'
).
toBeTruthy
();
});
});
test
.
describe
(
'
缺货目录明细 · 行内操作
'
,
()
=>
{
test
(
'
PRODM-STD-005 行内「详情」可达(只读冒烟)
'
,
async
({
prodmStockoutDetailPage
})
=>
{
await
prodmStockoutDetailPage
.
open
();
await
prodmStockoutDetailPage
.
rowActionSmoke
(
'
详情
'
);
});
test
(
'
PRODM-STD-006 行内「查看」可达(只读冒烟)
'
,
async
({
prodmStockoutDetailPage
})
=>
{
await
prodmStockoutDetailPage
.
open
();
await
prodmStockoutDetailPage
.
rowActionSmoke
(
'
查看
'
);
});
});
test
.
describe
(
'
缺货目录明细 · 分页
'
,
()
=>
{
test
(
'
PRODM-STD-008 有数据时总条数
'
,
async
({
prodmStockoutDetailPage
})
=>
{
await
prodmStockoutDetailPage
.
open
();
await
prodmStockoutDetailPage
.
assertTotalWhenHasData
();
});
test
(
'
PRODM-STD-009 切换至第 2 页
'
,
async
({
prodmStockoutDetailPage
})
=>
{
await
prodmStockoutDetailPage
.
open
();
await
prodmStockoutDetailPage
.
goToPage2ForProdm
();
});
test
(
'
PRODM-STD-010 切换20条每页页面正常且列表同步
'
,
async
({
prodmStockoutDetailPage
})
=>
{
await
prodmStockoutDetailPage
.
open
();
const
{
total
,
rowsBefore
,
rowsAfter
}
=
await
prodmStockoutDetailPage
.
switchToPageSizeTwenty
();
const
expectedRows
=
Math
.
min
(
total
,
20
);
expect
(
rowsAfter
,
'
当前页行数应与 20 条/页及总条数一致
'
).
toBe
(
expectedRows
);
if
(
total
>
20
)
{
expect
(
rowsAfter
,
'
切换后可见行应随每页条数变化
'
).
not
.
toBe
(
rowsBefore
);
}
expect
(
await
prodmStockoutDetailPage
.
getTotalCount
(),
'
总条数应不变
'
).
toBe
(
total
);
});
});
test
.
describe
(
'
缺货目录明细 · 导出
'
,
()
=>
{
test
(
'
PRODM-STD-011 当前查询条件下导出
'
,
async
({
prodmStockoutDetailPage
})
=>
{
await
prodmStockoutDetailPage
.
open
();
await
prodmStockoutDetailPage
.
clickExportIfVisible
();
});
});
test
.
describe
(
'
缺货目录明细 · 打印
'
,
()
=>
{
test
(
'
PRODM-STD-012 按当前条件打印
'
,
async
({
prodmStockoutDetailPage
})
=>
{
await
prodmStockoutDetailPage
.
open
();
await
prodmStockoutDetailPage
.
clickPrintIfVisible
();
});
});
test
.
describe
(
'
缺货目录明细 · 替代产品
'
,
()
=>
{
test
(
'
PRODM-STD-013 打开「替代产品」对应弹窗/抽屉
'
,
async
({
prodmStockoutDetailPage
})
=>
{
await
prodmStockoutDetailPage
.
open
();
await
prodmStockoutDetailPage
.
openToolbarOverlay
(
'
替代产品
'
);
await
prodmStockoutDetailPage
.
closeOverlay
();
});
test
(
'
PRODM-STD-014 「替代产品」取消不落库
'
,
async
({
prodmStockoutDetailPage
})
=>
{
await
prodmStockoutDetailPage
.
open
();
await
prodmStockoutDetailPage
.
cancelToolbarWithoutCommit
(
'
替代产品
'
);
});
test
(
'
PRODM-STD-015 「替代产品」必填为空拦截
'
,
async
({
prodmStockoutDetailPage
})
=>
{
await
prodmStockoutDetailPage
.
open
();
await
prodmStockoutDetailPage
.
assertRequiredInterceptFor
(
'
替代产品
'
);
});
});
});
tests/spd/prodm-stockout.spec.ts
0 → 100644
View file @
b8b4c69c
import
{
expect
,
test
}
from
'
../../fixtures
'
;
/**
* 全量用例:与 testcase/基础管理-产品管理-缺货目录维护-UI自动化测试用例-01.csv 严格一致
* 运行:npm run test:prodm-stockout:all
*/
test
.
describe
(
'
基础设置 · 产品管理
'
,
()
=>
{
test
.
describe
(
'
缺货目录维护 · 快捷筛选查询
'
,
()
=>
{
test
(
'
PRODM-STO-001 快捷区重置恢复默认
'
,
{
tag
:
'
@smoke
'
},
async
({
prodmStockoutPage
})
=>
{
await
prodmStockoutPage
.
open
();
await
prodmStockoutPage
.
clickResetQuick
();
await
prodmStockoutPage
.
expectOnPage
();
});
test
(
'
PRODM-STO-002 全量可见条件组合查询
'
,
async
({
prodmStockoutPage
})
=>
{
test
.
skip
(
true
,
'
组合查询须按页面配置 quickFields/drawerFields 实现 searchWithQuickAndDrawerCombo(对齐 center-report-sheet STAT-IOD-004),禁止临时启发式填表
'
,
);
});
});
test
.
describe
(
'
缺货目录维护 · 列表
'
,
()
=>
{
test
(
'
PRODM-STO-003 列表核心列完整
'
,
async
({
prodmStockoutPage
})
=>
{
await
prodmStockoutPage
.
open
();
await
prodmStockoutPage
.
assertConfiguredHeaders
();
});
test
(
'
PRODM-STO-006 无匹配空态(mock反例)
'
,
async
({
prodmStockoutPage
})
=>
{
await
prodmStockoutPage
.
open
();
await
prodmStockoutPage
.
searchByMockKeyword
();
const
snap
=
await
prodmStockoutPage
.
snapshotList
();
expect
(
snap
.
rows
===
0
||
snap
.
emptyVisible
,
'
无匹配应空态
'
).
toBeTruthy
();
});
});
test
.
describe
(
'
缺货目录维护 · 行内操作
'
,
()
=>
{
test
(
'
PRODM-STO-004 行内「详情」可达(只读冒烟)
'
,
async
({
prodmStockoutPage
})
=>
{
await
prodmStockoutPage
.
open
();
await
prodmStockoutPage
.
rowActionSmoke
(
'
详情
'
);
});
test
(
'
PRODM-STO-005 行内「编辑」可达(只读冒烟)
'
,
async
({
prodmStockoutPage
})
=>
{
await
prodmStockoutPage
.
open
();
await
prodmStockoutPage
.
rowActionSmoke
(
'
编辑
'
);
});
});
test
.
describe
(
'
缺货目录维护 · 分页
'
,
()
=>
{
test
(
'
PRODM-STO-007 有数据时总条数
'
,
async
({
prodmStockoutPage
})
=>
{
await
prodmStockoutPage
.
open
();
await
prodmStockoutPage
.
assertTotalWhenHasData
();
});
test
(
'
PRODM-STO-008 切换至第 2 页
'
,
async
({
prodmStockoutPage
})
=>
{
await
prodmStockoutPage
.
open
();
await
prodmStockoutPage
.
goToPage2ForProdm
();
});
test
(
'
PRODM-STO-009 切换20条每页页面正常且列表同步
'
,
async
({
prodmStockoutPage
})
=>
{
await
prodmStockoutPage
.
open
();
const
{
total
,
rowsBefore
,
rowsAfter
}
=
await
prodmStockoutPage
.
switchToPageSizeTwenty
();
const
expectedRows
=
Math
.
min
(
total
,
20
);
expect
(
rowsAfter
,
'
当前页行数应与 20 条/页及总条数一致
'
).
toBe
(
expectedRows
);
if
(
total
>
20
)
{
expect
(
rowsAfter
,
'
切换后可见行应随每页条数变化
'
).
not
.
toBe
(
rowsBefore
);
}
expect
(
await
prodmStockoutPage
.
getTotalCount
(),
'
总条数应不变
'
).
toBe
(
total
);
});
});
test
.
describe
(
'
缺货目录维护 · 导出
'
,
()
=>
{
test
(
'
PRODM-STO-010 当前查询条件下导出
'
,
async
({
prodmStockoutPage
})
=>
{
await
prodmStockoutPage
.
open
();
await
prodmStockoutPage
.
clickExportIfVisible
();
});
});
test
.
describe
(
'
缺货目录维护 · 缺货信息维护
'
,
()
=>
{
test
(
'
PRODM-STO-011 打开「缺货信息维护」对应弹窗/抽屉
'
,
async
({
prodmStockoutPage
})
=>
{
await
prodmStockoutPage
.
open
();
await
prodmStockoutPage
.
openToolbarOverlay
(
'
缺货信息维护
'
);
await
prodmStockoutPage
.
closeOverlay
();
});
test
(
'
PRODM-STO-012 「缺货信息维护」取消不落库
'
,
async
({
prodmStockoutPage
})
=>
{
await
prodmStockoutPage
.
open
();
await
prodmStockoutPage
.
cancelToolbarWithoutCommit
(
'
缺货信息维护
'
);
});
test
(
'
PRODM-STO-013 「缺货信息维护」必填为空拦截
'
,
async
({
prodmStockoutPage
})
=>
{
await
prodmStockoutPage
.
open
();
await
prodmStockoutPage
.
assertRequiredInterceptFor
(
'
缺货信息维护
'
);
});
});
});
tests/spd/prodm-supply.spec.ts
0 → 100644
View file @
b8b4c69c
import
{
expect
,
test
}
from
'
../../fixtures
'
;
/**
* 全量用例:与 testcase/基础管理-产品管理-产品供应关系维护-UI自动化测试用例-01.csv 严格一致
* 运行:npm run test:prodm-supply:all
*/
test
.
describe
(
'
基础设置 · 产品管理
'
,
()
=>
{
test
.
describe
(
'
产品供应关系维护 · 左侧分类树
'
,
()
=>
{
test
(
'
PRODM-SUP-001 树默认有选中或可展开节点
'
,
{
tag
:
'
@smoke
'
},
async
({
prodmSupplyPage
})
=>
{
await
prodmSupplyPage
.
open
();
await
prodmSupplyPage
.
expectTreeDefaultScope
();
});
test
(
'
PRODM-SUP-002 切换树节点刷新右侧
'
,
async
({
prodmSupplyPage
})
=>
{
await
prodmSupplyPage
.
open
();
const
switched
=
await
prodmSupplyPage
.
switchOtherTreeNode
();
expect
(
switched
,
'
应能切换树节点
'
).
toBeTruthy
();
});
});
test
.
describe
(
'
产品供应关系维护 · 快捷筛选查询
'
,
()
=>
{
test
(
'
PRODM-SUP-003 快捷区重置恢复默认
'
,
async
({
prodmSupplyPage
})
=>
{
await
prodmSupplyPage
.
open
();
await
prodmSupplyPage
.
clickResetQuick
();
await
prodmSupplyPage
.
expectOnPage
();
});
test
(
'
PRODM-SUP-004 全量可见条件组合查询
'
,
async
({
prodmSupplyPage
})
=>
{
test
.
skip
(
true
,
'
组合查询须按页面配置 quickFields/drawerFields 实现 searchWithQuickAndDrawerCombo(对齐 center-report-sheet STAT-IOD-004),禁止临时启发式填表
'
,
);
});
});
test
.
describe
(
'
产品供应关系维护 · 列表
'
,
()
=>
{
test
(
'
PRODM-SUP-005 列表核心列完整
'
,
async
({
prodmSupplyPage
})
=>
{
await
prodmSupplyPage
.
open
();
await
prodmSupplyPage
.
assertConfiguredHeaders
();
});
test
(
'
PRODM-SUP-008 列设置隐藏后再恢复
'
,
async
({
prodmSupplyPage
})
=>
{
await
prodmSupplyPage
.
open
();
await
prodmSupplyPage
.
clickQuery
();
await
prodmSupplyPage
.
executeColumnSettingsToggleRestoreTest
();
});
test
(
'
PRODM-SUP-009 销售商(自定义)列表列升序降序切换
'
,
async
({
prodmSupplyPage
})
=>
{
await
prodmSupplyPage
.
open
();
await
prodmSupplyPage
.
expectColumnSortAscDesc
(
'
销售商(自定义)列表
'
);
});
test
(
'
PRODM-SUP-010 横向滚动与列对齐
'
,
async
({
prodmSupplyPage
})
=>
{
await
prodmSupplyPage
.
open
();
await
prodmSupplyPage
.
expectHorizontalScrollAlignment
();
});
test
(
'
PRODM-SUP-011 无匹配空态(mock反例)
'
,
async
({
prodmSupplyPage
})
=>
{
await
prodmSupplyPage
.
open
();
await
prodmSupplyPage
.
searchByMockKeyword
();
const
snap
=
await
prodmSupplyPage
.
snapshotList
();
expect
(
snap
.
rows
===
0
||
snap
.
emptyVisible
,
'
无匹配应空态
'
).
toBeTruthy
();
});
});
test
.
describe
(
'
产品供应关系维护 · 行内操作
'
,
()
=>
{
test
(
'
PRODM-SUP-006 行内「详情」可达(只读冒烟)
'
,
async
({
prodmSupplyPage
})
=>
{
await
prodmSupplyPage
.
open
();
await
prodmSupplyPage
.
rowActionSmoke
(
'
详情
'
);
});
test
(
'
PRODM-SUP-007 行内「编辑」可达(只读冒烟)
'
,
async
({
prodmSupplyPage
})
=>
{
await
prodmSupplyPage
.
open
();
await
prodmSupplyPage
.
rowActionSmoke
(
'
编辑
'
);
});
});
test
.
describe
(
'
产品供应关系维护 · 分页
'
,
()
=>
{
test
(
'
PRODM-SUP-012 有数据时总条数
'
,
async
({
prodmSupplyPage
})
=>
{
await
prodmSupplyPage
.
open
();
await
prodmSupplyPage
.
assertTotalWhenHasData
();
});
test
(
'
PRODM-SUP-013 切换至第 2 页
'
,
async
({
prodmSupplyPage
})
=>
{
await
prodmSupplyPage
.
open
();
await
prodmSupplyPage
.
goToPage2ForProdm
();
});
test
(
'
PRODM-SUP-014 切换20条每页页面正常且列表同步
'
,
async
({
prodmSupplyPage
})
=>
{
await
prodmSupplyPage
.
open
();
const
{
total
,
rowsBefore
,
rowsAfter
}
=
await
prodmSupplyPage
.
switchToPageSizeTwenty
();
const
expectedRows
=
Math
.
min
(
total
,
20
);
expect
(
rowsAfter
,
'
当前页行数应与 20 条/页及总条数一致
'
).
toBe
(
expectedRows
);
if
(
total
>
20
)
{
expect
(
rowsAfter
,
'
切换后可见行应随每页条数变化
'
).
not
.
toBe
(
rowsBefore
);
}
expect
(
await
prodmSupplyPage
.
getTotalCount
(),
'
总条数应不变
'
).
toBe
(
total
);
});
});
test
.
describe
(
'
产品供应关系维护 · 导出
'
,
()
=>
{
test
(
'
PRODM-SUP-015 当前查询条件下导出
'
,
async
({
prodmSupplyPage
})
=>
{
await
prodmSupplyPage
.
open
();
await
prodmSupplyPage
.
clickExportIfVisible
();
});
});
});
tests/spd/prodm-unit-pkg.spec.ts
0 → 100644
View file @
b8b4c69c
import
{
expect
,
test
}
from
'
../../fixtures
'
;
/**
* 全量用例:与 testcase/基础管理-产品管理-院区单元包设置-UI自动化测试用例-01.csv 严格一致
* 运行:npm run test:prodm-unit-pkg:all
*/
test
.
describe
(
'
基础设置 · 产品管理
'
,
()
=>
{
test
.
describe
(
'
院区单元包设置 · 快捷筛选查询
'
,
()
=>
{
test
(
'
PRODM-UPK-001 快捷区重置恢复默认
'
,
{
tag
:
'
@smoke
'
},
async
({
prodmUnitPkgPage
})
=>
{
await
prodmUnitPkgPage
.
open
();
await
prodmUnitPkgPage
.
clickResetQuick
();
await
prodmUnitPkgPage
.
expectOnPage
();
});
});
test
.
describe
(
'
院区单元包设置 · 高级筛选抽屉
'
,
()
=>
{
test
(
'
PRODM-UPK-002 全量查询条件组合查询
'
,
async
({
prodmUnitPkgPage
})
=>
{
test
.
skip
(
true
,
'
组合查询须按页面配置 quickFields/drawerFields 实现 searchWithQuickAndDrawerCombo(对齐 center-report-sheet STAT-IOD-004),禁止临时启发式填表
'
,
);
});
test
(
'
PRODM-UPK-003 点击高级筛选打开抽屉
'
,
async
({
prodmUnitPkgPage
})
=>
{
await
prodmUnitPkgPage
.
open
();
await
prodmUnitPkgPage
.
openAdvancedFilterDrawer
();
});
});
test
.
describe
(
'
院区单元包设置 · 列表
'
,
()
=>
{
test
(
'
PRODM-UPK-004 列表核心列完整
'
,
async
({
prodmUnitPkgPage
})
=>
{
await
prodmUnitPkgPage
.
open
();
await
prodmUnitPkgPage
.
assertConfiguredHeaders
();
});
test
(
'
PRODM-UPK-008 列设置隐藏后再恢复
'
,
async
({
prodmUnitPkgPage
})
=>
{
await
prodmUnitPkgPage
.
open
();
await
prodmUnitPkgPage
.
clickQuery
();
await
prodmUnitPkgPage
.
executeColumnSettingsToggleRestoreTest
();
});
test
(
'
PRODM-UPK-009 横向滚动与列对齐
'
,
async
({
prodmUnitPkgPage
})
=>
{
await
prodmUnitPkgPage
.
open
();
await
prodmUnitPkgPage
.
expectHorizontalScrollAlignment
();
});
test
(
'
PRODM-UPK-010 无匹配空态(mock反例)
'
,
async
({
prodmUnitPkgPage
})
=>
{
await
prodmUnitPkgPage
.
open
();
await
prodmUnitPkgPage
.
searchByMockKeyword
();
const
snap
=
await
prodmUnitPkgPage
.
snapshotList
();
expect
(
snap
.
rows
===
0
||
snap
.
emptyVisible
,
'
无匹配应空态
'
).
toBeTruthy
();
});
});
test
.
describe
(
'
院区单元包设置 · 行内操作
'
,
()
=>
{
test
(
'
PRODM-UPK-005 行内「详情」可达(只读冒烟)
'
,
async
({
prodmUnitPkgPage
})
=>
{
await
prodmUnitPkgPage
.
open
();
await
prodmUnitPkgPage
.
rowActionSmoke
(
'
详情
'
);
});
test
(
'
PRODM-UPK-006 行内「编辑」可达(只读冒烟)
'
,
async
({
prodmUnitPkgPage
})
=>
{
await
prodmUnitPkgPage
.
open
();
await
prodmUnitPkgPage
.
rowActionSmoke
(
'
编辑
'
);
});
test
(
'
PRODM-UPK-007 行内「日志」可达(只读冒烟)
'
,
async
({
prodmUnitPkgPage
})
=>
{
await
prodmUnitPkgPage
.
open
();
await
prodmUnitPkgPage
.
rowActionSmoke
(
'
日志
'
);
});
});
test
.
describe
(
'
院区单元包设置 · 分页
'
,
()
=>
{
test
(
'
PRODM-UPK-011 有数据时总条数
'
,
async
({
prodmUnitPkgPage
})
=>
{
await
prodmUnitPkgPage
.
open
();
await
prodmUnitPkgPage
.
assertTotalWhenHasData
();
});
test
(
'
PRODM-UPK-012 切换至第 2 页
'
,
async
({
prodmUnitPkgPage
})
=>
{
await
prodmUnitPkgPage
.
open
();
await
prodmUnitPkgPage
.
goToPage2ForProdm
();
});
test
(
'
PRODM-UPK-013 切换20条每页页面正常且列表同步
'
,
async
({
prodmUnitPkgPage
})
=>
{
await
prodmUnitPkgPage
.
open
();
const
{
total
,
rowsBefore
,
rowsAfter
}
=
await
prodmUnitPkgPage
.
switchToPageSizeTwenty
();
const
expectedRows
=
Math
.
min
(
total
,
20
);
expect
(
rowsAfter
,
'
当前页行数应与 20 条/页及总条数一致
'
).
toBe
(
expectedRows
);
if
(
total
>
20
)
{
expect
(
rowsAfter
,
'
切换后可见行应随每页条数变化
'
).
not
.
toBe
(
rowsBefore
);
}
expect
(
await
prodmUnitPkgPage
.
getTotalCount
(),
'
总条数应不变
'
).
toBe
(
total
);
});
});
test
.
describe
(
'
院区单元包设置 · 导出
'
,
()
=>
{
test
(
'
PRODM-UPK-014 当前查询条件下导出
'
,
async
({
prodmUnitPkgPage
})
=>
{
await
prodmUnitPkgPage
.
open
();
await
prodmUnitPkgPage
.
clickExportIfVisible
();
});
});
test
.
describe
(
'
院区单元包设置 · 新增
'
,
()
=>
{
test
(
'
PRODM-UPK-015 打开「新增」对应弹窗/抽屉
'
,
async
({
prodmUnitPkgPage
})
=>
{
await
prodmUnitPkgPage
.
open
();
await
prodmUnitPkgPage
.
openToolbarOverlay
(
'
新增
'
);
await
prodmUnitPkgPage
.
closeOverlay
();
});
test
(
'
PRODM-UPK-016 「新增」取消不落库
'
,
async
({
prodmUnitPkgPage
})
=>
{
await
prodmUnitPkgPage
.
open
();
await
prodmUnitPkgPage
.
cancelToolbarWithoutCommit
(
'
新增
'
);
});
test
(
'
PRODM-UPK-017 「新增」必填为空拦截
'
,
async
({
prodmUnitPkgPage
})
=>
{
await
prodmUnitPkgPage
.
open
();
await
prodmUnitPkgPage
.
assertRequiredInterceptFor
(
'
新增
'
);
});
});
});
Prev
1
…
8
9
10
11
12
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