/** * UniApp User Profile页面E2E测试 * * 测试个人中心页面的所有功能和交互 * * @tags @profile @uniapp @e2e @page */ import { test, expect } from '@playwright/test'; import { TestLogger } from '../../core/test-logger.js'; test.describe('E2E: UniApp User Profile页面', () => { let logger: TestLogger; test.beforeEach(async ({ page }) => { logger = new TestLogger(); await page.goto('http://localhost:8081/pages/user/index'); await page.waitForLoadState('networkidle'); await page.waitForTimeout(3000); await page.waitForSelector('#app', { state: 'attached', timeout: 10000 }); await page.waitForTimeout(2000); }); test('应该显示个人中心页面内容 @smoke', async ({ page }) => { const appElement = page.locator('#app'); await expect(appElement).toBeVisible({ timeout: 10000 }); }); test('应该显示用户头像 @smoke', async ({ page }) => { await page.waitForTimeout(3000); const avatar = page.locator('.user-avatar, .avatar-placeholder'); const isVisible = await avatar.isVisible().catch(() => false); if (isVisible) { await expect(avatar).toBeVisible(); } else { logger.info('用户头像可能尚未加载'); } }); test('应该显示用户信息 @smoke', async ({ page }) => { await page.waitForTimeout(3000); const userName = page.locator('.user-name'); const isVisible = await userName.isVisible().catch(() => false); if (isVisible) { await expect(userName).toBeVisible(); } else { logger.info('用户信息可能尚未加载'); } }); test('应该显示用户统计数据 @regression', async ({ page }) => { await page.waitForTimeout(5000); const statValue = page.locator('.stat-value'); const isVisible = await statValue.isVisible().catch(() => false); if (isVisible) { await expect(statValue).toBeVisible(); } else { logger.info('用户统计数据可能尚未加载'); } }); test('应该显示菜单项 @regression', async ({ page }) => { await page.waitForTimeout(5000); const menuItem = page.locator('.menu-item'); const isVisible = await menuItem.isVisible().catch(() => false); if (isVisible) { await expect(menuItem).toBeVisible(); } else { logger.info('菜单项可能尚未加载'); } }); test('应该能够点击菜单项 @critical', async ({ page }) => { await page.waitForTimeout(5000); const menuItem = page.locator('.menu-item').first(); const isVisible = await menuItem.isVisible().catch(() => false); if (isVisible) { await menuItem.click(); await page.waitForTimeout(500); await expect(menuItem).toBeVisible(); } else { logger.info('菜单项可能尚未加载'); } }); test('应该显示设置选项 @regression', async ({ page }) => { await page.waitForTimeout(5000); const settingsItem = page.locator('.settings-item'); const isVisible = await settingsItem.isVisible().catch(() => false); if (isVisible) { await expect(settingsItem).toBeVisible(); } else { logger.info('设置选项可能尚未加载'); } }); test('应该在不同视口下正常显示 @responsive', async ({ page }) => { await page.setViewportSize({ width: 375, height: 667 }); await page.goto('http://localhost:8081/pages/user/index'); await page.waitForLoadState('networkidle'); await page.waitForTimeout(5000); const appElement = page.locator('#app'); await expect(appElement).toBeVisible({ timeout: 10000 }); }); });