一键导入
browser-tester
Git diff 驅動的瀏覽器模擬人工測試工作流程。分析程式碼變更、映射影響範圍、使用 agent-browser 執行瀏覽器測試、錄製影片截圖、產出測試報告。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Git diff 驅動的瀏覽器模擬人工測試工作流程。分析程式碼變更、映射影響範圍、使用 agent-browser 執行瀏覽器測試、錄製影片截圖、產出測試報告。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
驗收標準對齊評估方法論。給定用戶原始任務需求 + 上游 agent 產出,本 SKILL 提供萃取 testable criteria、4 大評估維度、報告格式、與 reviewer agents 的職責邊界、以及 WEB / 桌面 / CLI / 純文件的驗收手法分流。供 acceptance-evaluator agent 載入;orchestrator 直接 evaluate 簡單任務時也可參考。
技術文件研究員的完整工作流程與規範。涵蓋文件爬取流程(Library / 主題兩種模式)、 品質規範與行為準則、SKILL 產出模板與驗收流程。 供 lib-skill-creator agent 執行文件研究與 SKILL 產出時載入。
Markdown 轉換的完整工作流程。涵蓋 markitdown MCP 轉換、圖片處理與上傳、 SVG/Mermaid 渲染、輸出品質處理與清理。 支援 PDF、Word、PowerPoint、Excel、HTML、圖片、音訊等格式。 供 markdown-creator agent 執行文件轉換時載入。
Agent 工廠。根據黃金法則創建符合最佳實踐的薄殼 Agent + 配套 Skills。 當用戶需要「建立 agent」、「新增 agent」、「create agent」、「設計 agent」、 「agent 工廠」、「造一個 agent」時使用此 skill。
Multi-pattern text search, filtering, and replacement using the Aho-Corasick algorithm. Use this skill whenever the user wants to: search for multiple keywords/patterns simultaneously in text or files, filter or detect sensitive words, scan multiple files for a list of terms, or redact/replace matched content. Triggers on phrases like "掃描關鍵字", "敏感詞過濾", "多個 pattern 搜尋", "批次掃描", "redact", "replace patterns", "keyword filter", "find multiple words", "scan files for patterns", or any task involving simultaneous multi-pattern matching. Always prefer this skill over naive grep loops when more than one pattern is involved.
Turns ideas into approved design specs through Socratic dialogue, with a HARD-GATE blocking any implementation until a design is written and approved. Use before any creative work: features, components, WP plugins / Gutenberg blocks, behaviour changes, architectural proposals. Triggers: 思考一個新功能, 比較多種實現方式, 寫設計文件, 探索 design 方案, 業務需求 trade-off, 多個 approach 比較, 規劃新模組, brainstorm a feature, design a component, compare approaches, write a spec.
| name | browser-tester |
| description | Git diff 驅動的瀏覽器模擬人工測試工作流程。分析程式碼變更、映射影響範圍、使用 agent-browser 執行瀏覽器測試、錄製影片截圖、產出測試報告。 |
根據 git diff 自動判斷受影響頁面,使用 agent-browser 模擬人類操作,錄製影片並截圖重點。
agent-browser 為外部 CLI,非本 plugin 打包。偵測方式:
agent-browser --version
可用 → 若環境有 user-level agent-browser skill 則優先載入該 skill;否則直接下 CLI 指令(自助文件:agent-browser skills get core --full)。
未安裝(互動情境) → 提示用戶安裝並等其決定,不得靜默跳過或改用其他工具:
npm install -g agent-browser # 安裝 CLI
agent-browser install # 首次使用下載瀏覽器 binary
未安裝(CI 環境,GITHUB_ACTIONS=true) → 自動安裝後繼續:
npm install -g agent-browser && agent-browser install
用戶拒裝 → 輸出「瀏覽器測試依賴缺失:請執行 npm install -g agent-browser && agent-browser install」並中斷所有操作。
agent-browser daemon 常駐,指令間 session 保留、可用
&&串接;headless 預設,本機除錯可加--headed。後續 Phase 3 的指令一律以agent-browser <verb>具體形式執行。
IS_CI=$(printenv GITHUB_ACTIONS || echo "false")
記住 IS_CI 值,後續決定報告模式(本地 vs CI)。
按以下優先級取得 BASE_URL:
APP_URL、SITE_URL、WP_URL、BASE_URL.env 中的 URL 相關設定package.json 的 scripts.dev / scripts.start 中的 port.wp-env.json 中的設定(WordPress 項目)docker-compose.yml 中的 port mappinghttp://localhost:3000、:5173、:8080、:8888如果無法確定 URL → 向用戶詢問,或中斷操作。
mkdir -p output/playwright/browser-test/videos
mkdir -p output/playwright/browser-test/screenshots
# 取得預設分支名稱
DEFAULT_BRANCH=$(git remote show origin 2>/dev/null | grep 'HEAD branch' | awk '{print $NF}')
DEFAULT_BRANCH=${DEFAULT_BRANCH:-master}
# 取得變更檔案清單(含統計)
git diff "origin/${DEFAULT_BRANCH}...HEAD" --name-only --stat
將每個變更檔案歸入以下類別:
| 類別 | 特徵路徑模式 | 測試策略 |
|---|---|---|
| API 變更 | routes/ controllers/ services/ api/ endpoints/ rest-api/ | 導航到所有呼叫該 API 的頁面 |
| UI 頁面變更 | pages/ views/ screens/ templates/ admin/ | 導航到所有修改到的頁面 |
| UI 組件變更 | components/ widgets/ blocks/ partials/ | 導航到其中一個使用該組件的頁面 |
| 非前端變更 | migrations/ config/ tests/ .github/ docs/ styles-only | 跳過瀏覽器測試 |
如果所有變更都歸類為「非前端變更」:
測試結果:無瀏覽器可測變更
變更摘要:
- {列出變更檔案}
- 這些變更不涉及前端頁面或 API,無需瀏覽器測試
輸出此報告後結束。
如果 Serena MCP 可用:
find_referencing_symbols 找到引用它的程式碼createBrowserRouter / <Route> 定義add_menu_page / add_submenu_page 註冊pages/ 或 app/ 目錄結構推斷Serena 不可用時:
grep 搜尋 import/require 語句找到引用檔案pages/orders/index.tsx → /ordersadmin/class-settings-page.php → /wp-admin/admin.php?page=settings| 變更類別 | 測試範圍 |
|---|---|
| API 變更 | 導航到所有呼叫該 API 的頁面,逐一測試 |
| UI 頁面變更 | 導航到所有被修改的頁面,逐一測試 |
| UI 組件變更 | 導航到其中一個使用該組件的頁面測試 |
在執行測試前,先整理出測試計畫:
## 測試計畫
### 變更摘要
- API 變更:{N} 個檔案
- UI 頁面變更:{N} 個檔案
- UI 組件變更:{N} 個檔案
### 測試目標
1. {URL} — {變更類型} — {預期行為}
2. {URL} — {變更類型} — {預期行為}
...
對測試計畫中的每個目標 URL 執行以下流程。
錄影畫質規範:所有錄影必須為 1080P (1920x1080)。agent-browser 錄影解析度跟隨 viewport,因此必須先
agent-browser set viewport 1920 1080再agent-browser record start(第 2 步的set viewport 1920 1080是強制規範),不可省略也不可降低——它直接決定了錄影畫質。若未來 agent-browser 提供record start的解析度參數,仍須鎖定 1920x1080。
# 1. 開啟頁面
agent-browser open "${BASE_URL}${path}" --headed
# 2. 統一視窗解析度為 1920x1080(決定錄影畫質為 1080P,必做,須在 record start 之前)
agent-browser set viewport 1920 1080
# 3. 開始錄影(必須在所有操作之前;輸出路徑於此指定;錄影畫質 = 1920x1080 = 1080P)
agent-browser record start "output/playwright/browser-test/videos/${scenario_name}.webm"
# 4. 取得頁面元素參考(-i 只列互動元素,回傳 @ref)
agent-browser snapshot -i
# 5. 執行測試操作(見 3.2 各類型操作指引)
# ...
# 6. 截圖重點時刻(見 3.3 截圖指引)
agent-browser screenshot --full
# 7. 檢查 console 錯誤(log/warn/error/info)
agent-browser console
# 8. 檢查網路請求
agent-browser network requests
# 9. 停止錄影並儲存
agent-browser record stop
network 確認 API 請求狀態碼截圖只截重點部分,不截整頁:
| 變更類型 | 截圖重點 |
|---|---|
| API 變更 | API 發出後,成功的回應通知(toast / alert / 資料更新) |
| UI 頁面 | 頁面上變更的區域(使用元素截圖 agent-browser screenshot @ref) |
| UI 組件 | 頁面上顯示該變更組件的區域(使用元素截圖 agent-browser screenshot @ref) |
截圖儲存:
agent-browser screenshot --full "output/playwright/browser-test/screenshots/{scenario}-{step}.png" # 全頁截圖(備用)
agent-browser screenshot @e15 "output/playwright/browser-test/screenshots/{scenario}-{step}.png" # 元素截圖(優先,@ref 來自 snapshot)
# agent-browser 支援 screenshot [selector] [path],可直接指定輸出路徑,無需再手動搬移
以下操作後必須重新 snapshot:
每個頁面測試結束後,判定結果:
| 結果 | 條件 |
|---|---|
| 通過 | 頁面正常渲染 + 無 console error + 無 network 失敗 + 互動行為正確 |
| 警告 | 有 console warning 但無 error,功能正常 |
| 失敗 | console error / network 4xx-5xx / 頁面崩潰 / 互動異常 |
所有模式(本地 + CI)均使用以下格式,並必須將報告寫入檔案:
# 所有測試完成後,用 Bash 工具將報告寫入此路徑(必做,不可省略)
cat > output/playwright/browser-test/test-report.md << 'REPORT_EOF'
# 瀏覽器模擬測試報告
## 測試摘要
- **測試日期**:{YYYY-MM-DD}
- **變更來源**:`git diff origin/{branch}...HEAD`
- **測試頁數**:{N} 頁
- **結果**:✅ {pass} 通過 / ⚠️ {warn} 警告 / ❌ {fail} 失敗
## 測試結果明細
### {N}. {頁面名稱} ({URL})
- **變更類型**:{API/頁面/組件}
- **結果**:✅/⚠️/❌
- **操作步驟**:
1. {step}
2. {step}
- **截圖**:
- 
- **影片**:
- [▶️ 觀看影片](videos/{NN}-{name}.webm)
- **Console 錯誤**:{有/無}
- **Network 異常**:{有/無}
REPORT_EOF
⚠️ 重要:報告必須寫入磁碟(
output/playwright/browser-test/test-report.md),不可只輸出到終端。
當 GITHUB_ACTIONS=true 時:
⚠️ 禁止使用
ghCLI 發佈 Issue Comment。 在此 CI 架構中,後續的 workflow steps 會自動讀取test-report.md、上傳媒體到 CDN 並發佈 Issue Comment。 Agent 的職責只是確保output/playwright/browser-test/test-report.md正確寫入磁碟,其餘由 CI 處理。
CI 模式檢查清單:
output/playwright/browser-test/test-report.md 已寫入output/playwright/browser-test/screenshots/output/playwright/browser-test/videos/| 錯誤情境 | 處理方式 |
|---|---|
| agent-browser 不可用(未安裝且用戶拒裝 / CI 自動安裝失敗) | 輸出依賴缺失指引,中斷操作 |
| 測試 URL 不可達 | 輸出提示(啟動 dev server / 提供 URL),中斷操作 |
| 頁面載入超時 | 記錄為失敗,繼續測試下一個頁面 |
record start 失敗 | 記錄警告,改用連續截圖模式,繼續測試 |
| 元素參考過期 | 重新 snapshot,重試操作 |
| 無法映射 URL | 記錄為「無法映射」,跳過該檔案 |
| git diff 為空 | 輸出「無變更」報告,正常結束 |
| Serena 不可用 | 降級到啟發式映射,繼續測試 |