# E2E 端到端测试

API 层端到端冒烟测试，用于部署后快速验证核心功能。

## 文件说明

| 文件 | 说明 |
|------|------|
| `api_smoke_test.sh` | API 冒烟测试主脚本（bash + curl，无依赖） |
| `PRODUCTION_CHECKLIST.md` | 生产部署检查清单 |

## 快速开始

```bash
# 完整测试（staging 示例）
BASE_URL=https://staging-api.xiaoxiajianji.com ./api_smoke_test.sh

# 生产环境（用已有 token，避免注册测试账号）
BASE_URL=https://saas-api.xiaoxiajianji.com \
EXISTING_TOKEN=eyJhbGciOi... \
./api_smoke_test.sh

# 只跑指定模块
BASE_URL=... MODULES="auth,edit-plans,templates" ./api_smoke_test.sh

# 连带测前端路由
BASE_URL=... WEB_URL=https://saas.xiaoxiajianji.com ./api_smoke_test.sh
```

## 环境变量

| 变量 | 必填 | 默认值 | 说明 |
|------|------|--------|------|
| `BASE_URL` | ✅ | - | API 地址 |
| `WEB_URL` | ❌ | - | 前端地址（用于 Nginx 路由验证） |
| `EXISTING_TOKEN` | ❌ | - | 已有 token（跳过注册/登录，生产推荐） |
| `TEST_USER` | ❌ | 自动生成 | 测试用户名 |
| `TEST_PASSWORD` | ❌ | Test123456! | 测试密码 |
| `TEST_EMAIL` | ❌ | 自动生成 | 测试邮箱 |
| `MODULES` | ❌ | all | 指定模块，逗号分隔 |
| `CLEANUP_ENABLED` | ❌ | 1 | 是否清理测试数据（1/0） |

## 模块列表

| 模块名 | 覆盖范围 |
|--------|----------|
| `health` | 健康检查、API Docs、鉴权验证 |
| `edit-plans` | 剪辑计划 CRUD、AI推荐、AI封面、时间线、生成历史 |
| `templates` | 模板 CRUD、分类、收藏、验证 |
| `assets` | 素材列表、素材库、file_url、thumbnail_url |
| `diagnosis` | 项目级素材诊断、新格式验证 |
| `generation` | 生成任务列表 |
| `subscription` | 订阅、账单、仪表盘 |
| `misc` | 音色列表、AI标题生成 |
| `nginx` | 前端 SPA 路由（需 WEB_URL） |

## 设计原则

- **零依赖**：只有 bash + curl + python3，任何环境都能跑
- **幂等安全**：每次用独立账号，清理测试数据，不污染环境
- **环境友好**：503/无素材等环境限制算通过，只抓真正的功能 bug
- **快速反馈**：全量 5 分钟跑完，适合部署后立即验证
