本文档记录了 Uptime Kuma 中的测试基础设施和持续集成 (CI) 工作流。它为希望了解测试结构、如何在本地运行它们以及自动化测试如何集成到开发工作流中的开发人员提供了技术指导。
有关贡献指南的信息,请参阅贡献指南。有关 Docker 开发信息,请参阅Docker 开发。
Uptime Kuma 采用自动化测试和持续集成来维护代码质量并防止回归。所有拉取请求在合并之前都会经过自动化测试。测试基础设施旨在跨多个操作系统和 Node.js 版本验证功能,确保跨不同环境的兼容性。
来源:.github/workflows/auto-test.yml1-94 CONTRIBUTING.md578-583
Uptime Kuma 使用几种类型的测试来确保代码质量
后端测试使用 Node.js 内置的测试框架来验证服务器端功能。这些测试侧重于各个组件及其集成,包括:
运行命令:npm run test-backend
来源:.github/workflows/auto-test.yml38-41 CONTRIBUTING.md578-583
端到端测试从用户界面到后端验证整个应用程序堆栈。这些测试使用 Playwright 自动化浏览器交互,模拟真实用户行为。
运行命令:npm run test-e2e
来源:.github/workflows/auto-test.yml79-94
代码检查工具可强制执行一致的代码风格并在代码进入生产环境之前捕获潜在问题。Uptime Kuma 使用 ESLint 进行 JavaScript/TypeScript 代码检查。
运行命令:npm run lint:prod
来源:.github/workflows/auto-test.yml65-77 CONTRIBUTING.md467-469
Uptime Kuma 使用 GitHub Actions 进行持续集成。CI 工作流会在拉取请求和推送到受保护分支时自动运行。
CI 工作流执行以下步骤:
在合并拉取请求之前,所有测试都必须通过。
来源:.github/workflows/auto-test.yml1-94 CONTRIBUTING.md325-327
开发人员在提交拉取请求之前应在本地运行测试,以确保他们的更改不会破坏现有功能。
运行测试前,请确保已安装以下软件:
克隆仓库并安装依赖项
运行后端测试:
来源:CONTRIBUTING.md578-583 .github/workflows/auto-test.yml36-41
运行端到端测试:
来源:.github/workflows/auto-test.yml90-93
验证代码风格和质量:
来源:.github/workflows/auto-test.yml77
在为 Uptime Kuma 做贡献时,为你的更改编写测试有助于维护代码质量并防止回归。
后端测试应:
test 目录中端到端测试应:
CI 工作流在 GitHub Actions 工作流文件中配置。本节详细介绍了工作流配置。
CI 工作流在以下情况下运行:
master 和 1.23.X 分支(不包括 .md 文件更改)master 和 1.23.X 分支(不包括 .md 文件更改)on:
push:
branches: [ master, 1.23.X ]
paths-ignore:
- '*.md'
pull_request:
branches: [ master, 1.23.X ]
paths-ignore:
- '*.md'
工作流在以下环境进行测试:
| 操作系统 | Node.js 版本 |
|---|---|
| macOS | 18, 20 |
| Ubuntu | 18, 20 |
| Windows | 18, 20 |
| ARM64 | 18, 20 |
| ARMv7 | 18, 20 (有限支持) |
工作流包含以下带依赖项的任务:
check-linters:无依赖项,首先运行auto-test:依赖于 check-lintersarmv7-simple-test:无依赖项,并行运行e2e-test:无依赖项,并行运行工作流要成功,所有任务都必须通过。
后端测试使用以下环境变量:
HEADLESS_TEST:设置为 1 以在无头模式下运行测试JUST_FOR_TEST:用于测试身份验证的秘密值来源:.github/workflows/auto-test.yml1-94
要接受拉取请求,它必须:
拉取请求模板包含一个清单,用于验证这些要求。
来源:.github/PULL_REQUEST_TEMPLATE.md67-80 CONTRIBUTING.md325-327