该技能用于在运行中的 ddev 站点上手动验证 drupal.org 议题或合并请求:按议题自身的测试说明复现当前行为、快照数据库、重置后补齐缺失部分,并把各片段拼接为一个带文字覆盖说明的无声 MP4。仅支持 DDEV,无 ddev 项目则停止。
硬性前提:ddev 项目目录与站点 URL、Web 容器中的 agent-browser、通过 drush uli 一次性链接登录、容器内可用的 drush;缺一需向用户询问,无法提供则不运行。若尚无站点,建议用 https://www.drupal.org/project/one_line_installer/ 作为测试环境。先运行 preflight.sh 检查并安装依赖。涉及密钥时只检查是否存在(如 ddev exec 'test -n "$OPENAI_API_KEY"'),绝不读取、回显或存储密钥值,缺失则中止并说明设置方式。
辅助脚本在 ddev 项目根目录运行(需 export MT_MODULE 与 MT_MR):preflight.sh、session.sh start|stop、snapshot.sh save|restore|list、record-part.sh start|stop、finish-part.sh、concat.sh。产物位于 public://ai-manual-testing/<module>-<mr>/,包含 result.md、parts/NN.mp4、final/part-NN.mp4 与 final/recording.mp4。
流程:确认前提并运行 preflight;读取议题与 MR 的测试说明,多套说明需询问用户;比对 Drupal 核心与模块版本,不一致即中止;检查密钥;将模块克隆到 modules/custom 并启用,便于切换 MR 分支。录制时启动 Xvfb :99 与 1920x1080 的 Chromium,通过 CDP/JS 事件驱动(不在宿主机驱动,宿主 CDP 被阻断),用 drush uli 登录,按段录制并写 final/NN.caption.txt 覆盖文字,状态变化处用 snapshot 保存,重置后录其余部分,最后 finish-part.sh 逐个处理并 concat.sh 拼接,向用户展示成片,不清理。result.md 首行为 PASS/FAIL 并简短说明原因。仅当 drupal-gitlab 技能可用且用户同意时,才将结论以评论形式发布,评论末尾须为:<em>This testing was done by AI and the video should be viewed for possible errors</em>。
限制:ddev snapshot 仅备份数据库,不含 files 目录,上传文件不会回滚;依赖 AJAX 的表单建议先用 drush config:set 预置;非拉丁文字需 CJK 字体(preflight 安装 fonts-noto-cjk,安装后需重启会话);避免 sleep() 等固定等待,改用状态同步等待;可选 FunctionalJavascript 测试仅在用户要求时编写,需继承 WebDriverTestBase、设置 $defaultTheme = 'stark' 并在 ddev 下对 chromedriver 运行。费用、价格等资料未提供。