Files
Auto_Bangumi/docs/dev/e2e-test-guide.md
Estrella Pan 776abfa896 docs(4.0): 更新 API 参考与开发者文档,新增获取 SDK 页
- API 参考按实际路由重写,修正认证方式、请求方法与设置向导端点
- 数据库指南改为异步 Database 与 MIGRATIONS
- E2E 指南改为指向 e2e/README.md
- 插件快速上手补上安装 SDK 轮子的步骤,ab-plugin dev 加 --config-dir
- 发布流程改为手动推送标签触发
2026-10-08 17:36:53 +02:00

63 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# E2E 测试指南
端到端测试用生产构建的 AutoBangumi 镜像,对接本地的、确定性的上游服务(模拟 RSS、TMDB、播放器与 qBittorrent)。测试不访问任何公网服务。Docker Compose 在回环地址上发布随机端口,服务之间走内部网络。
完整说明(各条测试线、诊断产物、添加模拟场景、更新 qBittorrent 镜像摘要)在仓库的 [`e2e/README.md`](https://github.com/EstrellaXD/Auto_Bangumi/blob/main/e2e/README.md)。本页只给出本地运行的最短路径。
## 准备
- Docker Engine 与 Compose v2
- Python 3.13 与 `uv`
- Node.js 20 与 pnpm 9.11
```bash
uv sync --directory backend --locked --group dev
pnpm --dir webui install --frozen-lockfile
pnpm --dir webui exec playwright install --with-deps chromium webkit firefox
```
## 构建测试镜像
```bash
pnpm --dir webui run build
python3 e2e/scripts/build_test_image.py \
--version 3.3.999-e2e.1 \
--image auto-bangumi:e2e \
--dist webui/dist
```
构建脚本在临时的 Docker 上下文里放入 WebUI 产物和生成的版本模块,不会写入源码树。
## 运行
每次运行都用新的项目名和工作目录。重用工作目录会同时重用设置状态,首次运行的覆盖就失效了。
```bash
export LANE=runtime
export AB_E2E_PROJECT="ab-e2e-local-$LANE-$$"
export AB_E2E_WORK_DIR="$(mktemp -d "${TMPDIR:-/tmp}/ab-e2e-$LANE.XXXXXX")"
export AB_E2E_APP_IMAGE=auto-bangumi:e2e
# 运行时 API 与进程测试
python3 e2e/scripts/stack.py run \
--profile browser \
--project-name "$AB_E2E_PROJECT" \
--work-dir "$AB_E2E_WORK_DIR" \
-- uv run --directory backend pytest src/test/e2e/runtime -m e2e -q
```
| 测试线 | `--` 之后的命令 | `--profile` |
| --- | --- | --- |
| 运行时 | `uv run --directory backend pytest src/test/e2e/runtime -m e2e -q` | `browser` |
| Chromium 桌面 | `pnpm --dir webui run test:e2e:chromium --retries=0` | `browser` |
| WebKit 移动端 | `pnpm --dir webui run test:e2e:webkit --retries=0` | `browser` |
| 真实 qBittorrent 与打包镜像 | `python3 e2e/scripts/run_downloader_lane.py` | `downloader` |
- 普通的 `pytest` 会跳过 E2E 用例,必须显式传入 `-m e2e`。
- `stack.py run` 在拆除 Compose 之前收集诊断信息,写到 `$AB_E2E_WORK_DIR/artifacts`。Playwright 的截图与视频在 `webui/test-results`,HTML 报告在 `webui/playwright-report`。
- 停止一个栈:`python3 e2e/scripts/stack.py stop --profile browser --project-name "$AB_E2E_PROJECT" --work-dir "$AB_E2E_WORK_DIR"`。
## CI
`.github/workflows/e2e.yml` 在每个 PR 上运行运行时线、浏览器线(Chromium、WebKit 移动端)和真实下载器线。`e2e-nightly.yml` 每晚运行 Firefox 线,并把浏览器线和下载器线各独立运行两遍。端点结构、参数校验等更快的契约测试仍在 `backend/src/test/test_api_*.py` 中。