核心业务测试:书籍生成完整链路
适用于每次修改核心业务代码后、每次发布上线前的回归校验。
测试目标:保证「大纲 → 内容 → 音频」这条核心业务链路从前端页面到后端 API 都可工作。
测试范围
CORE-1 预估字数与时长 (GET /api/book-generator/langgraph/estimate)
CORE-2 创建书籍(停在 draft,不自动生成) (POST /api/book-generator/langgraph/books)
CORE-3 生成大纲,等待 outline_completed (POST .../outline + 轮询 /progress)
CORE-4 生成全部章节内容,等待 content_completed (POST .../chapters + 轮询 /progress)
CORE-5 生成全部章节音频,等待 allCompleted (POST .../audio + 轮询 /audio-status)
CORE-6 书籍最终态为 audio_completed / video_completed
CORE-7 书籍列表页可访问,能看到刚生成的书 (UI: /#/pages/book-generator/index)
CORE-8 创建页可访问、表单可填写 (UI: /#/pages/book-generator/create)
CORE-9 详情页正确显示状态 (UI: /#/pages/book-generator/detail)
CORE-10 章节详情页可访问 (UI: /#/pages/book-generator/chapter-detail)
设计原则
- 状态变更走 API — 避开
uni.showModal 等 uni-app H5 模态框,测试稳定可重跑。
- 可见性校验走 UI — 任何前端展示层(列表 / 详情 / 状态文本)改动能被立即发现。
- 失败立即抛错 — 不静默跳过,任一阶段失败 = 整个 describe 标红。
运行环境
| 组件 |
地址 |
必须先启动 |
| 后端 |
http://127.0.0.1:3000 |
✅ |
| 前端 H5 |
http://127.0.0.1:5173 |
✅ |
| 数据库 |
MySQL(Prisma) |
✅ |
| LLM 服务 |
后端 .env 中配置 |
✅ |
| TTS 服务 |
后端 .env 中配置 |
✅ |
运行方式
# 方式一:通过根目录脚本(推荐)
./scripts/run-core-business-test.sh
# 方式二:直接调 playwright
npx playwright test \
--project=core-business \
--config=tests/playwright.config.ts
# 方式三:只跑核心业务用例
cd tests/e2e/core-business && \
npx playwright test book-core-flow.spec.ts \
--config=../../playwright.config.ts
时长参考
| 阶段 |
参考时长 |
| CORE-1~2 |
< 5s |
| CORE-3 大纲 |
30 ~ 60s |
| CORE-4 内容 |
60 ~ 180s |
| CORE-5 音频 |
60 ~ 240s |
| CORE-6~10 UI |
< 30s |
| 合计 |
3 ~ 8 分钟 |
单测超时设 10 分钟,避免环境抖动。LLM / TTS 真实调用,时长不可压缩。
失败处理
- 看
tests/test-results/report HTML 报告
- 看
tests/test-results/results.json 结构化结果
- 看后端日志(特别是
prisma / langgraph / TTS provider 报错)
修改触发矩阵
| 改动文件 |
必须跑? |
server/src/modules/book-generator/** |
✅ |
my-uniapp-vue3/src/pages/book-generator/** |
✅ |
my-uniapp-vue3/src/utils/book-generator-api.ts |
✅ |
server/prisma/schema.prisma(Book / Chapter 表) |
✅ |
| 部署 / 发布脚本 |
✅ |
| 其他无关文件 |
可选 |