新增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,135 @@
/**
* P0 - 冒烟测试: 启动小程序 → 首页加载 → TabBar 导航切换
*
* 前置条件:
* - 微信开发者工具已打开,CLI 端口 45869
* - 后端服务 http://192.168.110.64:8084 已启动
* - 小程序已编译到 unpackage/dist/dev/mp-weixin
*/
const {
launchMiniProgram,
connectMiniProgram,
waitForPage,
screenshot,
switchTab,
generateTestId
} = require('../helpers/automator');
const HomePage = require('../pages/HomePage');
const SearchPage = require('../pages/SearchPage');
const MyCoursesPage = require('../pages/MyCoursesPage');
const ProfilePage = require('../pages/ProfilePage');
let miniProgram;
const TEST_ID = generateTestId();
describe('P0 - 冒烟测试', () => {
beforeAll(async () => {
console.log(`[P0] 测试 ID: ${TEST_ID}`);
try {
miniProgram = await connectMiniProgram();
console.log('[P0] 已连接小程序');
} catch (e) {
console.log('[P0] 连接失败,尝试启动小程序...');
miniProgram = await launchMiniProgram();
}
// 等待小程序完全启动
await miniProgram.waitFor(3000);
}, 60000);
afterAll(async () => {
if (miniProgram) {
await screenshot(miniProgram, 'member_smoke_final');
// 不要在这里关闭,留给 global-teardown 处理
global.__MINI_PROGRAM__ = miniProgram;
}
});
test('TC-SMOKE-001: 小程序启动并显示首页', async () => {
const page = await miniProgram.currentPage();
console.log(`[TC-SMOKE-001] 当前页面: ${page.path}`);
// 小程序启动后可能显示登录页或首页
// 如果当前是登录页,尝试跳转到首页
if (page.path && page.path.includes('login')) {
console.log('[TC-SMOKE-001] 当前在登录页,尝试跳过...');
try {
// 尝试通过 reLaunch 跳转到首页
await miniProgram.reLaunch('/pages/index/index');
await miniProgram.waitFor(2000);
} catch (e) {
console.warn('[TC-SMOKE-001] reLaunch 失败:', e.message);
}
}
const homePage = new HomePage(miniProgram);
const currentPage = await miniProgram.currentPage();
console.log(`[TC-SMOKE-001] 最终页面: ${currentPage.path}`);
// 验证页面已加载
expect(currentPage.path).toBeTruthy();
});
test('TC-SMOKE-002: 首页加载并包含关键元素', async () => {
let page;
try {
page = await waitForPage(miniProgram, 'pages/index/index');
} catch (e) {
// 如果不在首页,尝试切换
console.log('[TC-SMOKE-002] 切换到首页 Tab...');
await switchTab(miniProgram, 0);
page = await waitForPage(miniProgram, 'pages/index/index');
}
expect(page).toBeTruthy();
expect(page.path).toContain('pages/index/index');
const homePage = new HomePage(miniProgram);
const elements = await homePage.getElements();
console.log(`[TC-SMOKE-002] 首页元素: 轮播图=${elements.bannerCount}, 课程卡片=${elements.courseCardCount}, 导航按钮=${elements.navButtonCount}`);
await screenshot(miniProgram, 'member_smoke_home');
});
test('TC-SMOKE-003: TabBar 导航到课程搜索页', async () => {
await switchTab(miniProgram, 1); // 课程 Tab
const page = await waitForPage(miniProgram, 'pages/search/search', 15000);
expect(page).toBeTruthy();
expect(page.path).toContain('pages/search/search');
const searchPage = new SearchPage(miniProgram);
await screenshot(miniProgram, 'member_smoke_search');
});
test('TC-SMOKE-004: TabBar 导航到我的课程页', async () => {
await switchTab(miniProgram, 2); // 我的课程 Tab
const page = await waitForPage(miniProgram, 'pages/my-courses/my-courses', 15000);
expect(page).toBeTruthy();
expect(page.path).toContain('pages/my-courses/my-courses');
await screenshot(miniProgram, 'member_smoke_my_courses');
});
test('TC-SMOKE-005: TabBar 导航到个人中心页', async () => {
await switchTab(miniProgram, 3); // 我的 Tab
const page = await waitForPage(miniProgram, 'pages/profile/profile', 15000);
expect(page).toBeTruthy();
expect(page.path).toContain('pages/profile/profile');
await screenshot(miniProgram, 'member_smoke_profile');
});
test('TC-SMOKE-006: 从个人中心返回首页', async () => {
await switchTab(miniProgram, 0); // 首页 Tab
const page = await waitForPage(miniProgram, 'pages/index/index', 15000);
expect(page).toBeTruthy();
expect(page.path).toContain('pages/index/index');
console.log('[TC-SMOKE-006] TabBar 导航切换全部完成');
});
});