本文档介绍了 Langflow 全面的测试基础设施和持续集成/持续部署 (CI/CD) 流水线。该系统包括使用 Playwright 进行前端测试、使用 pytest 进行后端测试、强制执行代码质量以及确保代码可靠性和可维护性的自动化工作流。
有关构建系统和包管理的信息,请参阅 构建系统和包管理。有关部署配置详情,请参阅 部署和配置。
CI/CD 系统围绕 GitHub Actions 工作流构建,提供全面的测试、质量保证和自动化功能。
来源: .github/workflows/typescript_test.yml .github/workflows/python_test.yml .github/workflows/lint-py.yml .github/workflows/style-check-py.yml .github/workflows/lint-js.yml
前端测试系统使用 Playwright 进行端到端测试,支持智能测试套件选择和通过分片进行并行执行。
该系统根据更改的文件动态确定要运行的测试套件。`determine-test-suite` 作业会分析文件路径,并使用像 `--grep="@components|@api"` 这样的 grep 模式将其映射到测试类别。
来源: .github/workflows/typescript_test.yml61-241
前端测试实现了动态分片以优化执行时间
| 配置 | 值 | 目的 |
|---|---|---|
| 分片大小 | 每个分片 5 个测试 | 最佳并行化 |
| 最大分片数 | 40 | 资源限制 |
| 工作进程 | 每个分片 2 个 | Playwright 并发 |
| 重试 | 3 | 不稳定测试处理 |
| 缓存键 | playwright-{version}-chromium-{os} | 浏览器缓存 |
分片计算在 .github/workflows/typescript_test.yml209-241 中进行,其中 SHARD_COUNT=$(( (TEST_COUNT + 4) / 5 )) 确定了最佳分配。
来源: .github/workflows/typescript_test.yml223-229 .github/workflows/typescript_test.yml280-294
Python 测试系统通过单元测试、集成测试和跨多个 Python 版本的 CLI 验证提供全面的覆盖。
单元测试通过 pytest-split 分布在 5 个并行组中:make unit_tests args="-x -vv --splits 5 --group {1-5} --reruns 5"。每个组独立运行以最大化吞吐量。
来源: .github/workflows/python_test.yml .github/workflows/python_test.yml
CLI 测试工作流验证完整的安装和启动过程
make build main=true 创建分发包/api/v1/auto_login 端点来源: .github/workflows/python_test.yml120-149
该系统通过多个自动化检查和自动格式化工作流来强制执行代码质量。
来源: .github/workflows/lint-py.yml .github/workflows/style-check-py.yml .github/workflows/py_autofix.yml
前端使用 Prettier 进行一致性格式化
npm run check-format 验证格式 .github/workflows/lint-js.yml50-53npm run format 应用格式 .github/workflows/js_autofix.yml40-43package-lock.json 哈希值缓存来源: .github/workflows/lint-js.yml .github/workflows/js_autofix.yml
该系统通过自动收集测试时长来维护测试性能指标
来源: .github/workflows/store_pytest_durations.yml .github/workflows/store_pytest_durations.yml58-72
所有工作流都实现了 UV 缓存优化,并使用 uv cache prune --ci 来最小化存储使用,同时保持性能优势。
来源: .github/actions/setup-uv/action.yml12-16
文档系统使用 Yarn 和 Node.js 来验证构建
来源: .github/workflows/docs_test.yml34-38 .github/workflows/fetch_docs_notion.yml36-54
Codeflash 工作流为 Python 变更提供 AI 驱动的代码优化
src/backend/base/langflow/** 的拉取请求src/backend/base 目录中执行 uv run codeflash来源: .github/workflows/codeflash.yml14-33
auto-update 工作流使用 tibdex/auto-update@v2 来自动管理主分支上的依赖项更新。
来源: .github/workflows/auto-update.yml9-13
| 秘密 | 目的 | 用途 |
|---|---|---|
OPENAI_API_KEY | LLM 测试 | 前端和 Python 测试 |
ANTHROPIC_API_KEY | Claude 集成 | 测试执行 |
TAVILY_API_KEY | 搜索功能 | 集成测试 |
STORE_API_KEY | 组件存储 | 前端测试 |
ASTRA_DB_* | 数据库测试 | 后端集成 |
测试使用环境变量进行配置
LANGFLOW_DEACTIVE_TRACING="true" - 在测试中禁用跟踪NODE_VERSION="21" - 标准化的 Node.js 版本PYTHON_VERSION="3.13" - 默认 Python 版本PLAYWRIGHT_BROWSERS_PATH="ms-playwright" - 浏览器缓存位置来源: .github/workflows/typescript_test.yml52-58 .github/workflows/python_test.yml27-30