@和为什么/e2e-管线
将完整的e2e测试管道纳入任何项目:代理辅助Playwright测试(通过 克劳德代码),CI运行于与Vercel预览相对抗,以及Checkly监视器跟踪出出产部署.
快开始
pnpm dlx @andwhy/e2e-pipeline init
CLI 将配置模板和工作流程写入您的项目并启用 e2e-pipeline Claude 代码插件 对于回波——插件带有代理定义,管弦规则,以及被引导的技巧,克洛德代码则自己不断更新. 安装纯粹是添加剂——它从不制造或覆盖 CLAUDE.md。 。 。 .
该插件位于 plugin/ 本存储库中,按下列市场列出: .claude-plugin/marketplace.json它在开发机上加载(terminal, VS 代码,桌面应用);一个 Claude. ai/code 云段不装入可重播的插件 .
设置和工作流程文件 : E2E 点中的测试 (为什么是机构内部的). 这些都保存在一个地方,而不是每个项目的脚手架上,因此一次发布工作流程变化.
选项
pnpm dlx @andwhy/e2e-pipeline init [--format ts|mjs] [--force] [--reset-config]
| 旗帜 | 说明 |
|---|---|
--format | 配置文件格式( E)ts 或者说 mjs) (中文(简体) ). 使用 mjs 如果TS引发了冲突。 如果省略则提示 . |
--force | 更新软件包拥有的文件并删除预插件副本 .claude/永远不要碰你的配置,工作流程, CLAUDE.md或者你拥有的任何东西. |
--reset-config | 写新字 *.new.{ts,mjs} 每个配置的旁边, 这样你就可以看到它。 汝所出正正等正觉. |
--update-workflows | 用可重复使用的工作流程的当前调用者来替换三个GitHub工作流程,并去掉即时和脚本副本,只读取了0.14.0前的工作流程. 单是脚手架会覆盖一个工作流程. |
代理,技能和规则通过插件自我更新;工作流程通过他们调用的可重复使用的工作流程更新. init --force 仅用于下面的软件包文件,以及 init --force --update-workflows 在0.14.0之前迁移回地脚手架.
创建什么
从插件 ——在回放中除了两个条目 .claude/settings.json (承诺):
playwright-test-planner, (中文(简体) ),playwright-test-generator, (中文(简体) ),playwright-test-healer代理人playwright-test-pipeline技术——有指导的行走; 当有人要求创建或固定测试并通过设置检查、计划 —— 生成 —— 治疗、预览验证和部署来护送测试时触发。 它还持有项目测试规则和代理即时模板.- 一个SessionStart 勾起始终如一的代表团规则( 向代理, 永远不要手写 spec body), 仅在承载管道的重置中活动
软件包 - 由 --force,所以不要用手编辑这些:
.mcp.json—— Playwright MCP 服务器配置( 项目根)playwright.mcp.config.{ts,mjs}配置 MCP 服务器负载: 延伸playwright.config和清除testIgnore,因此计划/生成者可以执行正常运行忽略的种子
种子过一次 - 开始点,然后你的项目拥有。 只写在不在场 从未被覆盖的时候, --force 包括:
playwright.config.{ts,mjs}—— Playwright 配置模板BASE_URL支助,testDir: "./tests/e2e",以及testIgnore种子checkly.config.{ts,mjs}——选中配置了占位符的模板tests/e2e/seed.spec.{ts,js}— Playwright MCP 种子文件setup_pagetests/e2e/helpers/preview-consent-setup.{ts,js}—— 说prepareVercelPreviewPage(Vercel 部署-保护绕行);项目延长时附有同意逻辑.github/workflows/pr-playwright-tests.yml——运行套件与PR的Vercel预览并评论结果.github/workflows/checkly-deploy.yml在生产部署成功时部署监测员.github/workflows/checkly-heal.yml——部署失败的显示器触发分化和疗效:生产回归立即升级为Slack,当病因出现在Repo自己的代码中时,作为PR草案的最小拟议固定; Stale测试得到固定并被硬化-包括行为中性的测试钩(Cdata-testid)在需要时应用源——并作为人审查PR打开,其自己的预览运行验证了应用侧钩. 直到一个Checkly Webhook警报频道向它发送信号——技能通过这个设置.
三个工作流程文件分别是几行的调用者. 工作在这个仓库里进行 .github/workflows/reusable-*.yml时引用 @main,所以在这里合并 更新每一个消费者的CI 没有PR在那里。 愈合时速templates/github/prompts/checkly-heal.md)和PR评论脚本(templates/github/scripts/playwright-pr-comment.mjs)从这些工作流程内已公布的npm包读取. 该存储库的一次性管理设置,因此其他重置者可将其工作流程称为:设置-行动-一般-访问-“可从组织内的存储库获取”.
工作流程需要存储器的秘密 : CHECKLY_API_KEY, (中文(简体) ), CHECKLY_ACCOUNT_ID, (中文(简体) ),
VERCEL_AUTOMATION_BYPASS_SECRET自动愈合 SLACK_WEBHOOK_URL
(值为 1Password). ANTHROPIC_API_KEY 是继承下来的组织秘密
由所有重置——无补.
E2E 规格在 tests/e2e/ 因此,回购可以保持单元测试 其他地方在
tests/ 没有Playwright试图运行它们。 种子坐在同一棵树上
不让试验发现 testIgnore 而不是生活在它之外.
代理商视此为默认, 而非规则 : 如果 Repo 已经有规格
在别的地方, 他们写在那里。 见项目测试规则6
规则 playwright-test-pipeline 技术.
.gitignore 增益 Playwright/测试输出和种子条目;现有行被保留.
脚手架文件格式化为项目本身的更漂亮文件 安装了,所以它们匹配 房子风格而不是这个包.
代理定制
这些特工将梵地拉 Playwright 测试代理延长为:
- 额外工具: 发电机得到
terminal, (中文(简体) ),edit, (中文(简体) ),read_file; 治疗者得到terminal data-testid工作流程: 发电机读取计划中推荐的属性,并在录取前添加到源组件中- Vercel 共享认证: 每一个
test.describe包含abeforeEach以 Vercel 预览部署认证 - 核查:发电机和愈合器运行
pnpm exec checkly pw-test当地测试合格后 - 编号步骤注释:每个逻辑步骤都得到一个注释(
// 1. Navigate to…(中文(简体) ) - 地方意识: 没有硬编码域或特定本地端的 URL 模式
- 可选输入草稿: 计划员可以验证用户提供的行程草稿与活页
插件
plugin/ 是标准布局中的 Claude 代码插件 : agents/, (中文(简体) ),
skills/playwright-test-pipeline/, (中文(简体) ), hooks/,以及 .claude-plugin/plugin.json。 。 。 .
agents/ 生成—— npm run build:plugin 内嵌
templates/claude/partials/_robustness-core.md 进入源
templates/claude/agents/ 并同步显示的版本 package.json。 。 。 .
输出是因为一个市场是一个 git 克隆; CI 失败拉动
请求其产出为停滞的(npm run check:plugin) (中文(简体) ).
在任何消费者回购中,在发布前尝试分支:
/plugin marketplace add why-agency/why-e2e-pipeline#<branch>
或启动 Claude 代码 --plugin-dir ../why-e2e-pipeline/plugin。 。 。 .
CI 中的自动愈合不会加载插件( 无头运行的 API 密钥有)
无插件来源:工作流程副本 plugin/agents/playwright-test-healer.md
因此 plugin/ npm 中的船舶
套件也一样.
文档
安装和使用指南 docs/notion/ 并且是来源于
事实 合并更改为 main 将其公布在地名网页上,盖章
与他们所记录的软件包版本。 在Notion中直接制作的编辑是
在下次出版时被覆盖 .
出版需要a NOTION_TOKEN 储存库秘密——一个编号PAT,或
内部整合标志,其整合已与两页共享.
拉请求运行 node scripts/publish-notion.mjs --dry-run转换
不写入, 无法在合并前完成 .
邮票显示 最新版本发布至 npm,而不是该版本
package.json。描述一个未发行版本的文档发送人们寻找
无法安装的特性 .
释放
弹出 version 内 package.json,添加一个 CHANGELOG.md 条目,合并到 main。 。 。 .
即通释出.
.github/workflows/release.yml 比较 package.json 对手的版本
没有。 如果两者不同,则发布并标记承诺;如果匹配,则退出
安静地,所以普通的合并 发布什么。 它需要一个 NPM_TOKEN 仓库
拥有出版权的秘密 @andwhy 范围.
发布时没有npm出处,这需要公共源寄存器.
许可证
麻省理工学院