|
|
@@ -1,44 +1,28 @@
|
|
|
import { TIMEOUTS } from '../../utils/timeouts';
|
|
|
import { test, expect } from '../../utils/test-setup';
|
|
|
+import { TEST_CREDENTIALS, TEST_TALENT, NAVIGATION_TIMEOUT_MS } from '../../constants/test-data';
|
|
|
|
|
|
/**
|
|
|
* 首页导航和交互测试 (Story 13.7)
|
|
|
*
|
|
|
* 测试目标:验证企业小程序首页 dashboard 的导航和交互功能
|
|
|
*
|
|
|
- * Playwright MCP 探索结果 (2026-01-14):
|
|
|
+ * 功能状态 (2026-01-15):
|
|
|
* - 底部导航正常工作 (首页/人才/订单/数据/设置)
|
|
|
* - 人才列表页人才卡片点击可导航到详情页
|
|
|
- * - 首页快捷操作按钮未触发跳转(可能为展示用途)
|
|
|
- * - 首页"查看全部"链接未触发跳转
|
|
|
- * - 首页人才卡片未触发跳转
|
|
|
- *
|
|
|
- * 运行时错误 (2026-01-14):
|
|
|
- * - 首页缺少 @d8d/yongren-dashboard-ui/pages/Dashboard/Dashboard 模块
|
|
|
- * - 这导致首页无法正常加载,影响相关测试
|
|
|
- *
|
|
|
- * 测试策略:
|
|
|
- * 1. 测试已实现的底部导航功能
|
|
|
- * 2. 跳过未实现的首页快捷操作、"查看全部"、首页人才卡片功能
|
|
|
- * 3. 测试人才列表页的卡片点击功能(已实现)
|
|
|
+ * - 首页快捷操作按钮已实现(人才库、数据统计、订单管理、设置)
|
|
|
+ * - 首页"查看全部"链接已实现
|
|
|
+ * - 首页人才卡片已实现
|
|
|
*
|
|
|
* Acceptance Criteria:
|
|
|
- * AC1: 快捷操作按钮导航测试(人才库、数据统计、订单管理、设置)- 跳过(未实现)
|
|
|
- * AC2: "查看全部"链接测试 - 跳过(未实现)
|
|
|
- * AC3: 人才卡片点击测试 - 部分实现(列表页可点击,首页不可点击)
|
|
|
+ * AC1: 快捷操作按钮导航测试(人才库、数据统计、订单管理、设置)
|
|
|
+ * AC2: "查看全部"链接测试
|
|
|
+ * AC3: 人才卡片点击测试(列表页和首页均可点击)
|
|
|
* AC4: 页面跳转验证 - 通过底部导航验证
|
|
|
- * AC5: 交互响应时间(2秒内)- 验证已实现功能
|
|
|
- * AC6: 代码质量标准(TIMEOUTS 常量、data-testid 选择器、TypeScript 类型安全)- 已遵守
|
|
|
+ * AC5: 交互响应时间(2秒内)
|
|
|
+ * AC6: 代码质量标准(TIMEOUTS 常量、data-testid 选择器、TypeScript 类型安全)
|
|
|
*/
|
|
|
|
|
|
-// 测试数据常量
|
|
|
-const TEST_USER_PHONE = '13800001111';
|
|
|
-const TEST_USER_PASSWORD = 'password123';
|
|
|
-const TEST_TALENT_NAME = '测试残疾人_1768346782426_12_8219';
|
|
|
-
|
|
|
-// 导航超时阈值(AC5: 2秒内)
|
|
|
-const NAVIGATION_TIMEOUT_MS = 2000;
|
|
|
-
|
|
|
// 使用 test.describe.serial 确保测试按顺序执行
|
|
|
test.describe.serial('首页导航和交互测试 - Story 13.7', () => {
|
|
|
// 每个测试使用独立的浏览器上下文
|
|
|
@@ -53,7 +37,7 @@ test.describe.serial('首页导航和交互测试 - Story 13.7', () => {
|
|
|
|
|
|
// 1. 登录
|
|
|
await miniPage.goto();
|
|
|
- await miniPage.login(TEST_USER_PHONE, TEST_USER_PASSWORD);
|
|
|
+ await miniPage.login(TEST_CREDENTIALS.ENTERPRISE_MINI.phone, TEST_CREDENTIALS.ENTERPRISE_MINI.password);
|
|
|
await miniPage.expectLoginSuccess();
|
|
|
await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM);
|
|
|
|
|
|
@@ -78,7 +62,7 @@ test.describe.serial('首页导航和交互测试 - Story 13.7', () => {
|
|
|
|
|
|
// 1. 登录
|
|
|
await miniPage.goto();
|
|
|
- await miniPage.login(TEST_USER_PHONE, TEST_USER_PASSWORD);
|
|
|
+ await miniPage.login(TEST_CREDENTIALS.ENTERPRISE_MINI.phone, TEST_CREDENTIALS.ENTERPRISE_MINI.password);
|
|
|
await miniPage.expectLoginSuccess();
|
|
|
await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM);
|
|
|
|
|
|
@@ -103,7 +87,7 @@ test.describe.serial('首页导航和交互测试 - Story 13.7', () => {
|
|
|
|
|
|
// 1. 登录
|
|
|
await miniPage.goto();
|
|
|
- await miniPage.login(TEST_USER_PHONE, TEST_USER_PASSWORD);
|
|
|
+ await miniPage.login(TEST_CREDENTIALS.ENTERPRISE_MINI.phone, TEST_CREDENTIALS.ENTERPRISE_MINI.password);
|
|
|
await miniPage.expectLoginSuccess();
|
|
|
await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM);
|
|
|
|
|
|
@@ -125,7 +109,7 @@ test.describe.serial('首页导航和交互测试 - Story 13.7', () => {
|
|
|
|
|
|
// 1. 登录
|
|
|
await miniPage.goto();
|
|
|
- await miniPage.login(TEST_USER_PHONE, TEST_USER_PASSWORD);
|
|
|
+ await miniPage.login(TEST_CREDENTIALS.ENTERPRISE_MINI.phone, TEST_CREDENTIALS.ENTERPRISE_MINI.password);
|
|
|
await miniPage.expectLoginSuccess();
|
|
|
await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM);
|
|
|
|
|
|
@@ -147,7 +131,7 @@ test.describe.serial('首页导航和交互测试 - Story 13.7', () => {
|
|
|
|
|
|
// 1. 登录
|
|
|
await miniPage.goto();
|
|
|
- await miniPage.login(TEST_USER_PHONE, TEST_USER_PASSWORD);
|
|
|
+ await miniPage.login(TEST_CREDENTIALS.ENTERPRISE_MINI.phone, TEST_CREDENTIALS.ENTERPRISE_MINI.password);
|
|
|
await miniPage.expectLoginSuccess();
|
|
|
await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM);
|
|
|
|
|
|
@@ -174,7 +158,7 @@ test.describe.serial('首页导航和交互测试 - Story 13.7', () => {
|
|
|
|
|
|
// 1. 登录
|
|
|
await miniPage.goto();
|
|
|
- await miniPage.login(TEST_USER_PHONE, TEST_USER_PASSWORD);
|
|
|
+ await miniPage.login(TEST_CREDENTIALS.ENTERPRISE_MINI.phone, TEST_CREDENTIALS.ENTERPRISE_MINI.password);
|
|
|
await miniPage.expectLoginSuccess();
|
|
|
await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM);
|
|
|
|
|
|
@@ -184,14 +168,14 @@ test.describe.serial('首页导航和交互测试 - Story 13.7', () => {
|
|
|
|
|
|
// 3. 点击人才卡片
|
|
|
const startTime = Date.now();
|
|
|
- await miniPage.clickTalentCardFromList(TEST_TALENT_NAME);
|
|
|
+ await miniPage.clickTalentCardFromList(TEST_TALENT.NAME);
|
|
|
const navigationTime = Date.now() - startTime;
|
|
|
|
|
|
// 4. 验证跳转到详情页
|
|
|
await miniPage.expectUrl('/pages/yongren/talent/detail/index');
|
|
|
|
|
|
// 5. 验证详情页面显示正确的人才信息
|
|
|
- await miniPage.expectTalentDetailInfo(TEST_TALENT_NAME);
|
|
|
+ await miniPage.expectTalentDetailInfo(TEST_TALENT.NAME);
|
|
|
|
|
|
// 6. 验证响应时间(AC5: 2秒内)
|
|
|
expect(navigationTime).toBeLessThanOrEqual(NAVIGATION_TIMEOUT_MS);
|
|
|
@@ -209,7 +193,7 @@ test.describe.serial('首页导航和交互测试 - Story 13.7', () => {
|
|
|
|
|
|
// 1. 登录
|
|
|
await miniPage.goto();
|
|
|
- await miniPage.login(TEST_USER_PHONE, TEST_USER_PASSWORD);
|
|
|
+ await miniPage.login(TEST_CREDENTIALS.ENTERPRISE_MINI.phone, TEST_CREDENTIALS.ENTERPRISE_MINI.password);
|
|
|
await miniPage.expectLoginSuccess();
|
|
|
await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM);
|
|
|
|
|
|
@@ -221,7 +205,7 @@ test.describe.serial('首页导航和交互测试 - Story 13.7', () => {
|
|
|
);
|
|
|
|
|
|
// 3. 点击人才卡片进入详情页
|
|
|
- await miniPage.clickTalentCardFromList(TEST_TALENT_NAME);
|
|
|
+ await miniPage.clickTalentCardFromList(TEST_TALENT.NAME);
|
|
|
await miniPage.expectUrl('/pages/yongren/talent/detail/index');
|
|
|
|
|
|
// 4. 返回首页
|
|
|
@@ -239,20 +223,11 @@ test.describe.serial('首页导航和交互测试 - Story 13.7', () => {
|
|
|
/**
|
|
|
* AC1.1: 快捷操作按钮 - 人才库按钮测试
|
|
|
* 任务 3.1: 点击人才库按钮跳转到人才库页面
|
|
|
- *
|
|
|
- * 跳过原因:Playwright MCP 探索(2026-01-14)显示首页快捷操作按钮未触发跳转
|
|
|
- * 状态:功能未实现,需要开发团队实现首页快捷操作按钮的导航功能
|
|
|
- *
|
|
|
- * 测试步骤:
|
|
|
- * 1. 登录并进入首页
|
|
|
- * 2. 点击"人才库"快捷操作按钮
|
|
|
- * 3. 验证跳转到人才库页面(URL 和标题)
|
|
|
- * 4. 验证跳转在 2 秒内完成
|
|
|
*/
|
|
|
test('应该通过快捷操作按钮跳转到人才库页面', async ({ enterpriseMiniPage: miniPage }) => {
|
|
|
// 1. 登录
|
|
|
await miniPage.goto();
|
|
|
- await miniPage.login(TEST_USER_PHONE, TEST_USER_PASSWORD);
|
|
|
+ await miniPage.login(TEST_CREDENTIALS.ENTERPRISE_MINI.phone, TEST_CREDENTIALS.ENTERPRISE_MINI.password);
|
|
|
await miniPage.expectLoginSuccess();
|
|
|
await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM);
|
|
|
|
|
|
@@ -276,14 +251,11 @@ test.describe.serial('首页导航和交互测试 - Story 13.7', () => {
|
|
|
/**
|
|
|
* AC1.2: 快捷操作按钮 - 数据统计按钮测试
|
|
|
* 任务 3.2: 点击数据统计按钮跳转到数据统计页面
|
|
|
- *
|
|
|
- * 跳过原因:Playwright MCP 探索(2026-01-14)显示首页快捷操作按钮未触发跳转
|
|
|
- * 状态:功能未实现,需要开发团队实现首页快捷操作按钮的导航功能
|
|
|
*/
|
|
|
test('应该通过快捷操作按钮跳转到数据统计页面', async ({ enterpriseMiniPage: miniPage }) => {
|
|
|
// 1. 登录
|
|
|
await miniPage.goto();
|
|
|
- await miniPage.login(TEST_USER_PHONE, TEST_USER_PASSWORD);
|
|
|
+ await miniPage.login(TEST_CREDENTIALS.ENTERPRISE_MINI.phone, TEST_CREDENTIALS.ENTERPRISE_MINI.password);
|
|
|
await miniPage.expectLoginSuccess();
|
|
|
await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM);
|
|
|
|
|
|
@@ -304,14 +276,11 @@ test.describe.serial('首页导航和交互测试 - Story 13.7', () => {
|
|
|
/**
|
|
|
* AC1.3: 快捷操作按钮 - 订单管理按钮测试
|
|
|
* 任务 3.3: 点击订单管理按钮跳转到订单管理页面
|
|
|
- *
|
|
|
- * 跳过原因:Playwright MCP 探索(2026-01-14)显示首页快捷操作按钮未触发跳转
|
|
|
- * 状态:功能未实现,需要开发团队实现首页快捷操作按钮的导航功能
|
|
|
*/
|
|
|
test('应该通过快捷操作按钮跳转到订单管理页面', async ({ enterpriseMiniPage: miniPage }) => {
|
|
|
// 1. 登录
|
|
|
await miniPage.goto();
|
|
|
- await miniPage.login(TEST_USER_PHONE, TEST_USER_PASSWORD);
|
|
|
+ await miniPage.login(TEST_CREDENTIALS.ENTERPRISE_MINI.phone, TEST_CREDENTIALS.ENTERPRISE_MINI.password);
|
|
|
await miniPage.expectLoginSuccess();
|
|
|
await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM);
|
|
|
|
|
|
@@ -332,14 +301,11 @@ test.describe.serial('首页导航和交互测试 - Story 13.7', () => {
|
|
|
/**
|
|
|
* AC1.4: 快捷操作按钮 - 设置按钮测试
|
|
|
* 任务 3.4: 点击设置按钮跳转到设置页面
|
|
|
- *
|
|
|
- * 跳过原因:Playwright MCP 探索(2026-01-14)显示首页快捷操作按钮未触发跳转
|
|
|
- * 状态:功能未实现,需要开发团队实现首页快捷操作按钮的导航功能
|
|
|
*/
|
|
|
test('应该通过快捷操作按钮跳转到设置页面', async ({ enterpriseMiniPage: miniPage }) => {
|
|
|
// 1. 登录
|
|
|
await miniPage.goto();
|
|
|
- await miniPage.login(TEST_USER_PHONE, TEST_USER_PASSWORD);
|
|
|
+ await miniPage.login(TEST_CREDENTIALS.ENTERPRISE_MINI.phone, TEST_CREDENTIALS.ENTERPRISE_MINI.password);
|
|
|
await miniPage.expectLoginSuccess();
|
|
|
await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM);
|
|
|
|
|
|
@@ -362,14 +328,11 @@ test.describe.serial('首页导航和交互测试 - Story 13.7', () => {
|
|
|
* 任务 4.1: 点击查看全部链接跳转到人才列表页面
|
|
|
* 任务 4.2: 验证跳转后的页面 URL 正确
|
|
|
* 任务 4.3: 验证跳转后的页面标题正确
|
|
|
- *
|
|
|
- * 跳过原因:Playwright MCP 探索(2026-01-14)显示首页"查看全部"链接未触发跳转
|
|
|
- * 状态:功能未实现,需要开发团队实现首页"查看全部"链接的导航功能
|
|
|
*/
|
|
|
test('应该通过查看全部链接跳转到人才列表页面', async ({ enterpriseMiniPage: miniPage }) => {
|
|
|
// 1. 登录
|
|
|
await miniPage.goto();
|
|
|
- await miniPage.login(TEST_USER_PHONE, TEST_USER_PASSWORD);
|
|
|
+ await miniPage.login(TEST_CREDENTIALS.ENTERPRISE_MINI.phone, TEST_CREDENTIALS.ENTERPRISE_MINI.password);
|
|
|
await miniPage.expectLoginSuccess();
|
|
|
await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM);
|
|
|
|
|
|
@@ -393,28 +356,24 @@ test.describe.serial('首页导航和交互测试 - Story 13.7', () => {
|
|
|
/**
|
|
|
* AC3: 首页人才卡片点击测试
|
|
|
* 任务 3(来自人才卡片测试): 点击首页人才卡片跳转到人才详情页
|
|
|
- *
|
|
|
- * 跳过原因:Playwright MCP 探索(2026-01-14)显示首页人才卡片未触发跳转
|
|
|
- * 状态:功能未实现,需要开发团队实现首页人才卡片的导航功能
|
|
|
- * 注意:人才列表页的人才卡片点击功能已正常工作(见上面的测试)
|
|
|
*/
|
|
|
test('应该点击首页人才卡片跳转到人才详情页', async ({ enterpriseMiniPage: miniPage }) => {
|
|
|
// 1. 登录
|
|
|
await miniPage.goto();
|
|
|
- await miniPage.login(TEST_USER_PHONE, TEST_USER_PASSWORD);
|
|
|
+ await miniPage.login(TEST_CREDENTIALS.ENTERPRISE_MINI.phone, TEST_CREDENTIALS.ENTERPRISE_MINI.password);
|
|
|
await miniPage.expectLoginSuccess();
|
|
|
await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM);
|
|
|
|
|
|
// 2. 点击首页人才卡片
|
|
|
const startTime = Date.now();
|
|
|
- await miniPage.clickTalentCardFromDashboard(TEST_TALENT_NAME);
|
|
|
+ await miniPage.clickTalentCardFromDashboard(TEST_TALENT.NAME);
|
|
|
const navigationTime = Date.now() - startTime;
|
|
|
|
|
|
// 3. 验证跳转到人才详情页
|
|
|
await miniPage.expectUrl('/pages/yongren/talent/detail/index');
|
|
|
|
|
|
// 4. 验证详情页面显示正确的人才信息
|
|
|
- await miniPage.expectTalentDetailInfo(TEST_TALENT_NAME);
|
|
|
+ await miniPage.expectTalentDetailInfo(TEST_TALENT.NAME);
|
|
|
|
|
|
// 5. 验证响应时间(AC5: 2秒内)
|
|
|
expect(navigationTime).toBeLessThanOrEqual(NAVIGATION_TIMEOUT_MS);
|