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

88 lines
3.1 KiB
TypeScript
Raw Normal View History

import { test, expect } from '../fixtures/admin.fixture'
/**
* /
*/
test.describe('工作台/仪表盘', () => {
test('D-01 工作台页面正常加载', async ({ adminPage }) => {
const page = adminPage
// 导航到工作台
await page.locator('.ant-menu-item').filter({ hasText: '工作台' }).first().click()
await page.waitForURL(/dashboard|workbench/, { timeout: 10_000 })
// 验证页面容器存在
await expect(page.locator('.tenant-dashboard')).toBeVisible({ timeout: 10_000 })
// 验证欢迎横幅可见
await expect(page.locator('.welcome-banner')).toBeVisible()
})
test('D-02 统计卡片数据展示', async ({ adminPage }) => {
const page = adminPage
// 导航到工作台
await page.locator('.ant-menu-item').filter({ hasText: '工作台' }).first().click()
await page.waitForURL(/dashboard|workbench/, { timeout: 10_000 })
// 等待统计数据加载
await expect(page.locator('.stat-card').first()).toBeVisible({ timeout: 10_000 })
// 验证统计卡片数量6个可见活动、进行中、总报名数、待审核报名、总作品数、今日报名
const statCards = page.locator('.stat-card')
const count = await statCards.count()
expect(count).toBe(6)
// 验证统计数字存在(非空)
const statCounts = page.locator('.stat-count')
for (let i = 0; i < await statCounts.count(); i++) {
const text = await statCounts.nth(i).textContent()
expect(text).not.toBeNull()
expect(text!.trim().length).toBeGreaterThan(0)
}
})
test('D-03 快捷入口可点击', async ({ adminPage }) => {
const page = adminPage
// 导航到工作台
await page.locator('.ant-menu-item').filter({ hasText: '工作台' }).first().click()
await page.waitForURL(/dashboard|workbench/, { timeout: 10_000 })
// 等待快捷操作加载
await expect(page.locator('.action-item').first()).toBeVisible({ timeout: 10_000 })
// 验证至少有快捷操作按钮
const actionItems = page.locator('.action-item')
const count = await actionItems.count()
expect(count).toBeGreaterThan(0)
// 点击第一个快捷入口
await actionItems.first().click()
// 验证页面跳转(离开工作台)
await page.waitForURL(/gdlib\/(contests|system)/, { timeout: 10_000 })
})
test('D-04 顶部信息栏正确', async ({ adminPage }) => {
const page = adminPage
// 导航到工作台
await page.locator('.ant-menu-item').filter({ hasText: '工作台' }).first().click()
await page.waitForURL(/dashboard|workbench/, { timeout: 10_000 })
// 验证欢迎横幅中的用户名
const welcomeText = await page.locator('.welcome-banner h1').textContent()
expect(welcomeText).toContain('管理员')
// 验证日期显示
await expect(page.locator('.date-text')).toBeVisible()
// 验证底部用户信息
await expect(page.locator('.user-info .username')).toBeVisible()
const username = await page.locator('.user-info .username').textContent()
expect(username).toBeTruthy()
})
})