# E2E 全流程模拟测试指南

## 测试文件说明

### 1. full-workflow-simulation.spec.ts
完整的全流程模拟测试，覆盖以下场景：
- **阶段一**：采购商创建计划（登录、产品信息、新建计划）
- **阶段二**：分享链接与首次合作（计划总览、导入计划）
- **阶段三**：纺织厂生产流程（登录、查看计划、确认流程节点）
- **阶段四**：分批次入库（坯布仓库、入库操作）
- **阶段五**：数据验证（计划完成状态、成品仓库、待结款）
- **多角色协作**：双窗口实时同步测试
- **边界情况**：未登录访问、无效 token、离线提示
- **性能测试**：页面加载时间、资源加载错误检测

### 2. database-validation.sql
数据库层面的 SQL 验证脚本，包含：
- 环境准备（清理旧数据）
- 完整业务流程 SQL 序列
- 数据完整性验证查询
- 综合验证报告

### 3. core-workflow.spec.ts
核心业务流程测试（登录、注册、路由、响应式布局）

### 4. collaboration-workflow.spec.ts
协作流程测试（采购商视角、纺织厂视角、数据同步）

## 运行测试

### 前置条件
1. 安装依赖：`pnpm install`
2. 安装浏览器：`npx playwright install chromium`
3. 启动开发服务器：`pnpm run dev`

### 运行命令

```bash
# 运行所有测试
npx playwright test

# 运行特定测试文件
npx playwright test e2e/full-workflow-simulation.spec.ts

# 运行特定项目（浏览器）
npx playwright test --project=chromium
npx playwright test --project=firefox
npx playwright test --project=webkit

# 运行特定测试（按名称匹配）
npx playwright test -g "采购商登录"

# 调试模式
npx playwright test --debug

# 生成 HTML 报告
npx playwright show-report
```

### 数据库验证

使用 meoo-cli 执行 SQL 验证：

```bash
# 验证计划基本信息
meoo-cli cloud query --sql "SELECT plan_code, status, target_quantity, completed_quantity FROM production_plans WHERE plan_code = 'TEST-2026-001';"

# 验证流程节点完成情况
meoo-cli cloud query --sql "SELECT COUNT(*) as total_steps, SUM(CASE WHEN status = 'completed' THEN 1 ELSE 0 END) as completed_steps FROM plan_process_steps WHERE plan_id IN (SELECT id FROM production_plans WHERE plan_code = 'TEST-2026-001');"

# 验证入库记录汇总
meoo-cli cloud query --sql "SELECT COUNT(*) as batches, SUM(quantity) as total_meters FROM inventory_records WHERE plan_id IN (SELECT id FROM production_plans WHERE plan_code = 'TEST-2026-001');"

# 验证数据一致性
meoo-cli cloud query --sql "SELECT p.completed_quantity, COALESCE(SUM(ir.quantity), 0) as inventory_total, CASE WHEN p.completed_quantity = COALESCE(SUM(ir.quantity), 0) THEN '✓ 一致' ELSE '✗ 不一致' END as check_result FROM production_plans p LEFT JOIN inventory_records ir ON ir.plan_id = p.id WHERE p.plan_code = 'TEST-2026-001' GROUP BY p.completed_quantity;"
```

## 测试数据结构

### 测试用固定 ID
- 采购商公司：`11111111-1111-1111-1111-111111111101`
- 纺织厂公司：`11111111-1111-1111-1111-111111111102`
- 采购商用户：`a0000001-0000-0000-0000-000000000001`
- 纺织厂用户：`a0000002-0000-0000-0000-000000000002`
- 坯布仓库：`22222222-2222-2222-2222-222222222202`

### 预期测试结果
- 计划编号：`TEST-2026-001`
- 计划状态：`completed`
- 目标产量：`10000` 米
- 完成产量：`10000` 米
- 流程节点：`5/5` 已完成
- 入库批次：`3` 批
- 总入库量：`10000` 米

## 常见问题

### Q: 浏览器未安装
```bash
npx playwright install chromium
```

### Q: 开发服务器未启动
```bash
pnpm run dev
```

### Q: 测试超时
检查网络连接和数据库服务状态：
```bash
meoo-cli cloud status
```

### Q: 如何查看测试报告
```bash
npx playwright show-report
```

## 测试覆盖率

| 测试类别 | 测试数量 | 覆盖场景 |
|---------|---------|---------|
| 全流程模拟 | 20 | 完整业务流程 |
| 核心业务 | 9 | 登录、注册、路由 |
| 协作流程 | 9 | 多角色协作 |
| 边界情况 | 3 | 异常处理 |
| 性能测试 | 2 | 加载时间、错误检测 |
| **总计** | **43** | - |

## 持续集成

在 CI/CD 中运行测试：

```yaml
- name: Run E2E Tests
  run: |
    npx playwright install --with-deps chromium
    npx playwright test --project=chromium
```

## 更新日志

- **2026-06-04**: 创建全流程模拟测试文件和数据库验证脚本
