首頁工具

Canary:Claude Code 的 E2E QA 測試框架

2026-06-08 · github.com/wizenheimer/canary · 91 ⭐
一句話:讀取 code diff → 自動識別受影響的 UI 流程 → Claude Code 在真實瀏覽器測試 → 產出可重用的 Playwright 腳本。每次 QA 零推理成本重跑。

核心機制

QuickJS WASM 沙箱:最巧妙的設計

Canary 最驚豔的技術選型是 QuickJS WASM。傳統 E2E 測試框架(Playwright、Cypress)需要 Node.js 執行環境和完整的瀏覽器驅動。Canary 把整個 Playwright 相容 API 編譯進 QuickJS WASM,讓它在 Claude Code 的沙箱內直接執行——不需要額外安裝、不需要系統權限、不需要 Docker。

這對 AI agent 場景特別重要:agent 可以 spawn 一個 Canary 測試、取得結果、根據結果修 code——全程不需要 agent 有系統級的瀏覽器存取權限。沙箱化降低了安全風險。

與傳統 E2E 框架的本質差異

維度CanaryPlaywrightCypress
誰寫測試AI agent(自動)人類開發者人類開發者
測試來源Code diff 驅動手寫 spec 檔手寫 spec 檔
執行環境QuickJS WASM 沙箱Node.js + 瀏覽器瀏覽器內
可重用性輸出標準 Playwright 腳本本身就是標準自訂格式
CI 整合單檔 report.htmlJSON/HTML reporterDashboard 服務

Canary 不是 Playwright 的替代品——它是 Playwright 的「AI agent 前端」。傳統 QA 流程是人寫測試→機器跑;Canary 的流程是 AI 讀 diff→AI 產生測試→AI 跑→人看報告。人的角色從「寫測試」變成「審報告」。

AI Agent QA 自動化的設計模式借鏡

Canary 揭示了三個可借鏡的設計模式:

  1. Diff-to-Test:從 code diff 自動推斷受影響的 UI 路徑,不需要預先定義測試範圍。這對 DKY 多站部署場景有意義——改一個 sidebar 就自動測試全站導航。
  2. Record-then-Replay:AI agent 首次探索時成本高(推理環節),但產出的 Playwright 腳本可零成本重跑。一次投入,N 次回收。
  3. 單檔報告:report.html 自包含所有截圖、logs、traces,直接拖進瀏覽器就能看。不需要 CI dashboard、不需要資料庫。對小型專案特別友善。

對 dky-tools 的可能應用

場景適用度說明
多站導航迴歸測試每次改 sidebar/common assets 後自動點遍六站連結
部署後 smoke test部署完成→自動開瀏覽器→確認首頁/子頁/工具頁正常
表單功能測試dky-tools 表單少,E2E 測試需求不大
視覺迴歸截圖對比找 CSS 意外變動

最務實的應用是「部署後 smoke test」——取代目前手動 curl + MD5 比對。Canary 可以直接開啟六站首頁、截圖、檢查 console 錯誤。

限制與風險

我的判斷

Canary 在 AI agent 輔助 QA 這個小眾場景中設計得非常好。但它目前太綁定 Claude Code 生態,且專案太新(91 stars)。對 DKY 的近期價值:借鏡 Diff-to-Test 和 Record-then-Replay 的設計模式,但不直接使用。

務實做法:在 dky-deploy-verify 的部署後驗證步驟中,手動加入一個 Playwright 腳本(不依賴 Canary),做六站 smoke test。等 Canary 成熟到跨平台(支援多種 coding agent)時再考慮整合。