SuperAPI AI 工具集

testing-workflow

测试与质量

查看项目

更新于 10-16 12:51

技能介绍

用途

这是一个面向 MiniMax Code 仓库的测试与验证工作流,用于为代码变更选择并执行仓库声明的测试套件和 CI 门禁,并按要求报告验证结果。适用于校验代码、技能(skills)等变更,覆盖从局部迭代到提交前完整验证的各个阶段。

主要能力

1. 从变更出发定位验证范围

工作流要求先查看变更文件,然后识别其所属的运行时、用户入口点以及最终可观察行为。需要阅读 AGENTS.md、CONTRIBUTING.md 以及 scripts/verify.mjs 中适用的步骤。

2. 聚焦式迭代测试

Vitest 文件归属于 test/vitest-suites.json 中声明的分组,别名与包含关系来自 vitest.oss.config.mjs。聚焦运行时需选择已声明的现有文件,例如:

pnpm exec vitest run --config vitest.oss.config.mjs packages/tui/test/unit/headless-contract.test.ts

新增的 Vitest 文件需在套件声明中注册,不得在 package scripts 或 Vitest 配置中添加硬编码文件列表。上游内置的测试套件不属于本发行版的验证范围。

3. 按范围对应的仓库门禁

资料中列出的门禁与适用范围如下:

  • 运行时、TUI、providers、plugins 与 ACP:pnpm test:capabilities
  • Headless CLI 与离线 BYOK 行为:pnpm test:byok
  • CLI 产物冒烟:pnpm test:smoke
  • 公开发布产物内容:pnpm test:artifact
  • TUI 构建模式契约:pnpm test:status-contract
  • macOS/Linux 权限门面:pnpm test:policy
  • macOS 沙箱:pnpm test:sandbox
  • 源码同步、工作流与发布工具:pnpm test:release-tools
  • npm 发布归档安装:MCODE_RELEASE_TAG=vX.Y.Z MCODE_RELEASE_ARCHIVE=/path/to/package.tar.gz pnpm verify --profile package
  • TUI 源码与测试 lint:pnpm lint:tui
  • 类型与独立构建边界:pnpm typecheck、pnpm build、pnpm check:standalone
  • 已发布文件与生成路径:pnpm check:source、pnpm check:tsconfig

依赖产物的测试需要当前最新的 pnpm build。测试状态与报告应保存在仓库之外,使用合成数据与临时目录。

声明的 Vitest 门禁运行器在 Windows 上会串行化测试文件以降低文件系统争用,同时保留单个测试的截止时间。平台验收需运行所属门禁;直接调用 Vitest 会使用其默认 worker 数量。完整运行时冒烟子进程在 Windows 上有 30 秒启动预算(与 ACP 一致);轻量级帮助与校验检查仍保留 15 秒。

4. 交付验证

编辑过程中运行 git diff --check 和相关单项门禁。在用 node scripts/source-inventory.mjs --write 重新生成 release/public-source.json 之前,先检查新增或删除的文件。

打开 PR 前,需在已评审的提交上、工作区已跟踪文件干净的状态下运行 pnpm verify。源码导出读取已提交的 HEAD,并拒绝未提交的已跟踪变更;如果只能做迭代检查,需报告这一限制。

使用 pnpm verify --list 查看当前平台的门禁。仅当所有变更路径都符合 scripts/ci-changes.mjs 的条件时,才使用 docs profile。.agents/skills 下的技能、未知路径和清单变更需要 full profile。archive profile 用于源码归档校验,不能用来绕过干净提交导出要求。

package profile 会认证 npm 发布归档,安装到临时 npm prefix,并演练其启动器、原生依赖以及离线冒烟/BYOK 套件。它需要 MCODE_RELEASE_TAG 和 MCODE_RELEASE_ARCHIVE,且不能替代源码验证。release 命令会在打标签前提交匹配的根目录/TUI 源码版本。发布工作流会拒绝版本不匹配,并在包安装检查前运行 full profile。

5. 性能覆盖

使用 CONTRIBUTING.md 对变更分类。对于性能优化、历史/令牌处理、存储、流式或工具执行相关变更以及大型运行时重构,需添加 perf:full 标签。该标签会自动选择完整套件,并在后续提交中保持选中。合并前,需为最新 head 与目标 base 链接一次通过的、Suite: full 的性能运行。证据、限制与手动触发参见 Performance CI。

6. 手动证据与报告

对于 CLI 行为,需演练构建后的 dist/cli.js,并检查 stdout、stderr 和退出码。对于终端呈现,尽可能演练相关交互。对于 provider 或服务变更,需区分离线 fixture 与真实端点调用。

报告需包含范围、命令与结果、手动场景以及未测试的边界。实际检查使用 PASS/FAIL/BLOCKED 标记;未运行的检查需明确标注。本地 macOS 成功不能代表 Windows/Linux 或在线服务的验收通过。

使用方式

  1. 从变更文件入手,识别所属运行时、用户入口点与最终可观察行为。
  2. 阅读 AGENTS.md、CONTRIBUTING.md 和 scripts/verify.mjs 中适用步骤。
  3. 通过 test/vitest-suites.json 与 vitest.oss.config.mjs 选择已声明的测试文件进行聚焦运行;新文件需在套件声明中注册。
  4. 按变更范围运行对应的仓库门禁命令(见上表)。依赖产物的测试前先执行 pnpm build。
  5. 编辑期间运行 git diff --check 与相关单项门禁;提交 PR 前在干净工作区运行 pnpm verify。
  6. 按范围分类变更,必要时添加 perf:full 并链接性能运行。
  7. 按报告要求输出范围、命令、结果、手动场景与未测试边界。

适用场景

  • 校验 MiniMax Code 仓库中的代码、技能等变更。
  • 提交 PR 前的完整或定向验证。
  • 发布交付验证与 npm 发布归档验证。
  • 性能相关变更的完整套件验证。
  • 需要区分平台差异(macOS/Linux/Windows)与在线/离线服务行为的验证场景。

限制

  • 上游内置的测试套件不在本发行版的验证范围内。
  • 源码导出读取已提交的 HEAD,并拒绝未提交的已跟踪变更;仅能做迭代检查时需如实报告该限制。
  • archive profile 不能用于绕过干净提交导出要求。
  • package profile 需要 MCODE_RELEASE_TAG 与 MCODE_RELEASE_ARCHIVE,且不能替代源码验证。
  • 依赖产物的测试需要当前最新的 pnpm build。
  • docs profile 仅在所有变更路径都符合 scripts/ci-changes.mjs 条件时可用;.agents/skills、未知路径与清单变更需 full profile。
  • 本地 macOS 成功不代表 Windows/Linux 或在线服务验收通过。
  • 资料未提供具体价格、收费方式、价格区间等信息,相关细节暂未提供。
  • 资料未提供作者、发布时间、版本号等其他元信息,暂未提供。