前端 PR 證據
使用相同的測試環境、視口與互動,記錄 PR 的合併基礎版本與頭部分支版本,然後透過 gh 將兩段錄製內容作為一則 PR 評論發布。儲存庫的 PR 技能負責管理 PR 主體內容。$SCRATCH 代表對話暫存目錄。使用腳本的絕對路徑來執行它們。
步驟
- 解析修訂版本。 從
gh pr view PR_URL --json baseRefName,headRefOid讀取baseRefName與headRefOid。執行git fetch origin BASE_BRANCH pull/PR_NUMBER/head,然後執行git merge-base origin/BASE_BRANCH HEAD_SHA。當兩個 SHA 都在本地解析完成後,此步驟完成。 - 建置兩個修訂版本。 當每個修訂版本都有一個建置完成的輸出目錄或一個正在運行的開發伺服器,且其原始碼與其 SHA 相符時,此步驟完成。
- 編寫流程 於
$SCRATCH下,從範例開始,並遵循下方的流程介面。 - 捕獲 使用
node scripts/capture.cjs FLOW "$SCRATCH/evidence"。當執行失敗時,錯誤訊息會指出需要修復的內容:安裝指令、從應用程式導航離開、或是標示問題。選擇器失敗也會在輸出資料夾中留下failure.png與failure-aria.yml。修正流程並重新執行。此步驟完成條件為:- 指令以退出碼 0 結束;
- 每個
manifest.network中的條目都已說明(在模擬執行中,每個條目都是一個未被模擬的呼叫); comparison.png在兩個階段中都框選出變更範圍;video-contact-sheet.png顯示游標到達每個目標,並且最終狀態被保留。
- 發布 使用
node scripts/publish.cjs "$SCRATCH/evidence" PR_URL。它會確認證據與 PR 當前的頭部分支與合併基礎相符,發布包含比較圖與影片的comment.md,並檢查 GitHub 是否已託管兩者。對同一捕獲結果重新執行此腳本會重複使用同一則評論。如果gh auth status顯示未登入,僅針對此步驟要求使用者處理。如果發布被持續阻擋,請保留工件並報告確切的錯誤訊息。當它印出評論 URL 時,此步驟完成。 - 連結 將 PR 主體中證據區段的評論 URL 連結起來。當 PR 主體連結了
publish.cjs為當前頭部分支所印出的 URL,並取代任何先前的證據連結時,此步驟完成。 - 清理 你啟動的伺服器與工作目錄。確保工件、Cookie 及儲存狀態檔案不會被納入版本控制。
流程介面
一個流程模組需要匯出:
description:所測試的互動以及資料是模擬的還是真實的。這會成為評論文字。phases:兩個{ label, revision, url | dir, run }條目,分別為 Before 與 After。dir是一個建置完成的輸出資料夾,由輔助函式提供服務,客戶端路由會回退到index.html。url指向一個正在運行的開發伺服器。viewport(可選,預設為 1440×900)。setup(page, phase)(可選):在每個階段的首次導航之前執行,頁面會重設路由、初始化腳本、Cookie 和儲存狀態。在此處註冊模擬、種子資料和授權裝置。路由比對採用最新優先,因此在特定模擬之前註冊一個全捕捉中止路由。warmup(page, phase)(可選):在頁面載入後未記錄的情況下執行,例如當開發伺服器正在編譯時。run(page, tools):執行互動並斷言每個階段的預期狀態,使用tools.click(locator)、tools.point(locator)和tools.highlight(locator, label?)。每個階段至少需要一個標示,且當run返回時仍需可見。
輸出項目:before.png、after.png、comparison.png、comparison.webm、video-contact-sheet.png(影片的時間戳幀)、manifest.json 和 comment.md。
已認證的應用程式。 輔助函式的 Chromium 在啟動時沒有登入資訊:其他地方的瀏覽器工作階段與 gh 認證不會影響它。請在 setup 中重現已登入狀態;範例展示了兩種方法。如果需要即時認證證據,但捕獲環境無法達成,請報告此限制以及實際執行的檢查。
在變更腳本或升級 Playwright 後,請執行 node scripts/capture.test.cjs。設定 CAPTURE_TEST_OUTPUT=DIR 來保留其工件,以及 PLAYWRIGHT_MODULE=PATH 來測試另一個 Playwright 安裝。