dsh-mp-automator:微信小程序自动化测试插件

前言

DeepSeek Harness(DSH)采用“一切皆插件”的理念。在开发智能体应用时,测试微信小程序需要驱动真实运行环境。传统的 UI 测试容易受环境变化影响,且纯文本模型难以准确判断屏幕状态。dsh-mp-automator 插件通过选择器寻址、构建新鲜度门、几何断言等机制,为智能体提供了纪律层,确保测试动作的准确性和可靠性。

前置条件

使用本插件前,请确保满足以下环境要求:

  1. 操作系统:仅支持 macOS。
  2. 微信开发者工具:需在设置中开启服务端口(路径:设置 → 安全设置)。
  3. 依赖版本:
    • Node.js >= 20
    • dsh >= 0.1.0-rc.5
    • vince-mp-cli >= 0.2.0 < 0.3.0

安装

在终端中执行以下命令将插件安装到你的 dsh profile 中:

dsh plugin --profile web add dsh-mp-automator

安装后,需在微信小程序项目目录(包含 project.config.json 的目录)中开启 dsh 会话。

核心能力

本插件提供八个 mp_* 工具,用于驱动真实运行的小程序:

  • mp_session:持久 DevTools 会话,支持重启、重连等操作。
  • mp_doctor:项目体检,检查 CLI、编译产物新鲜度。
  • mp_inspect:获取页面栈、数据、元素事实表、系统信息等。
  • mp_query:选择器寻址,返回几何事实表(完全可见、部分可见、不可见等)。
  • mp_act:执行点击、输入、长按、导航、免摄像头扫码等动作。
  • mp_screenshot:截图落盘并生成几何事实表。视觉路由额外附真实截图。
  • mp_console:获取报错日志和最新日志。
  • mp_eval:在页面 VM 中执行 JavaScript 代码。

关键机制

为了解决智能体测试中的常见静默失败问题,插件内置了以下机制:

  1. 选择器寻址:元素 uid 会随重连或页面导航变化,插件强制使用选择器作为操作句柄,避免点到错误的元素。
  2. 构建新鲜度门:每次执行前检查编译产物是否最新,防止在过时的代码上测试。
  3. Fail-closed 机制:只有 ok === true 算成功,任何解析错误或检查失败都会导致测试不通过,不会产生误导性的绿色结果。
  4. 双路径截图:
    • 几何事实表:所有模型都能获取,包含元素坐标和可见性标志。
    • 真实截图:视觉路由额外附真实 PNG 图片,供纯文本模型进行几何断言。

配置

在 dsh profile 的 cordis.patch.yml 中添加以下配置:

- id: mp-automator
  config:
    freshnessMode: block   # block(默认) | warn | off
    enableEval: true       # mp_eval 开关
    imageBudget: 3         # 视觉路由每会话最多附加截图数
    screenshotDir: captures # 截图落盘目录
    binPath: vince-mp      # CLI 可执行文件路径
配置项 默认值 说明
freshnessMode block 产物过期时是拒绝执行还是仅警告
enableEval true 是否允许使用 mp_eval 执行 JS
imageBudget 3 视觉路由的图片预算,0 为完全禁用附图
screenshotDir captures 截图保存的相对路径
binPath vince-mp vince-mp CLI 的路径

典型用法

  1. 测试页面跳转:使用 mp_query 确认按钮可见,用 mp_act 点击,随后用 mp_query 验证新页面元素,最后用 mp_console 确认无报错。
  2. 免摄像头扫码:通过 mp_act 的免摄像头 scan 注入功能模拟扫码操作。
  3. 几何断言:在纯文本模型中,通过 mp_screenshot 返回的几何事实表(如 fully-visible 标志)来判断元素是否存在,而非依赖文字识别。

注意事项

  • 字节限制:所有工具输出都受字节上限约束,长测试会话经历上下文压缩后依然可读。
  • 原生浮层:wx.showLoading 等原生浮层不会出现在截图中,不应依赖截图来断言浮层出现。
  • 版本窗口:依赖的 vince-mp-cli 必须在 >=0.2.0 <0.3.0 范围内,否则会拒绝执行并提示升级。

总结

dsh-mp-automator 通过结构化的工具集和严格的门控机制,让智能体能够安全、可靠地驱动微信小程序进行自动化测试。它将测试纪律嵌入工具内部,而非依赖模型的自然语言指令,是构建高可靠性小程序测试流程的必要组件。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜