Status: done
作为测试开发者, 我想要编写订单列表查看的 E2E 测试, 以便验证订单列表的基本功能和数据展示。
Given 订单管理 Page Object 已创建 When 编写订单列表查看测试用例 Then 验证订单列表按预期加载 And 验证订单数据的正确展示(订单名称、平台、公司、渠道、状态等) And 验证订单状态徽章显示正确(草稿、已确认、进行中等) And 验证工作状态徽章显示正确(未就业、待就业、已就业、已离职) And 验证分页功能 And 测试在真实浏览器中通过
测试文件: web/tests/e2e/specs/admin/order-list.spec.ts
web/tests/e2e/specs/admin/order-list.spec.tsEpic 10: 订单管理 E2E 测试 (Epic C - 业务测试 Epic)
依赖:
根据 epics.md,订单管理涉及以下核心功能:
已创建的 Page Object 功能:
web/tests/e2e/pages/admin/order-management.page.ts 包含以下功能:
页面基础功能:
goto() - 导航到订单管理页面expectToBeVisible() - 验证关键元素可见pageTitle、addOrderButton、orderTable、searchInput、searchButton订单列表选择器:
pageTitle - 页面标题("订单管理")addOrderButton - 新增订单按钮orderTable - 订单列表表格searchInput - 搜索输入框searchButton - 搜索按钮类型定义:
ORDER_STATUS - 订单状态常量(draft、confirmed、in_progress、completed)ORDER_STATUS_LABELS - 订单状态显示名称映射WORK_STATUS - 工作状态常量(not_employed、pending、employed、resigned)WORK_STATUS_LABELS - 工作状态显示名称映射订单状态和工作状态映射:
// 订单状态
ORDER_STATUS_LABELS = {
draft: '草稿',
confirmed: '已确认',
in_progress: '进行中',
completed: '已完成',
}
// 工作状态
WORK_STATUS_LABELS = {
not_employed: '未就业',
pending: '待就业',
employed: '已就业',
resigned: '已离职',
}
参考 Story 8.2(区域列表查看测试)和 Story 9.x(残疾人管理测试)的测试结构:
import { test, expect } from '@playwright/test';
import { OrderManagementPage } from '../../pages/admin/order-management.page';
test.describe('订单列表查看', () => {
let orderPage: OrderManagementPage;
test.beforeEach(async ({ page }) => {
orderPage = new OrderManagementPage(page);
await orderPage.goto();
});
test('应该显示订单管理页面标题', async () => {
// 测试实现
});
test('应该显示订单列表表格', async () => {
// 测试实现
});
// 更多测试...
});
订单列表页面结构:
/admin/orders订单列表表格列(预期):
导入依赖:
import { test, expect } from '@playwright/test';
import { OrderManagementPage } from '../../pages/admin/order-management.page';
测试 Fixtures:
test.describe() 组织相关测试test.beforeEach() 进行测试前置准备断言策略:
expect() API 进行断言expect(locator).toBeVisible()expect(locator).toHaveText()expect(locator).toHaveCount()状态徽章验证:
遵循以下测试标准文档:
docs/standards/testing-standards.md - 测试规范docs/standards/web-ui-testing-standards.md - Web UI 测试规范docs/standards/e2e-radix-testing.md - Radix UI E2E 测试标准选择器优先级:
data-testid - 最高优先级aria-label + roletext content + role - 兜底文件位置:
web/tests/e2e/specs/admin/order-list.spec.tsweb/tests/e2e/pages/admin/order-management.page.tsweb/tests/e2e/fixtures/对齐统一项目结构:
project-context.md 中的 TypeScript 严格模式规则any 类型# 在 web 目录下运行单个测试文件
cd web
pnpm test:e2e:chromium order-list
# 快速失败模式(推荐调试时使用)
timeout 60 pnpm test:e2e:chromium order-list
数据隔离:
分页功能:
状态徽章样式:
E2E 测试失败调试:
test-results/**/error-context.mdtimeout 命令限制运行时间timeout 60 pnpm test:e2e:chromium order-list截图和录制:
--headed 参数查看浏览器执行过程--debug 参数进入调试模式基础功能验证:
数据展示验证:
订单状态徽章验证:
工作状态徽章验证:
分页功能验证:
claude-opus-4-5-20251101
Page Object 选择器优化
pageTitle 选择器:使用 [data-slot="card-title"] 更精确地定位页面标题,避免与侧边栏按钮冲突addOrderButton 选择器:使用 data-testid="create-order-button" 替代文本搜索,因为实际按钮文本是"创建订单"而非"新增订单"searchInput 和 searchButton 选择器:使用 data-testid 属性定位测试实现完成情况
测试结果摘要
代码审查修复 (2026-01-11)
expect(true).toBe(true)console.debugconsole.debugwaitForTimeout 反模式,改用 waitForLoadState('networkidle')console.debug 调试语句新增文件:
web/tests/e2e/specs/admin/order-list.spec.ts - 订单列表查看测试套件(21 个测试用例)修改文件:
web/tests/e2e/utils/test-setup.ts - 添加 orderManagementPage fixtureweb/tests/e2e/pages/admin/order-management.page.ts - 优化选择器定位策略