用途:给定 Automattic/wp-calypso 的一个 PR 编号,找出该 PR 的 CI 运行中失败的 E2E 测试,交由 Playwright Test Healer 代理生成修复,并针对原 PR 分支开一个修复 PR,由 CI 验证修复。
前提工具:运行前先验证 GitHub CLI(gh,取自 https://cli.github.com/)可用且令牌有效(仅 gh auth status 不够,可能因密钥环令牌过期而误报),以及 TeamCity 访问令牌可用(GitHub 的提交状态只显示“构建失败”,具体失败测试需从 TeamCity REST API 获取)。任一未配置时,技能会引导用户完成配置。
主要步骤:
- 验证 gh 访问:以 gh api user 为权威探测。未安装则提示从 https://cli.github.com/ 安装后重跑;未认证或令牌失效,则引导执行 ! gh auth login -h github.com(选 HTTPS 与浏览器登录),成功后重跑检查,直到 GH_OK。
- 验证 TeamCity 访问:E2E 流水线在 teamcity.a8c.com,令牌存放于 ~/.config/teamcity-access-token(权限 0600,不在仓库内,且刻意避开 .claude/ 路径以免权限提示);多数 Automattic 工作站需 localhost:8080 的 SOCKS5 隧道。探测脚本会自动识别网络路径并校验令牌,返回 TC_OK、NET_UNREACHABLE、TC_TOKEN_MISSING/BAD 或 TC_HTTP_<code>。令牌需在 teamcity.a8c.com 的 accessTokens 页面创建,且不得粘贴到对话中(会被记录),须在独立终端运行 bash .claude/skills/fix-e2e-tests/setup-token.sh 以隐藏输入。
- 解析 PR:接受 PR 编号(如 110080)或 Automattic/wp-calypso 的完整 PR URL,用 gh pr view <PR_NUMBER> --repo Automattic/wp-calypso --json number,title,state,isDraft,headRefName,headRefOid,url,statusCheckRollup 校验并获取元数据。
- 定位失败 E2E 测试:从 statusCheckRollup 中筛选名称含 E2E 且状态为 FAILURE 的条目,从形如 https://teamcity.a8c.com/buildConfiguration/<config-id>/<build-id> 的 URL 提取 build-id;再用 curl 查询 TeamCity 的 testOccurrences 接口,并用 jq 精简为 {build, name, reason} 列表。查询需带 defaultFilter:false(顶层构建为矩阵,含 [Desktop]、[Mobile] 等子构建),并在 jq 层过滤 muted/currentlyMuted(不依赖 currentlyInvestigated,该标志不可靠)。命令保持单行,令牌路径固定,代理标志按 Step 2 结果内联。最后向用户呈现候选失败测试表格作为决策面。
限制:一次只处理一个 PR;仅适用于 Automattic/wp-calypso 仓库;需可访问 TeamCity,通常还需 SOCKS5 隧道;令牌和 gh 配置不正确时无法继续;其余细节(如费用、价格、具体平台支持)暂未提供。