2026-03-02 21:44:03 +08:00
|
|
|
|
import { test, expect } from '@playwright/test'
|
2026-03-06 02:02:59 +08:00
|
|
|
|
import { login, clickSubMenu, clickMenuItem, expectBasicList, closeMessageBox } from './utils/erpTestUtils'
|
2026-03-02 21:44:03 +08:00
|
|
|
|
|
|
|
|
|
|
test.describe('产品 BOM(EBOM)页面', () => {
|
2026-03-06 02:02:59 +08:00
|
|
|
|
test('列表页基础测试', async ({ page }) => {
|
|
|
|
|
|
await test.step('步骤1:登录系统', async () => {
|
|
|
|
|
|
await login(page)
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
await test.step('步骤2:导航到产品BOM页面', async () => {
|
|
|
|
|
|
await clickSubMenu(page, '研发管理')
|
|
|
|
|
|
await clickMenuItem(page, '/rd/ebom')
|
|
|
|
|
|
await expect(page).toHaveURL(/\/rd\/ebom/)
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
await test.step('步骤3:检查页面基本布局', async () => {
|
|
|
|
|
|
await expectBasicList(page)
|
|
|
|
|
|
await closeMessageBox(page)
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
await test.step('步骤4:检查主要功能按钮', async () => {
|
|
|
|
|
|
const buttons = ['新增', '导出', '搜索', '重置']
|
|
|
|
|
|
for (const btnName of buttons) {
|
|
|
|
|
|
const btn = page.getByRole('button', { name: btnName }).first()
|
|
|
|
|
|
if (await btn.count() > 0) {
|
|
|
|
|
|
await expect(btn).toBeVisible()
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
await test.step('步骤5:检查搜索表单', async () => {
|
|
|
|
|
|
const searchForm = page.locator('.el-form').first()
|
|
|
|
|
|
await expect(searchForm).toBeVisible()
|
|
|
|
|
|
})
|
2026-03-02 21:44:03 +08:00
|
|
|
|
})
|
|
|
|
|
|
|
2026-03-06 02:02:59 +08:00
|
|
|
|
test('搜索功能测试', async ({ page }) => {
|
|
|
|
|
|
await test.step('步骤1:登录系统并导航到产品BOM页面', async () => {
|
|
|
|
|
|
await login(page)
|
|
|
|
|
|
await clickSubMenu(page, '研发管理')
|
|
|
|
|
|
await clickMenuItem(page, '/rd/ebom')
|
|
|
|
|
|
await closeMessageBox(page)
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
await test.step('步骤2:点击搜索按钮', async () => {
|
|
|
|
|
|
const searchBtn = page.getByRole('button', { name: /搜索|查询/ }).first()
|
|
|
|
|
|
if (await searchBtn.count() > 0) {
|
|
|
|
|
|
await searchBtn.click()
|
|
|
|
|
|
await page.waitForTimeout(500)
|
|
|
|
|
|
await closeMessageBox(page)
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
2026-03-02 21:44:03 +08:00
|
|
|
|
|
2026-03-06 02:02:59 +08:00
|
|
|
|
await test.step('步骤3:点击重置按钮', async () => {
|
|
|
|
|
|
const resetBtn = page.getByRole('button', { name: /重置/ }).first()
|
|
|
|
|
|
if (await resetBtn.count() > 0) {
|
|
|
|
|
|
await resetBtn.click()
|
|
|
|
|
|
await closeMessageBox(page)
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
2026-03-02 21:44:03 +08:00
|
|
|
|
|
2026-03-06 02:02:59 +08:00
|
|
|
|
test('新增产品BOM页面测试', async ({ page }) => {
|
|
|
|
|
|
await test.step('步骤1:登录系统并导航到产品BOM页面', async () => {
|
|
|
|
|
|
await login(page)
|
|
|
|
|
|
await clickSubMenu(page, '研发管理')
|
|
|
|
|
|
await clickMenuItem(page, '/rd/ebom')
|
|
|
|
|
|
await closeMessageBox(page)
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
await test.step('步骤2:点击新增按钮', async () => {
|
|
|
|
|
|
const addBtn = page.getByRole('button', { name: /新增|新建/ }).first()
|
|
|
|
|
|
if (await addBtn.count() > 0 && await addBtn.isVisible()) {
|
|
|
|
|
|
await addBtn.click()
|
|
|
|
|
|
await page.waitForTimeout(1000)
|
|
|
|
|
|
await closeMessageBox(page)
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
await test.step('步骤3:检查新增页面表单', async () => {
|
|
|
|
|
|
const form = page.locator('.el-form').first()
|
|
|
|
|
|
if (await form.count() > 0) {
|
|
|
|
|
|
await expect(form).toBeVisible()
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
await test.step('步骤4:检查主要操作按钮', async () => {
|
|
|
|
|
|
const actionButtons = ['保存', '提交', '删除', '返回']
|
|
|
|
|
|
for (const btnName of actionButtons) {
|
|
|
|
|
|
const btn = page.getByRole('button', { name: btnName }).first()
|
|
|
|
|
|
if (await btn.count() > 0) {
|
|
|
|
|
|
await expect(btn).toBeVisible()
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
await test.step('步骤5:返回列表页', async () => {
|
|
|
|
|
|
await page.goBack()
|
|
|
|
|
|
await page.waitForTimeout(500)
|
|
|
|
|
|
await closeMessageBox(page)
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
2026-03-02 21:44:03 +08:00
|
|
|
|
|
2026-03-06 02:02:59 +08:00
|
|
|
|
test('导出功能测试', async ({ page }) => {
|
|
|
|
|
|
await test.step('步骤1:登录系统并导航到产品BOM页面', async () => {
|
|
|
|
|
|
await login(page)
|
|
|
|
|
|
await clickSubMenu(page, '研发管理')
|
|
|
|
|
|
await clickMenuItem(page, '/rd/ebom')
|
|
|
|
|
|
await closeMessageBox(page)
|
|
|
|
|
|
})
|
2026-03-02 21:44:03 +08:00
|
|
|
|
|
2026-03-06 02:02:59 +08:00
|
|
|
|
await test.step('步骤2:测试导出按钮', async () => {
|
|
|
|
|
|
const exportBtn = page.getByRole('button', { name: /导出/ }).first()
|
|
|
|
|
|
if (await exportBtn.count() > 0 && await exportBtn.isVisible()) {
|
|
|
|
|
|
try {
|
|
|
|
|
|
await exportBtn.click()
|
|
|
|
|
|
await page.waitForTimeout(500)
|
|
|
|
|
|
await closeMessageBox(page)
|
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
2026-03-02 21:44:03 +08:00
|
|
|
|
})
|
|
|
|
|
|
})
|
|
|
|
|
|
|