Files
gym-manage/gym-manage-web/e2e/smoke/gym-smoke.spec.ts
T

105 lines
3.9 KiB
TypeScript

import { test, expect } from '@playwright/test';
test.describe('Gym模块冒烟测试', () => {
test.use({ storageState: { cookies: [], origins: [] } });
test.beforeEach(async ({ page }) => {
await test.step('导航到登录页面', async () => {
await page.goto('/login');
await page.waitForLoadState('networkidle');
});
await test.step('输入登录信息', async () => {
await page.fill('input[type="text"]', 'admin');
await page.fill('input[type="password"]', 'Test@123');
});
await test.step('点击登录按钮并等待跳转', async () => {
await page.click('button:has-text("登录")');
await page.waitForURL(/.*dashboard/, { timeout: 30000 });
await page.waitForLoadState('networkidle');
});
await test.step('验证登录成功', async () => {
await expect(page).toHaveURL(/.*dashboard/);
console.log('管理员登录成功,进入Dashboard');
});
});
test('会员管理页面加载', async ({ page }) => {
await test.step('导航到会员管理页面', async () => {
await page.goto('/members');
await page.waitForURL('**/members', { timeout: 30000 });
await page.waitForLoadState('networkidle');
});
await test.step('验证表格可见', async () => {
const table = page.locator('.el-table');
await expect(table).toBeVisible({ timeout: 15000 });
console.log('会员管理页面表格已加载');
});
await test.step('验证搜索框可见', async () => {
const searchInput = page.getByPlaceholder('搜索会员编号/昵称/手机号');
await expect(searchInput).toBeVisible({ timeout: 5000 });
console.log('会员管理页面功能元素正常');
});
});
test('团课管理页面加载', async ({ page }) => {
await test.step('导航到团课管理页面', async () => {
await page.goto('/courses');
await page.waitForURL('**/courses', { timeout: 30000 });
await page.waitForLoadState('networkidle');
});
await test.step('验证表格可见', async () => {
const table = page.locator('.el-table');
await expect(table).toBeVisible({ timeout: 15000 });
console.log('团课管理页面表格已加载');
});
await test.step('验证新增按钮可见', async () => {
const addButton = page.getByRole('button', { name: '新增团课' });
await expect(addButton).toBeVisible({ timeout: 5000 });
console.log('团课管理页面功能元素正常');
});
});
test('教练管理页面加载', async ({ page }) => {
await test.step('导航到教练管理页面', async () => {
await page.goto('/coach');
await page.waitForURL('**/coach', { timeout: 30000 });
await page.waitForLoadState('networkidle');
});
await test.step('验证表格可见', async () => {
const table = page.locator('.el-table');
await expect(table).toBeVisible({ timeout: 15000 });
console.log('教练管理页面表格已加载');
});
await test.step('验证新增按钮可见', async () => {
const addButton = page.getByRole('button', { name: '新增教练' });
await expect(addButton).toBeVisible({ timeout: 5000 });
console.log('教练管理页面功能元素正常');
});
});
test('数据统计页面加载', async ({ page }) => {
await test.step('导航到数据统计页面', async () => {
await page.goto('/statistics');
await page.waitForURL('**/statistics', { timeout: 30000 });
await page.waitForLoadState('networkidle');
});
await test.step('验证统计卡片可见', async () => {
const statCards = page.locator('.stat-card');
await expect(statCards.first()).toBeVisible({ timeout: 15000 });
const cardCount = await statCards.count();
expect(cardCount).toBeGreaterThanOrEqual(4);
console.log(`数据统计页面加载成功,共 ${cardCount} 个统计卡片`);
});
});
});