mirror of
https://github.com/EstrellaXD/Auto_Bangumi.git
synced 2026-10-29 03:36:15 +08:00
- API 参考按实际路由重写,修正认证方式、请求方法与设置向导端点 - 数据库指南改为异步 Database 与 MIGRATIONS - E2E 指南改为指向 e2e/README.md - 插件快速上手补上安装 SDK 轮子的步骤,ab-plugin dev 加 --config-dir - 发布流程改为手动推送标签触发
63 lines
2.8 KiB
Markdown
63 lines
2.8 KiB
Markdown
# 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` 中。
|