新增e2e测试脚本,修复部分问题
This commit was merged in pull request #51.
This commit is contained in:
@@ -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);
|
||||
});
|
||||
Reference in New Issue
Block a user