Skip to content

E2E 测试指南 ​

端到端测试用生产构建的 AutoBangumi 镜像,对接本地的、确定性的上游服务(模拟 RSS、TMDB、播放器与 qBittorrent)。测试不访问任何公网服务。Docker Compose 在回环地址上发布随机端口,服务之间走内部网络。

完整说明(各条测试线、诊断产物、添加模拟场景、更新 qBittorrent 镜像摘要)在仓库的 e2e/README.md。本页只给出本地运行的最短路径。

准备 ​

  • Docker Engine 与 Compose v2
  • Python 3.14 与 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 -qbrowser
Chromium 桌面pnpm --dir webui run test:e2e:chromium --retries=0browser
WebKit 移动端pnpm --dir webui run test:e2e:webkit --retries=0browser
真实 qBittorrent 与打包镜像python3 e2e/scripts/run_downloader_lane.pydownloader
  • 普通的 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 中。

AutoBangumi 基于 MIT 许可证发布。(最新版本: v3.3.2)