Files
gym-manage/gym-manage-coach-uniapp/e2e/specs/coach-smoke.spec.js
T

71 lines
2.3 KiB
JavaScript

const { launchMiniProgram, closeMiniProgram, waitForPage } = require('../helpers/automator');
const LoginPage = require('../pages/LoginPage');
const HomePage = require('../pages/HomePage');
let miniProgram;
let loginPage;
let homePage;
describe('P0 - 教练端冒烟测试', () => {
beforeAll(async () => {
miniProgram = await launchMiniProgram();
loginPage = new LoginPage(miniProgram);
homePage = new HomePage(miniProgram);
}, 120000);
afterAll(async () => {
await closeMiniProgram();
}, 30000);
test('启动小程序 → 应显示登录页', async () => {
const isLogin = await loginPage.isOnLoginPage();
expect(isLogin).toBe(true);
// 验证登录页关键元素存在
const page = await miniProgram.currentPage();
const brandArea = await page.$('.brand-area');
const loginForm = await page.$('.login-form');
const loginBtn = await page.$('.login-btn');
expect(brandArea).not.toBeNull();
expect(loginForm).not.toBeNull();
expect(loginBtn).not.toBeNull();
}, 30000);
test('登录页应包含品牌信息', async () => {
const page = await miniProgram.currentPage();
const appName = await page.$('.app-name');
expect(appName).not.toBeNull();
const nameText = await appName.text();
expect(nameText).toContain('Novalon');
}, 15000);
test('登录 → 应跳转到教练首页', async () => {
await loginPage.login('coach_test1', 'Test@123');
const homePage_ = await loginPage.waitForLoginSuccess(20000);
expect(homePage_.path).toContain('pages/index/index');
}, 60000);
test('首页应显示教练欢迎信息', async () => {
const page = await miniProgram.currentPage();
// 验证欢迎卡片
const greetingCard = await page.$('.greeting-card');
expect(greetingCard).not.toBeNull();
// 验证教练名称存在
const coachName = await homePage.getCoachName();
expect(coachName).toBeTruthy();
}, 15000);
test('首页应显示今日统计信息', async () => {
await homePage.waitForLoad();
const stats = await homePage.getTodayStats();
// 统计数值应为有效数字(0 也是有效的)
expect(stats).toBeDefined();
expect(typeof stats.pending).toBe('string');
expect(typeof stats.inProgress).toBe('string');
expect(typeof stats.ended).toBe('string');
}, 15000);
});