Status: backlog
作为测试开发者, 我想要验证企业小程序订单列表页的完整功能, 以便确保用户能够正确查看、筛选和搜索订单信息,并且后台编辑后能正确同步。
Given 企业用户已登录小程序 When 进入订单列表页 Then 测试应验证以下功能:
Given 订单列表页已加载 When 使用订单状态筛选器 Then 测试应验证以下场景:
Given 订单列表显示多个订单 When 查看订单卡片 Then 测试应验证以下字段:
Given 订单列表页已加载 When 使用订单搜索功能 Then 测试应验证以下场景:
Given 后台已创建订单 When 在后台编辑订单信息 Then 测试应验证以下场景:
Given 订单列表包含多个订单 When 订单数量超过单页显示数量 Then 测试应验证以下功能:
Given 订单列表已加载 When 用户与订单列表交互 Then 测试应验证以下功能:
Given 遵循项目测试规范 When 编写测试代码 Then 代码应符合以下标准:
order-list-validation.spec.tspnpm typecheck 类型检查[ ] 任务 1: 创建订单列表验证测试文件 (AC: #8)
web/tests/e2e/specs/cross-platform/order-list-validation.spec.ts[ ] 任务 2: 实现订单列表基础功能测试 (AC: #1, #7)
[ ] 任务 3: 实现订单状态筛选测试 (AC: #2)
[ ] 任务 4: 实现订单搜索测试 (AC: #4)
[ ] 任务 5: 实现后台编辑后订单列表同步测试 (AC: #3, #5)
[ ] 任务 6: 实现分页功能测试 (AC: #6)(如适用)
pnpm typecheck 验证类型检查Epic 13: 跨端数据同步测试 (Epic E)
Epic 13 Story 依赖关系:
Story 13.1: 后台创建订单 → 企业小程序**订单列表**验证 ✅
Story 13.2: 后台编辑订单 → 企业小程序验证
Story 13.3: 后台添加人员 → 人才小程序验证
Story 13.4: 后台更新状态 → 双小程序验证
Story 13.5: 跨端测试稳定性验证
Story 13.6: 后台添加人员 → 企业小程序**首页 dashboard** 人才数据验证 ✅
Story 13.7: 企业小程序首页 **导航和交互**测试
Story 13.8: 企业小程序**订单列表页**完整验证 ← 当前 Story
Story 13.9: 人才小程序**人才列表页**完整验证
| Story | 验证目标 | 测试场景 |
|---|---|---|
| Story 13.1 | 后台创建订单 → 企业小程序订单列表验证 | 验证新订单出现在列表中 |
| Story 13.2 | 后台编辑订单 → 企业小程序订单列表验证 | 验证编辑后订单信息更新 |
| Story 13.8 | 订单列表页完整功能验证 | 验证列表页所有功能:筛选、搜索、分页、字段显示、交互 |
Story 13.8 是 Story 13.1 和 13.2 的扩展和深化:
订单列表页结构(待验证):
┌─────────────────────────────────┐
│ 订单列表 (mini-order-list) │
├─────────────────────────────────┤
│ 筛选区域: │
│ ┌─────────┬─────────┬─────────┐│
│ │状态筛选 │搜索框 │重置按钮 ││
│ └─────────┴─────────┴─────────┘│
├─────────────────────────────────┤
│ 订单列表: │
│ ┌─────────────────────────────┐│
│ │ 订单卡片 1 ││
│ │ - 订单名称 ││
│ │ - 订单状态徽章 ││
│ │ - 工作状态徽章 ││
│ │ - 人数 / 日期 ││
│ └─────────────────────────────┘│
│ ┌─────────────────────────────┐│
│ │ 订单卡片 2 ││
│ │ - ... ││
│ └─────────────────────────────┘│
├─────────────────────────────────┤
│ 分页控件(如适用) │
│ ┌────┬────┬────┬────┬────┐ │
│ │< 1 │ 2 │ 3 │... │ > │ │
│ └────┴────┴────┴────┴────┘ │
└─────────────────────────────────┘
需要添加以下方法到 enterprise-mini.page.ts:
/**
* 获取订单列表
*/
async getOrderList(): Promise<OrderListItem[]> {
// 实现获取订单列表的逻辑
}
/**
* 按状态筛选订单
* @param status 订单状态
*/
async filterByOrderStatus(status: string): Promise<void> {
// 实现状态筛选逻辑
}
/**
* 搜索订单
* @param keyword 搜索关键词
*/
async searchOrders(keyword: string): Promise<void> {
// 实现搜索逻辑
}
/**
* 重置筛选和搜索
*/
async resetFilters(): Promise<void> {
// 实现重置逻辑
}
/**
* 获取订单卡片详细信息
* @param orderName 订单名称
*/
async getOrderCardInfo(orderName: string): Promise<OrderCardInfo> {
// 实现获取订单卡片信息的逻辑
}
订单卡片数据结构:
interface OrderCardInfo {
/** 订单 ID */
orderId: string;
/** 订单名称 */
orderName: string;
/** 订单编号 */
orderNumber: string;
/** 订单状态 */
orderStatus: '草稿' | '已确认' | '进行中' | '已完成';
/** 工作状态 */
workStatus: '未就业' | '待就业' | '已就业' | '已离职';
/** 关联人数 */
personCount: number;
/** 预计开始日期 */
expectedStartDate: string;
/** 企业名称 */
companyName?: string;
}
订单列表页选择器(待 Playwright MCP 验证):
| 功能 | data-testid |
|------|-------------|
| 订单列表容器 | mini-order-list |
| 订单卡片 | mini-order-card |
| 订单名称 | mini-order-name |
| 订单编号 | mini-order-number |
| 订单状态 | mini-order-status |
| 工作状态 | mini-work-status |
| 人数 | mini-person-count |
| 日期 | mini-order-date |
| 状态筛选器 | mini-order-status-filter |
| 搜索框 | mini-order-search |
| 重置按钮 | mini-filter-reset |
前置条件:
测试数据准备:
// 创建不同状态的订单用于筛选测试
const orders = {
draft: await createOrder({ status: '草稿', name: `草稿订单_${Date.now()}` }),
confirmed: await createOrder({ status: '已确认', name: `已确认订单_${Date.now()}` }),
inProgress: await createOrder({ status: '进行中', name: `进行中订单_${Date.now()}` }),
completed: await createOrder({ status: '已完成', name: `已完成订单_${Date.now()}` }),
};
后台编辑后验证小程序同步:
test('后台修改订单名称后小程序同步', async ({ orderManagementPage, enterpriseMiniPage }) => {
// 1. 后台创建订单
const originalName = `测试订单_${Date.now()}`;
await orderManagementPage.createOrder({ name: originalName });
// 2. 小程序验证订单显示
await enterpriseMiniPage.goto();
await enterpriseMiniPage.login(TEST_USER.phone, TEST_USER.password);
await enterpriseMiniPage.gotoOrderList();
let orderInfo = await enterpriseMiniPage.getOrderCardInfo(originalName);
expect(orderInfo.orderName).toBe(originalName);
// 3. 后台修改订单名称
const updatedName = `${originalName}_更新`;
await orderManagementPage.editOrder(originalName, { name: updatedName });
// 4. 小程序验证订单名称更新
await enterpriseMiniPage.waitForOrderUpdate(originalName, TIMEOUTS.SYNC);
orderInfo = await enterpriseMiniPage.getOrderCardInfo(updatedName);
expect(orderInfo.orderName).toBe(updatedName);
});
架构文档:
_bmad-output/planning-artifacts/epics.md#Epic 13_bmad-output/project-context.mddocs/standards/e2e-radix-testing.md相关 Story 文档:
10-2-order-list-tests.md (后台订单列表测试)12-4-enterprise-mini-page-object.md (企业小程序 Page Object)12-5-enterprise-mini-login.md (企业小程序登录测试)13-1-order-create-sync.md (订单创建同步测试)13-2-order-edit-sync.md (订单编辑同步测试)Created by create-story workflow
Story 13.8 created - not yet started
Story 13.8 创建完成,状态:backlog
Created files:
/mnt/code/188-179-template-6/_bmad-output/implementation-artifacts/13-8-order-list-validation.md