Skip to content

Windows CI: providerInterfaceRoutes 全目录路由审计触发5秒超时 #7852

Open

Description

@zqchris

来自 PR #7782 的 review 建议或相邻问题,超出该 PR 的意图契约范围,单独跟进。

来源:#7782

Activity

  1. dash-s-cindy commented on Oct 29, 2026

    @dash-s-cindy

    判断

    各供应商预设导入后的路由与 API 契约断言均正常,此问题属于全目录路由审计用例在单用例超时预算下的结构性累加问题。providerInterfaceRoutes.test.ts 中的 keeps every preset HTTP API consistent with the actual route after import 用例在单一 it() 内同步遍历全部 BUNDLED_CATALOG.presets 并执行完整的 buildUserProvider 解析与元数据展开;随着内置预设与模型数量增长,在 GitHub Actions Windows runner 单 worker 负载下累积耗时达到临界点(实测 5033ms,触发 Vitest 默认 5000ms 限制),而 macOS 本地单独执行约 658ms。

    行动

    1. 首要步骤(建议负责角色:@cindy/model-providers 维护者 / 单测作者):
      • 将 packages/model-providers/src/__tests__/providerInterfaceRoutes.test.ts:86 的单体 for 循环重构为参数化测试 it.each(BUNDLED_CATALOG.presets ?? [])(例如 it.each(BUNDLED_CATALOG.presets ?? [])('keeps $id preset HTTP API consistent with the actual route after import', preset => { ... }))。
      • 保持现有 buildUserProvider 参数、模型遍历与 expect(actual, ...).toBe(expected) 校验逻辑完全不变。
      • 完成条件:每个预设作为独立测试用例运行(单用例耗时降至数十毫秒),执行 pnpm --filter @cindy/model-providers test 及 Windows unit tests (1/4) 分片全绿无超时。
    2. 条件分支:
      • 仅当参数化重构后在极端负载的 Windows CI 上整文件耗时依然偏紧时,才在文件作用域参考仓内既有写法(如 manager.test.ts)补齐平台补偿 vi.setConfig({ testTimeout: process.platform === 'win32' ? 15_000 : 5_000 })。
      • 明确不通过跳过 preset、删除断言或放宽路由一致性契约来消除超时。

    关键依据

    • 运行证据:client-ci run 40845424824(Windows unit tests 1/4)中,该分片另外 444 项全部通过,仅此单用例在 5033ms 报 Test timed out in 5000ms,未发生断言不一致报错。
    • 测试设计契合度:同文件其他用例(如 Model Studio、GLM、Responses/Chat 修复等)均已规范采用 it.each;将全目录审计参数化不仅彻底分散单用例预算压力,也能在未来某预设路由损坏时直接在测试结果树中精准标出出错预设 ID。

    相关记录

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions