library-picturebook-activity/lesingle-creation-frontend/e2e/admin/users.spec.ts

112 lines
3.7 KiB
TypeScript
Raw Normal View History

import { test, expect } from '../fixtures/admin.fixture'
/**
*
*/
test.describe('用户管理', () => {
test.beforeEach(async ({ adminPage }) => {
const page = adminPage
// 通过 Vue Router 直接导航到用户管理(菜单点击可能因动态路由注册时序问题失效)
await page.evaluate(() => {
const app = document.querySelector('#app')?.__vue_app__
if (app) {
const router = app.config.globalProperties.$router
router.push({ name: 'SystemUsers' })
}
})
// 等待页面内容加载
await page.waitForTimeout(2000)
})
test('U-01 用户列表页正常加载', async ({ adminPage }) => {
const page = adminPage
// 验证页面加载Ant Design 表格或卡片)
await expect(page.locator('.ant-table, .ant-card, .ant-spin').first()).toBeVisible({ timeout: 10_000 })
})
test('U-02 搜索用户', async ({ adminPage }) => {
const page = adminPage
// 查找搜索输入框
const searchInput = page.locator('input[placeholder*="搜索"], input[placeholder*="用户"], input[placeholder*="姓名"], input[placeholder*="手机"]').first()
if (await searchInput.isVisible({ timeout: 5000 }).catch(() => false)) {
await searchInput.fill('管理员')
// 触发搜索
const searchBtn = page.locator('button:has-text("搜索"), button[type="submit"]').first()
if (await searchBtn.isVisible()) {
await searchBtn.click()
} else {
await searchInput.press('Enter')
}
await page.waitForTimeout(1000)
}
})
test('U-03 用户状态筛选', async ({ adminPage }) => {
const page = adminPage
// 查找状态筛选
const statusSelect = page.locator('.ant-select').first()
if (await statusSelect.isVisible({ timeout: 5000 }).catch(() => false)) {
await statusSelect.click()
await page.waitForTimeout(500)
// 选择状态
const option = page.locator('.ant-select-item-option').first()
if (await option.isVisible()) {
await option.click()
await page.waitForTimeout(1000)
}
}
})
test('U-04 创建用户弹窗', async ({ adminPage }) => {
const page = adminPage
// 查找创建用户按钮
const createBtn = page.locator('button:has-text("创建"), button:has-text("新建"), button:has-text("添加用户"), button:has-text("新增")').first()
if (await createBtn.isVisible({ timeout: 5000 }).catch(() => false)) {
await createBtn.click()
// 验证弹窗出现
await expect(page.locator('.ant-modal, .ant-drawer').first()).toBeVisible({ timeout: 5000 })
// 验证表单字段可填写
const usernameInput = page.locator('.ant-modal input, .ant-drawer input').first()
if (await usernameInput.isVisible()) {
await usernameInput.fill('newuser')
await expect(usernameInput).toHaveValue('newuser')
}
}
})
test('U-05 用户操作菜单', async ({ adminPage }) => {
const page = adminPage
// 等待表格加载
await page.waitForTimeout(2000)
// 查找操作列中的按钮
const editBtn = page.locator('button:has-text("编辑"), a:has-text("编辑")').first()
if (await editBtn.isVisible({ timeout: 5000 }).catch(() => false)) {
// 验证编辑按钮可点击
expect(await editBtn.isEnabled()).toBe(true)
}
// 查找更多操作下拉菜单
const moreBtn = page.locator('.ant-table-row button:has-text("更多"), .ant-table-row .ant-dropdown-trigger').first()
if (await moreBtn.isVisible({ timeout: 3000 }).catch(() => false)) {
await moreBtn.click()
await page.waitForTimeout(500)
// 验证下拉菜单选项
await expect(page.locator('.ant-dropdown-menu-item').first()).toBeVisible()
}
})
})