147 lines
4.1 KiB
TypeScript
147 lines
4.1 KiB
TypeScript
|
|
/**
|
||
|
|
* 教师端 E2E 测试 - API 接口测试
|
||
|
|
*/
|
||
|
|
|
||
|
|
import { test, expect } from '@playwright/test';
|
||
|
|
import { loginAsTeacher } from './helpers';
|
||
|
|
|
||
|
|
test.describe('教师端 API 接口测试', () => {
|
||
|
|
test.beforeEach(async ({ page }) => {
|
||
|
|
await loginAsTeacher(page);
|
||
|
|
});
|
||
|
|
|
||
|
|
test('验证仪表盘 API 调用', async ({ page }) => {
|
||
|
|
// 设置监听 API 请求
|
||
|
|
const [response] = await Promise.all([
|
||
|
|
page.waitForResponse(/.*\/teacher\/dashboard.*/, { timeout: 10000 }),
|
||
|
|
page.goto('/teacher/dashboard'),
|
||
|
|
]);
|
||
|
|
|
||
|
|
// 验证响应状态
|
||
|
|
expect(response.status()).toBe(200);
|
||
|
|
|
||
|
|
// 验证响应数据格式
|
||
|
|
const jsonData = await response.json();
|
||
|
|
expect(jsonData).toBeDefined();
|
||
|
|
test.info().annotations.push({
|
||
|
|
type: 'info',
|
||
|
|
description: `仪表盘 API 响应:${JSON.stringify(jsonData).substring(0, 200)}`,
|
||
|
|
});
|
||
|
|
});
|
||
|
|
|
||
|
|
test('验证课程列表 API 调用', async ({ page }) => {
|
||
|
|
await page.goto('/teacher/courses');
|
||
|
|
|
||
|
|
try {
|
||
|
|
const [response] = await Promise.all([
|
||
|
|
page.waitForResponse(/.*\/teacher\/courses.*/, { timeout: 10000 }),
|
||
|
|
]);
|
||
|
|
|
||
|
|
expect(response.status()).toBe(200);
|
||
|
|
|
||
|
|
const jsonData = await response.json();
|
||
|
|
test.info().annotations.push({
|
||
|
|
type: 'info',
|
||
|
|
description: `课程列表 API 响应:${JSON.stringify(jsonData).substring(0, 200)}`,
|
||
|
|
});
|
||
|
|
} catch (e) {
|
||
|
|
test.info().annotations.push({
|
||
|
|
type: 'warning',
|
||
|
|
description: '课程列表 API 请求未捕获到',
|
||
|
|
});
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
test('验证班级列表 API 调用', async ({ page }) => {
|
||
|
|
await page.goto('/teacher/classes');
|
||
|
|
|
||
|
|
try {
|
||
|
|
const [response] = await Promise.all([
|
||
|
|
page.waitForResponse(/.*\/teacher\/classes.*/, { timeout: 10000 }),
|
||
|
|
]);
|
||
|
|
|
||
|
|
expect(response.status()).toBe(200);
|
||
|
|
|
||
|
|
const jsonData = await response.json();
|
||
|
|
test.info().annotations.push({
|
||
|
|
type: 'info',
|
||
|
|
description: `班级列表 API 响应:${JSON.stringify(jsonData).substring(0, 200)}`,
|
||
|
|
});
|
||
|
|
} catch (e) {
|
||
|
|
test.info().annotations.push({
|
||
|
|
type: 'warning',
|
||
|
|
description: '班级列表 API 请求未捕获到',
|
||
|
|
});
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
test('验证授课记录列表 API 调用', async ({ page }) => {
|
||
|
|
await page.goto('/teacher/lessons');
|
||
|
|
|
||
|
|
try {
|
||
|
|
const [response] = await Promise.all([
|
||
|
|
page.waitForResponse(/.*\/teacher\/lessons.*/, { timeout: 10000 }),
|
||
|
|
]);
|
||
|
|
|
||
|
|
expect(response.status()).toBe(200);
|
||
|
|
|
||
|
|
const jsonData = await response.json();
|
||
|
|
test.info().annotations.push({
|
||
|
|
type: 'info',
|
||
|
|
description: `授课记录 API 响应:${JSON.stringify(jsonData).substring(0, 200)}`,
|
||
|
|
});
|
||
|
|
} catch (e) {
|
||
|
|
test.info().annotations.push({
|
||
|
|
type: 'warning',
|
||
|
|
description: '授课记录 API 请求未捕获到',
|
||
|
|
});
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
test('验证任务列表 API 调用', async ({ page }) => {
|
||
|
|
await page.goto('/teacher/tasks');
|
||
|
|
|
||
|
|
try {
|
||
|
|
const [response] = await Promise.all([
|
||
|
|
page.waitForResponse(/.*\/teacher\/tasks.*/, { timeout: 10000 }),
|
||
|
|
]);
|
||
|
|
|
||
|
|
expect(response.status()).toBe(200);
|
||
|
|
|
||
|
|
const jsonData = await response.json();
|
||
|
|
test.info().annotations.push({
|
||
|
|
type: 'info',
|
||
|
|
description: `任务列表 API 响应:${JSON.stringify(jsonData).substring(0, 200)}`,
|
||
|
|
});
|
||
|
|
} catch (e) {
|
||
|
|
test.info().annotations.push({
|
||
|
|
type: 'warning',
|
||
|
|
description: '任务列表 API 请求未捕获到',
|
||
|
|
});
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
test('验证课表 API 调用', async ({ page }) => {
|
||
|
|
await page.goto('/teacher/schedule');
|
||
|
|
|
||
|
|
try {
|
||
|
|
const [response] = await Promise.all([
|
||
|
|
page.waitForResponse(/.*\/teacher\/schedules.*/, { timeout: 10000 }),
|
||
|
|
]);
|
||
|
|
|
||
|
|
expect(response.status()).toBe(200);
|
||
|
|
|
||
|
|
const jsonData = await response.json();
|
||
|
|
test.info().annotations.push({
|
||
|
|
type: 'info',
|
||
|
|
description: `课表 API 响应:${JSON.stringify(jsonData).substring(0, 200)}`,
|
||
|
|
});
|
||
|
|
} catch (e) {
|
||
|
|
test.info().annotations.push({
|
||
|
|
type: 'warning',
|
||
|
|
description: '课表 API 请求未捕获到',
|
||
|
|
});
|
||
|
|
}
|
||
|
|
});
|
||
|
|
});
|