新增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,114 @@
const { sleep } = require('../helpers/automator');
class HomePage {
/**
* @param {object} miniProgram - miniprogram-automator 实例
*/
constructor(miniProgram) {
this.mp = miniProgram;
}
/**
* 等待首页加载完成
*/
async waitForLoad() {
const page = await this.mp.currentPage();
await page.waitFor('.greeting-card', { timeout: 10000 });
await page.waitFor('.stats-card', { timeout: 5000 });
return page;
}
/**
* 获取当前登录的教练名字
* @returns {Promise<string>}
*/
async getCoachName() {
const page = await this.mp.currentPage();
try {
const nameEl = await page.$('.coach-name');
if (nameEl) {
const text = await nameEl.text();
return (text || '').replace(' 教练', '').trim();
}
} catch (e) {
// 忽略
}
return null;
}
/**
* 获取今日统计信息(待开课、进行中、已结束)
* @returns {Promise<{pending: string, inProgress: string, ended: string}>}
*/
async getTodayStats() {
const page = await this.mp.currentPage();
try {
const statNumbers = await page.$$('.stat-number');
const stats = {};
if (statNumbers.length >= 3) {
stats.pending = (await statNumbers[0].text()).trim();
stats.inProgress = (await statNumbers[1].text()).trim();
stats.ended = (await statNumbers[2].text()).trim();
}
return stats;
} catch (e) {
return { pending: '0', inProgress: '0', ended: '0' };
}
}
/**
* 导航到课程列表页
*/
async navigateToCourseList() {
const page = await this.mp.currentPage();
// 点击"我的团课"入口卡片
const entryCards = await page.$$('.entry-card');
if (entryCards.length > 0) {
await entryCards[0].tap();
} else {
// 备用:通过 URL 导航
await this.mp.navigateTo('/pages/course-list/course-list');
}
await sleep(2000);
return this.mp.currentPage();
}
/**
* 导航到个人中心
*/
async navigateToProfile() {
const page = await this.mp.currentPage();
const entryCards = await page.$$('.entry-card');
if (entryCards.length >= 2) {
await entryCards[1].tap();
} else {
await this.mp.navigateTo('/pages/profile/profile');
}
await sleep(2000);
return this.mp.currentPage();
}
/**
* 验证首页关键元素存在
*/
async verifyPageElements() {
const page = await this.mp.currentPage();
const checks = {};
try {
checks.greetingCard = !!(await page.$('.greeting-card'));
} catch (e) { checks.greetingCard = false; }
try {
checks.statsCard = !!(await page.$('.stats-card'));
} catch (e) { checks.statsCard = false; }
try {
checks.navTitle = !!(await page.$('.nav-title'));
} catch (e) { checks.navTitle = false; }
return checks;
}
}
module.exports = HomePage;