import { TIMEOUTS } from '../../utils/timeouts'; import { test, expect } from '../../utils/test-setup'; // import { EnterpriseMiniPage } from '../../pages/mini/enterprise-mini.page'; /** * 首页导航和交互测试 (Story 13.7) * * 测试目标:验证企业小程序首页 dashboard 的导航和交互功能 * * Playwright MCP 探索结果 (2026-01-14): * - 底部导航正常工作 (首页/人才/订单/数据/设置) * - 人才列表页人才卡片点击可导航到详情页 * - 首页快捷操作按钮未触发跳转(可能为展示用途) * - 首页"查看全部"链接未触发跳转 * - 首页人才卡片未触发跳转 */ // 测试数据常量 const TEST_USER_PHONE = '13800001111'; const TEST_USER_PASSWORD = 'password123'; const TEST_TALENT_NAME = '测试残疾人_1768346782426_12_8219'; // 使用 test.describe.serial 确保测试按顺序执行 test.describe.serial('首页导航和交互测试 - Story 13.7', () => { // 每个测试使用独立的浏览器上下文 test.use({ storageState: undefined }); /** * 测试场景:底部导航 - 点击人才按钮 */ test('应该通过底部导航跳转到人才页面', async ({ enterpriseMiniPage: miniPage }) => { // 1. 登录 await miniPage.goto(); await miniPage.login(TEST_USER_PHONE, TEST_USER_PASSWORD); await miniPage.expectLoginSuccess(); await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM); // 2. 点击底部导航"人才"按钮 await miniPage.clickBottomNav('talent'); // 3. 验证 URL 正确 await miniPage.expectUrl('/pages/yongren/talent/list/index'); // 4. 验证页面标题(仅记录调试信息) await miniPage.expectPageTitle('人才管理'); console.debug('[导航] 底部导航跳转到人才页面 ✓'); }); /** * 测试场景:底部导航 - 点击订单按钮 */ test('应该通过底部导航跳转到订单页面', async ({ enterpriseMiniPage: miniPage }) => { // 1. 登录 await miniPage.goto(); await miniPage.login(TEST_USER_PHONE, TEST_USER_PASSWORD); await miniPage.expectLoginSuccess(); await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM); // 2. 点击底部导航"订单"按钮 await miniPage.clickBottomNav('order'); // 3. 验证 URL 正确 await miniPage.expectUrl('/pages/yongren/order'); // 4. 验证页面标题 await miniPage.expectPageTitle('订单列表'); console.debug('[导航] 底部导航跳转到订单页面 ✓'); }); /** * 测试场景:底部导航 - 点击数据按钮 */ test('应该通过底部导航跳转到数据页面', async ({ enterpriseMiniPage: miniPage }) => { // 1. 登录 await miniPage.goto(); await miniPage.login(TEST_USER_PHONE, TEST_USER_PASSWORD); await miniPage.expectLoginSuccess(); await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM); // 2. 点击底部导航"数据"按钮 await miniPage.clickBottomNav('data'); // 3. 验证 URL 正确 await miniPage.expectUrl('/pages/yongren/data'); console.debug('[导航] 底部导航跳转到数据页面 ✓'); }); /** * 测试场景:底部导航 - 点击设置按钮 */ test('应该通过底部导航跳转到设置页面', async ({ enterpriseMiniPage: miniPage }) => { // 1. 登录 await miniPage.goto(); await miniPage.login(TEST_USER_PHONE, TEST_USER_PASSWORD); await miniPage.expectLoginSuccess(); await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM); // 2. 点击底部导航"设置"按钮 await miniPage.clickBottomNav('settings'); // 3. 验证 URL 正确 await miniPage.expectUrl('/pages/yongren/settings'); console.debug('[导航] 底部导航跳转到设置页面 ✓'); }); /** * 测试场景:返回首页功能 */ test('应该可以通过底部导航首页按钮返回首页', async ({ enterpriseMiniPage: miniPage }) => { const page = miniPage.page; // 1. 登录 await miniPage.goto(); await miniPage.login(TEST_USER_PHONE, TEST_USER_PASSWORD); await miniPage.expectLoginSuccess(); await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM); // 2. 先导航到其他页面(人才页面) await miniPage.clickBottomNav('talent'); await miniPage.expectUrl('/pages/yongren/talent/list/index'); // 3. 返回首页 await miniPage.goBackToHome(); // 4. 验证首页元素正确显示 const dashboard = page.getByText('分配人才'); await expect(dashboard).toBeVisible(); console.debug('[导航] 返回首页 ✓'); }); /** * 测试场景:人才卡片点击导航 */ test('应该点击人才卡片跳转到人才详情页', async ({ enterpriseMiniPage: miniPage }) => { // 1. 登录 await miniPage.goto(); await miniPage.login(TEST_USER_PHONE, TEST_USER_PASSWORD); await miniPage.expectLoginSuccess(); await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM); // 2. 导航到人才列表页面 await miniPage.clickBottomNav('talent'); await miniPage.expectUrl('/pages/yongren/talent/list/index'); // 3. 点击人才卡片 await miniPage.clickTalentCardFromList(TEST_TALENT_NAME); // 4. 验证跳转到详情页 await miniPage.expectUrl('/pages/yongren/talent/detail/index'); // 5. 验证详情页面显示正确的人才信息 await miniPage.expectTalentDetailInfo(TEST_TALENT_NAME); console.debug('[导航] 人才卡片点击跳转到详情页 ✓'); }); /** * 测试场景:完整导航流程 * 验证首页 → 人才列表 → 人才详情 → 返回首页的完整流程 */ test('应该支持完整的导航流程:首页→人才列表→详情→首页', async ({ enterpriseMiniPage: miniPage }) => { const page = miniPage.page; // 1. 登录 await miniPage.goto(); await miniPage.login(TEST_USER_PHONE, TEST_USER_PASSWORD); await miniPage.expectLoginSuccess(); await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM); // 2. 从首页导航到人才列表 await miniPage.clickBottomNav('talent'); await page.waitForURL( url => url.hash.includes('/pages/yongren/talent/list/index'), { timeout: TIMEOUTS.PAGE_LOAD } ); // 3. 点击人才卡片进入详情页 await miniPage.clickTalentCardFromList(TEST_TALENT_NAME); await miniPage.expectUrl('/pages/yongren/talent/detail/index'); // 4. 返回首页 await miniPage.clickBottomNav('home'); await page.waitForURL( url => url.hash.includes('/pages/yongren/dashboard/index'), { timeout: TIMEOUTS.PAGE_LOAD } ); // 5. 验证首页数据正常显示 const dashboard = page.getByText('分配人才'); await expect(dashboard).toBeVisible(); console.debug('[导航] 完整导航流程 ✓'); }); });