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