SuperAPI AI 工具集

bagisto-change-verification

测试与质量

查看项目

更新于 10-15 17:24

技能介绍

用途:这是 Bagisto 的完成门禁。一个变更只有在它触及的每个门禁都通过并报告后才算完成。四个门禁对应 .github/workflows/ 中的五个测试工作流(E2E 分为 Admin 与 Shop 两个),本地通过即流水线通过。

主要能力与用法(按顺序执行,风格只需数秒,E2E 需数分钟,Pint 失败则后续无意义):

  1. 风格:vendor/bin/pint 修复,vendor/bin/pint --test 确认(CI 用此形式)。Pint 不格式化 .blade.php,Blade 风格需手工处理。
  2. 测试:vendor/bin/pest;可按目录或套件运行,如 vendor/bin/pest packages/Webkul/Admin/tests/Feature、vendor/bin/pest --testsuite="Admin Feature Test"。套件在 phpunit.xml 中,每个有测试的包一个;无 tests/ 目录的包没有套件。
  3. 端到端:Admin、Shop、Installer 是独立的 Playwright 项目,Node 依赖按包安装,无根 node_modules,须在包目录内运行:cd packages/Webkul/Admin(或 Shop、Installer),npm run typecheck,npm run test:e2e -- tests/<area>/<file>.spec.ts。本地只跑改动涉及的 spec 并报告。
  4. 翻译:php artisan bagisto:translations:check。键必须在 Resources/lang/ 下全部 22 个语言环境中存在,缺一个即失败。该检查器只扫描 packages/Webkul,其他来源安装的包(如符号链接扩展)会误报成功。
  5. 命名:路由名 snake_case、翻译键 kebab-case、存储目录复数且 kebab-case,naming.md 提供对应 grep,均应无输出。

安全关卡:不是门禁,没有返回“安全”的命令。需回答 diff 是否触及授权、渲染输出、用户输入、上传、原始 SQL、密钥或支付;是则加载 bagisto-coding-standards 按其清单处理,否则明确说明未触及。

基线:Bagisto 套件并非每次检出都全绿,部分测试断言绝对计数,且套件共享数据库无回滚,计数会漂移。报告失败前先还原改动、重跑同一命令,比较失败测试名而非数量,空 diff 才是门禁通过的证据。

规则:未运行的门禁即失败,需逐一显式报告,包括未触及的(如“无视图或 JS 改动——跳过 Playwright”);修原因而非改检查,不得删测试、放宽断言或加 Pint 排除;非自己造成的既有失败也要报告并附证据;修复需通过反向验证(还原修复看新测试失败);前端改动后重建资源再跑 E2E:cd packages/Webkul/<Admin|Shop> && npm run build;除非被要求,验证时不提交或暂存。

常见错误:报告数量而非名称;对全仓库跑 Pint 并报告他人债务(应限定改动路径);只改 en 就声称翻译门禁通过;把翻译门禁通过当作覆盖扩展;因“只是 Blade 改动”跳过 E2E。