library-picturebook-activity/lesingle-creation-frontend/e2e/admin/contests.spec.ts
En 98e9ad1d28 feat(前端): 测试环境登录框支持自动填充测试账号
通过 VITE_AUTO_FILL_TEST 环境变量控制,在 .env.test 中启用,
使测试环境构建后登录框也能自动填充测试账号,方便测试人员使用。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 17:03:22 +08:00

91 lines
3.0 KiB
TypeScript

import { test, expect } from '../fixtures/admin.fixture'
/**
* 活动管理列表测试
*/
test.describe('活动管理列表', () => {
test.beforeEach(async ({ adminPage }) => {
const page = adminPage
// 导航到活动管理 > 活动列表
const submenu = page.locator('.ant-menu-submenu').filter({ hasText: '活动管理' }).first()
await submenu.click()
await page.waitForTimeout(500)
await submenu.locator('.ant-menu-item').filter({ hasText: '活动列表' }).first().click()
await page.waitForURL(/contests\/list/, { timeout: 15_000 })
})
test('C-01 活动列表页正常加载', async ({ adminPage }) => {
const page = adminPage
// 验证页面标题
await expect(page.locator('.title-card').getByText('活动列表')).toBeVisible({ timeout: 10_000 })
// 验证表格渲染
await expect(page.locator('.data-table')).toBeVisible()
// 验证表格有数据行
const rows = page.locator('.ant-table-tbody tr')
const rowCount = await rows.count()
expect(rowCount).toBeGreaterThan(0)
})
test('C-02 搜索功能正常', async ({ adminPage }) => {
const page = adminPage
// 等待搜索表单可见
await expect(page.locator('.search-form')).toBeVisible()
// 在搜索框输入关键词
await page.locator('input[placeholder="请输入活动名称"]').fill('绘本')
// 点击搜索按钮
await page.locator('.search-form button[type="submit"]').click()
// 验证表格刷新(有 loading 状态后恢复)
await page.waitForTimeout(1000)
await expect(page.locator('.ant-table-tbody tr').first()).toBeVisible()
})
test('C-03 活动阶段筛选正常', async ({ adminPage }) => {
const page = adminPage
// 等待统计卡片可见
await expect(page.locator('.stat-card').first()).toBeVisible({ timeout: 10_000 })
// 点击"报名中"统计卡片
await page.locator('.stat-card').filter({ hasText: '报名中' }).click()
// 验证筛选生效(活动阶段选择器或卡片高亮)
const activeCard = page.locator('.stat-card.active')
await expect(activeCard).toBeVisible()
})
test('C-04 分页功能正常', async ({ adminPage }) => {
const page = adminPage
// 验证分页组件可见
await expect(page.locator('.ant-pagination')).toBeVisible({ timeout: 10_000 })
// 验证总数信息显示
const paginationText = await page.locator('.ant-pagination').textContent()
expect(paginationText).toBeTruthy()
})
test('C-05 点击活动查看详情', async ({ adminPage }) => {
const page = adminPage
// 等待表格加载完成
await expect(page.locator('.ant-table-tbody tr').first()).toBeVisible({ timeout: 10_000 })
// 点击"查看"按钮(已发布的活动)
const viewBtn = page.locator('text=查看').first()
if (await viewBtn.isVisible()) {
await viewBtn.click()
// 验证跳转到活动详情页
await page.waitForURL(/contests\/\d+/, { timeout: 10_000 })
}
})
})