SuperAPI AI 工具集

playwright-triage

测试与质量

查看项目

更新于 10-31 09:37

技能介绍

用途

playwright-triage 是运行在 microsoft/playwright-cli 仓库 Issue triage GitHub Actions 工作流中的自动化技能,无人值守地分诊并修复一个 issue,或执行维护者任务。它首先完整阅读共享指南 $AGENT_GUIDES_DIR/triage.md(即 microsoft/playwright/.github/actions/run-agent/guides/triage.md 的副本)以及 CLAUDE.md。前者说明如何在任意 Playwright 仓库中分诊 issue,后者说明如何构建、测试和 lint 本仓库。本技能文件补充两者未覆盖的内容:代码位置、检出目录、如何运行已发布版本,以及本仓库新增的产出——在 microsoft/playwright 中的修复。

代码位置

本仓库是 npm 包 @playwright/cli,包含 playwright-cli.js 及其更新检查、skillCheck.js、README、skills/playwright-cli/ 中的技能,以及打包 CLI 的一些测试。package.json 固定了该包运行所依赖的 playwright 与 playwright-core 的 alpha 版本。CLI 本体位于 microsoft/playwright 的 packages/playwright-core/src/tools/:cli-client/ 包含命令及其选项,cli-daemon/ 包含在命令之间保持浏览器打开的守护进程,backend/ 包含命令运行的工具。大多数 bug 和功能请求都在那里修复。仅当原因属于本仓库拥有的文件时才在此修复。skills/playwright-cli/ 是 packages/playwright-core/src/tools/skills/playwright-cli/ 的副本,由 scripts/update.js 在 roll 时刷新,因此其修复也属于上游。

检出目录

$REPO_DIR 是指南所述的 microsoft/playwright-cli 检出。其中已运行 npm ci,并安装了固定版本的浏览器。CLI 默认使用 runner 镜像中的 Google Chrome;缺失时用 npx playwright install chrome 安装。该克隆是浅克隆,需要其历史前先运行 git fetch --unshallow --tags origin。

$PLAYWRIGHT_DIR 是 microsoft/playwright 在 main 顶端的克隆,位于 $REPO_DIR 旁边。其中已运行 npm ci 和 npm run build,并安装了 Chromium、Firefox 和 WebKit。它对本仓库而言是 tip-of-tree:在那里复现,作为其 tests/mcp/cli-*.spec.ts 中的测试,使用 tests/mcp/cli-fixtures.ts 的 cli fixture。npm run test-playwright-cli 运行这些测试。编写测试前完整阅读其 AGENTS.md,其中说明如何构建、测试和 lint。该克隆有完整历史,文件内容按需获取,因此 git log 和 git tag --contains 可用。

固定版本比 tip-of-tree 旧。npm view playwright-core@<alpha> gitHead 打印某个 alpha 构建所基于的上游提交。

在 microsoft/playwright 中修复

当修复位于 $PLAYWRIGHT_DIR 时,遵循该处指南的 Fix 部分(替代 $REPO_DIR):在 $PLAYWRIGHT_DIR 中从 main 创建分支 fix-<n>,将回归测试放入其 tests/mcp/cli-*.spec.ts,按其 AGENTS.md 构建和 lint,并按约定提交,例如 fix(cli): ...。然后将提案放在 $OUTPUT_DIR/upstream-fix/(替代 $OUTPUT_DIR/fix/),包含相同文件:

  • fix.patch:$PLAYWRIGHT_DIR 中 git diff --binary main HEAD 的输出。
  • pr-body.md:按指南所述。Fixes 行包含 issue 的完整 URL,Fixes https://github.com/microsoft/playwright-cli/issues/<n>,以便 PR 关闭本仓库的 issue。
  • proposal.json:按指南所述,最后写入。

publish 作业在 microsoft/playwright 中打开草稿 PR。该仓库的 revision 工作流处理评审。只留一个提案:fix/ 或 upstream-fix/,不能两者都有。不要在此更改 package.json 来引入修复,它会随下一次 roll 到达 @playwright/cli。

检查两个仓库中关联的 PR。microsoft/playwright 中的 PR 用完整 URL 或 microsoft/playwright-cli#<n> 关联本 issue。也可在那里搜索:repo:microsoft/playwright is:pr "playwright-cli/issues/<n>" 和 repo:microsoft/playwright is:pr "playwright-cli#<n>"。来自团队或 microsoft-playwright-automation 的 PR 是团队 PR。在 $PLAYWRIGHT_DIR 中验证那里的 PR。

已修复意味着 tip-of-tree 通过而固定版本失败。修复随下一次 roll 到达用户。用 git -C $PLAYWRIGHT_DIR log <gitHead of the pinned alpha>..main -- packages/playwright-core/src/tools 找到上游 PR,并在说明中命名它。

已发布版本

要运行已发布版本(例如 reporter 的版本或用于二分),创建 $SCRATCH_DIR/playwright-cli-<n>/<version>/ 并在其中运行:

npm init -y npm i @playwright/cli@<version> npx playwright-cli --help

那里没有仓库的 fixtures。在该目录中以 npx playwright-cli 命令运行精简复现,或作为生成它们的脚本运行。从 data: URL 或脚本中的 http.createServer() 提供页面。完成后运行 npx playwright-cli close-all,以免守护进程保持打开。

npm view @playwright/cli@<version> dependencies.playwright-core 打印某发布版的 alpha。用 git -C $PLAYWRIGHT_DIR log <good gitHead>..<bad gitHead> -- packages/playwright-core/src/tools 将回归匹配到上游提交。

第三方 PR

不要在本仓库运行更改 package.json、package-lock.json、scripts/、.github/、.azure-pipelines/ 或 .claude/ 的 PR。对于 microsoft/playwright 中的 PR,适用 $PLAYWRIGHT_DIR/.claude/skills/playwright-triage/SKILL.md 中的列表。

适用场景与限制

该技能面向 Playwright CLI 的 issue 分诊与修复,尤其是需要在上游 microsoft/playwright 中修复并同步回 @playwright/cli 的场景。限制包括:仅当原因属于本仓库拥有的文件时才在本仓库修复;skills/playwright-cli/ 的修复属于上游;只留一个提案;不更改 package.json 来引入修复;不运行更改特定配置文件的第三方 PR。