新增e2e测试脚本,修复部分问题

This commit was merged in pull request #51.
This commit is contained in:
2026-07-22 20:00:13 +08:00
parent 53d1ce6fb2
commit 4c07ec5455
105 changed files with 21700 additions and 318 deletions
@@ -0,0 +1,148 @@
const { launchMiniProgram, closeMiniProgram, sleep } = require('../helpers/automator');
const LoginPage = require('../pages/LoginPage');
const HomePage = require('../pages/HomePage');
const CourseListPage = require('../pages/CourseListPage');
const CourseDetailPage = require('../pages/CourseDetailPage');
let miniProgram;
let loginPage;
let homePage;
let courseListPage;
let courseDetailPage;
describe('P1 - 教练课程工作流测试', () => {
beforeAll(async () => {
miniProgram = await launchMiniProgram();
loginPage = new LoginPage(miniProgram);
homePage = new HomePage(miniProgram);
courseListPage = new CourseListPage(miniProgram);
courseDetailPage = new CourseDetailPage(miniProgram);
// 先完成登录
await loginPage.login('coach_test1', 'Test@123');
await loginPage.waitForLoginSuccess(20000);
await homePage.waitForLoad();
}, 120000);
afterAll(async () => {
await closeMiniProgram();
}, 30000);
test('从首页导航到课程列表页', async () => {
await homePage.navigateToCourseList();
const page = await miniProgram.currentPage();
expect(page.path).toContain('pages/course-list/course-list');
await courseListPage.waitForLoad();
}, 30000);
test('课程列表页应显示筛选项', async () => {
const page = await miniProgram.currentPage();
// 验证 Tab 筛选栏存在
const tabs = await page.$$('.tab-item');
expect(tabs.length).toBeGreaterThanOrEqual(4);
// 验证 Tab 标签内容
const tabLabels = [];
for (const tab of tabs) {
const textEl = await tab.$('text');
tabLabels.push(textEl ? (await textEl.text()).trim() : '');
}
expect(tabLabels).toContain('全部');
expect(tabLabels).toContain('待开课');
expect(tabLabels).toContain('进行中');
expect(tabLabels).toContain('已结束');
}, 15000);
test('按状态筛选 → 待开课,应显示正确结果', async () => {
await courseListPage.filterByStatus('pending');
const page = await miniProgram.currentPage();
// 验证 active Tab
const activeTab = await page.$('.tab-item.active text');
expect(activeTab).not.toBeNull();
const activeLabel = await activeTab.text();
expect(activeLabel.trim()).toBe('待开课');
// 获取筛选结果并验证状态标签
const courses = await courseListPage.getCourseList();
for (const course of courses) {
// 待开课状态下所有课程的状态应为"正常"
expect(course.status).toBe('正常');
}
}, 20000);
test('按状态筛选 → 全部,应显示所有课程', async () => {
await courseListPage.filterByStatus('all');
const page = await miniProgram.currentPage();
const activeTab = await page.$('.tab-item.active text');
expect(activeTab).not.toBeNull();
const activeLabel = await activeTab.text();
expect(activeLabel.trim()).toBe('全部');
// 确保页面渲染完成
await sleep(1000);
}, 20000);
test('点击课程 → 进入课程详情页', async () => {
// 先切换到全部视图确保有数据
await courseListPage.filterByStatus('all');
await sleep(1000);
const count = await courseListPage.getCourseCount();
if (count === 0) {
console.warn('[WARN] 没有课程数据,跳过课程详情测试');
return;
}
// 点击第一个课程
await courseListPage.clickCourse(0);
const page = await miniProgram.currentPage();
expect(page.path).toContain('pages/course-detail/course-detail');
await courseDetailPage.waitForLoad();
}, 30000);
test('课程详情页应显示课程信息', async () => {
const page = await miniProgram.currentPage();
// 确认当前在课程详情页
if (!page.path.includes('pages/course-detail')) {
// 如果不在详情页,尝试导航到第一个课程
await homePage.navigateToCourseList();
await sleep(1000);
const count = await courseListPage.getCourseCount();
if (count === 0) {
console.warn('[WARN] 没有课程数据,跳过课程详情测试');
return;
}
await courseListPage.clickCourse(0);
await courseDetailPage.waitForLoad();
}
const info = await courseDetailPage.getCourseInfo();
// 课程名应存在
expect(info.courseName).toBeTruthy();
// 时间应存在
expect(info.time).toBeTruthy();
}, 20000);
test('课程详情页应显示学员人数信息', async () => {
const page = await miniProgram.currentPage();
if (!page.path.includes('pages/course-detail')) {
console.warn('[WARN] 不在课程详情页,跳过');
return;
}
const studentInfo = await courseDetailPage.getStudentList();
expect(studentInfo).toBeDefined();
expect(typeof studentInfo.count).toBe('number');
expect(typeof studentInfo.max).toBe('number');
}, 15000);
});