kindergarten_java/reading-platform-frontend/tests/e2e/admin/02-dashboard.spec.ts
En 6e11c874d2 chore: 忽略 target 目录和 .class 文件
- 添加 target/ 到 .gitignore
- 从 git 暂存区移除已追踪的 target 目录

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 16:50:54 +08:00

91 lines
3.3 KiB
TypeScript

/**
* 超管端 E2E 测试 - 数据看板
*/
import { test, expect } from '@playwright/test';
import { loginAsAdmin } from './helpers';
test.describe('数据看板', () => {
test.beforeEach(async ({ page }) => {
// 登录并进入仪表盘
await loginAsAdmin(page);
});
test('验证统计卡片显示', async ({ page }) => {
// 等待统计卡片加载
await page.waitForSelector('.ant-statistic, [class*="statistic"]', { timeout: 10000 });
// 验证租户数卡片
const tenantCard = page.getByText(/租户数|租户总数|机构数/).first();
await expect(tenantCard).toBeVisible();
// 验证课程包数卡片
const courseCard = page.getByText(/课程包数|课程总数/).first();
await expect(courseCard).toBeVisible();
// 验证月授课次数卡片
const lessonCard = page.getByText(/月授课|授课次数/).first();
await expect(lessonCard).toBeVisible();
// 验证覆盖学生卡片
const studentCard = page.getByText(/覆盖学生|学生数/).first();
await expect(studentCard).toBeVisible();
});
test('验证趋势图加载', async ({ page }) => {
// 等待图表容器加载
const chartContainer = page.locator('[class*="trend"], [class*="chart"], canvas').first();
await expect(chartContainer).toBeVisible({ timeout: 10000 });
});
test('验证活跃租户 TOP5 列表', async ({ page }) => {
// 查找活跃租户列表区域
const activeTenantsSection = page.getByText(/活跃租户|活跃机构|TOP5/);
await expect(activeTenantsSection).toBeVisible({ timeout: 10000 });
// 验证列表中有数据行
const listItems = page.locator('[class*="list-item"], [class*="table-row"]').first();
await expect(listItems).toBeVisible();
});
test('验证热门课程包 TOP5 列表', async ({ page }) => {
// 查找热门课程包列表区域
const popularCoursesSection = page.getByText(/热门课程|热门课程包|TOP5/);
await expect(popularCoursesSection).toBeVisible({ timeout: 10000 });
// 验证列表中有数据行
const listItems = page.locator('[class*="list-item"], [class*="table-row"]').first();
await expect(listItems).toBeVisible();
});
test('验证快捷入口点击跳转 - 创建课程包', async ({ page }) => {
// 查找创建课程包快捷入口
const createCourseLink = page.getByText(/创建课程包|新建课程/).first();
await expect(createCourseLink).toBeVisible();
// 点击并验证跳转
await createCourseLink.click();
await page.waitForURL(/\/admin\/courses\/create|\/admin\/courses\/new/);
});
test('验证快捷入口点击跳转 - 管理租户', async ({ page }) => {
// 查找管理租户快捷入口
const tenantLink = page.getByText(/管理租户|租户管理/).first();
await expect(tenantLink).toBeVisible();
// 点击并验证跳转
await tenantLink.click();
await page.waitForURL(/\/admin\/tenants/);
});
test('验证快捷入口点击跳转 - 资源库', async ({ page }) => {
// 查找资源库快捷入口
const resourceLink = page.getByText(/资源库|资源管理/).first();
await expect(resourceLink).toBeVisible();
// 点击并验证跳转
await resourceLink.click();
await page.waitForURL(/\/admin\/resources/);
});
});