Files
gym-manage/gym-manage-uniapp/e2e/specs/member-profile.spec.js
T

125 lines
4.0 KiB
JavaScript

/**
* P2 - 个人中心测试: 个人中心 → 查看会员信息
*
* 前置条件:
* - 微信开发者工具已打开,CLI 端口 45869
* - 后端服务 http://192.168.110.64:8084 已启动
* - 用户已登录状态
*/
const {
launchMiniProgram,
connectMiniProgram,
waitForPage,
screenshot,
switchTab,
generateTestId
} = require('../helpers/automator');
const ProfilePage = require('../pages/ProfilePage');
const MyCoursesPage = require('../pages/MyCoursesPage');
let miniProgram;
const TEST_ID = generateTestId();
describe('P2 - 个人中心测试', () => {
beforeAll(async () => {
console.log(`[P2] 测试 ID: ${TEST_ID}`);
try {
miniProgram = await connectMiniProgram();
console.log('[P2] 已连接小程序');
} catch (e) {
console.log('[P2] 连接失败,尝试启动小程序...');
miniProgram = await launchMiniProgram();
}
await miniProgram.waitFor(3000);
// 确保已登录状态
try {
const page = await miniProgram.currentPage();
if (page.path && page.path.includes('login')) {
await miniProgram.reLaunch('/pages/index/index');
await miniProgram.waitFor(2000);
}
} catch (e) {
// ignore
}
}, 60000);
afterAll(async () => {
if (miniProgram) {
await screenshot(miniProgram, 'member_profile_final');
global.__MINI_PROGRAM__ = miniProgram;
}
});
test('TC-PROFILE-001: 导航到个人中心', async () => {
await switchTab(miniProgram, 3);
const page = await waitForPage(miniProgram, 'pages/profile/profile', 15000);
expect(page).toBeTruthy();
expect(page.path).toContain('pages/profile/profile');
console.log('[TC-PROFILE-001] 成功进入个人中心');
await screenshot(miniProgram, `member_profile_landing_${TEST_ID}`);
});
test('TC-PROFILE-002: 获取会员信息', async () => {
const profilePage = new ProfilePage(miniProgram);
const name = await profilePage.getMemberName();
console.log(`[TC-PROFILE-002] 会员名称: "${name}"`);
// 验证至少能读到页面数据
const info = await profilePage.getProfileInfo();
console.log('[TC-PROFILE-002] 会员完整信息:', JSON.stringify(info));
// 个人中心页面应能正确加载
await screenshot(miniProgram, `member_profile_info_${TEST_ID}`);
});
test('TC-PROFILE-003: 获取菜单项', async () => {
const profilePage = new ProfilePage(miniProgram);
const menuItems = await profilePage.getMenuItems();
console.log(`[TC-PROFILE-003] 菜单项数量: ${menuItems.length}`);
await screenshot(miniProgram, `member_profile_menu_${TEST_ID}`);
});
test('TC-PROFILE-004: 从个人中心跳转到我的课程', async () => {
const profilePage = new ProfilePage(miniProgram);
await profilePage.navigateToMyCourses();
const page = await waitForPage(miniProgram, 'pages/my-courses/my-courses', 15000);
expect(page).toBeTruthy();
expect(page.path).toContain('pages/my-courses/my-courses');
console.log('[TC-PROFILE-004] 成功从个人中心跳转到我的课程');
await screenshot(miniProgram, `member_profile_to_courses_${TEST_ID}`);
});
test('TC-PROFILE-005: 从我的课程返回个人中心', async () => {
const myCoursesPage = new MyCoursesPage(miniProgram);
await myCoursesPage.navigateToProfile();
const page = await waitForPage(miniProgram, 'pages/profile/profile', 15000);
expect(page).toBeTruthy();
expect(page.path).toContain('pages/profile/profile');
console.log('[TC-PROFILE-005] 成功从我的课程返回个人中心');
await screenshot(miniProgram, `member_profile_returned_${TEST_ID}`);
});
test('TC-PROFILE-006: 个人中心下拉刷新', async () => {
const profilePage = new ProfilePage(miniProgram);
await profilePage.pullDownRefresh();
// 验证页面仍正常加载
const page = await miniProgram.currentPage();
expect(page.path).toContain('pages/profile/profile');
console.log('[TC-PROFILE-006] 个人中心下拉刷新完成');
await screenshot(miniProgram, `member_profile_refreshed_${TEST_ID}`);
});
});