SuperAPI AI 工具集

flaky-smoke-tests

测试与质量

查看项目

更新于 10-16 00:32

技能介绍

用途:诊断 VS Code Electron 冒烟测试的间歇性失败,面向 Azure DevOps 的 Flaky Smoke Tests 管道(组织 https://dev.azure.com/monacotools,项目 Monaco,定义 ID 700,YAML 为 build/azure-pipelines/product-smoke-flaky.yml,main 分支每天两次定时运行)。

主要能力与要点:

  • 通过 Azure CLI 使用 az devops 命令,先确认构建与源码版本(az pipelines build show),再拉取 timeline 找出名称含 Smoke test iteration 的失败任务。迭代任务使用 continueOnError: true,失败通常显示为 succeededWithIssues,不能从整体构建或作业结果推断冒烟测试健康度,需逐个检查迭代任务。
  • 使用日志资源(resource logs,非 buildLog)下载具体迭代任务日志:az devops invoke --area build --resource logs --route-parameters project=Monaco buildId=<BUILD_ID> logId=<LOG_ID>。
  • 下载平台日志产物(macOS arm64 / Windows x64 / Linux x64 对应作业 macOSSmokeFlaky、WindowsSmokeFlaky、LinuxSmokeFlaky,产物名形如 logs-<平台>-smoke-<attempt>),并可用 az pipelines runs artifact list / download。产物按作业而非迭代发布,后续迭代可能覆盖共享日志目录,需保留精确任务日志,必要时用单迭代诊断运行。
  • 关联失败:以 smoke-test-runner.log 为准,结合失败任务时间范围与测试标题定位 Test start/Test end 区间,沿手势、派发、请求、工具循环、渲染、路由链路核查;检查 mock 场景 ID、请求体、响应标记、model turn 1/2 与 2/2。
  • 查看套件目录中的 exthost 扩展日志、main.log/renderer.log/agenthost.log、copilot-runtime-logs/process-*.log、playwright 截图与 trace;原生退出或渲染崩溃时下载 crash 产物。
  • 用 git show/log/blame 从 sourceVersion 与堆栈定位引入提交,区分引入竞态的提交、之后暴露时序的提交、仅增加诊断的提交。
  • 排队聚焦验证运行:az pipelines run --id 700 --branch <BRANCH> --commit-id <COMMIT_SHA> --parameters "iterations=[1,2,3,4,5,6]" VSCODE_BUILD_MACOS=true VSCODE_BUILD_LINUX=false VSCODE_BUILD_WIN32=true。
  • 本地验证:npm run compile --prefix test/smoke 与 node --experimental-strip-types build/hygiene.ts <changed-file>。

限制与注意:不要仅靠增大超时修复竞态;不要用首次出现的测试标题匹配区间;不要因一次看起来最新的列表行就假定属于当前会话;取消平台作业可能导致日志产物不再发布;验证分支与提交须已推送到 microsoft/vscode,排队前取消同分支上过期的 700 运行。具体费用、平台支持范围等资料未提供。