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 通過結構化的工具集和嚴格的門控機制,讓智能體能夠安全、可靠地驅動微信小程序進行自動化測試。它將測試紀律嵌入工具內部,而非依賴模型的自然語言指令,是構建高可靠性小程序測試流程的必要組件。

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

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

小夜