簡短回答

您不需要新增工作流程檔案,也不需要撰寫從建置紀錄中擷取 Preview URL 的腳本。TestSprite 以 GitHub App 的形式安裝,監聽您的流水線早已產生的部署事件,依您設定一次的模式推算出 Preview URL,對其執行測試,並將結果以留言形式張貼回 Pull Request。

設定大約需要十分鐘,需要具備安裝 GitHub App 的管理員權限,且不需要變更您的儲存庫

您的流水線負責部署

Vercel 建置該 Pull Request,並在 GitHub 中產生部署事件。TestSprite 本身不會建置或部署任何內容。

TestSprite 接收事件

GitHub App 接收事件,依您的模式解析出目標 URL,並啟動測試執行。

結果會出現在 PR 上

留言中會包含通過/失敗數量、失敗步驟、截圖與修復提示——並可選擇加入必要檢查以阻擋合併。

前提條件:確認 Pull Request 會產生部署

TestSprite 是由部署事件觸發,因此該事件必須先存在,其他一切才會運作。開啟任何現有的 Pull Request,確認上面列出了附帶可點擊 URL 的部署,然後開啟該 URL,檢查 Preview 環境確實能載入。

在 Vercel 上,這會顯示為 Pull Request 上的機器人留言,列出專案名稱、Ready 狀態,以及 Preview 連結。AWS Amplify、Netlify,以及會建立 GitHub 部署的自架流水線,都會以各自的格式產生相同的訊號——重點在於部署確實存在,且其 URL 可以連上。

如果您的 Pull Request 上沒有出現部署,請先在此停下並修復您的 CI/CD 流水線。在部署事件存在之前,TestSprite 沒有任何可以監聽的對象。

步驟 1——將 GitHub 連接到您的工作區

這是每個工作區僅需執行一次的設定。在 TestSprite 中,前往Workspace Settings → Integrations,找到 GitHub 這一列,點選Connect。系統會將您導向 GitHub,選擇擁有該儲存庫的組織或個人帳號,接著選擇All repositoriesOnly select repositories,並點選Install & Authorize

在核准之前,值得先了解所請求的權限:

存取權限範圍
讀取Actions、checks、issues、metadata
讀取與寫入Code、commit statuses、deployments、pull requests

寫入權限用於將測試結果回貼到您的 Pull Request 與 Commit 上。TestSprite 不會推送 Commit,也不會修改您的工作流程檔案。如果安裝過程中未列出您的組織,代表您沒有為該組織安裝 GitHub App 的權限——需要組織擁有者核准。

步驟 2——將儲存庫連接到專案

開啟您想要連接的 TestSprite 專案,前往GitHub Action 分頁,點選Connect GitHub Action。接著選擇測試該如何被觸發:

觸發方式最適合結果顯示位置
Pull request在合併前抓出回歸問題Pull Request 上的留言
Push to branch在每次合併後測試如 staging 或 dev 等共用環境Commit 上的檢查

一個觸發條件就足以開始。您也可以兩者都建立——它們會各自獨立運作。

步驟 3——選擇代表「部署完成」的事件

選擇Pull Request 分頁,貼上一個已有可運作 Preview 部署的現有 Pull Request 的 URL,然後點選Detect Events。TestSprite 會列出它在該 Pull Request 上找到的 CI/CD 事件——GitHub Actions 檢查、來自 Vercel 或 Amplify 的機器人留言、工作流程執行——由您選擇由哪一個來啟動測試執行。

請選擇在部署上線、URL 可連上之後才觸發的事件。這是設定出錯最常見的原因:若事件在建置開始時就觸發,測試就會針對尚未就緒的 URL 執行,導致每個測試都失敗。

步驟 4——填入目標 URL 模式

每家託管服務商命名 Preview URL 的方式都不同,因此您需要告訴 TestSprite 如何為任一 Pull Request 建構出 URL。有五種佔位符可供使用:

佔位符對應內容
{pr}Pull Request 編號
{branch}分支名稱
{branch-slug}分支名稱(URL 安全格式)
{sha}完整 Commit SHA
{short-sha}縮短版 Commit SHA

請將此模式與實際的 Preview URL 逐字元比對:

您的 Preview URL 長這樣請輸入此模式
https://app-git-login-fix-team.vercel.apphttps://app-git-{branch-slug}-team.vercel.app
https://pr-123.example.comhttps://pr-{pr}.example.com

Vercel 預設的 Preview 主機名稱是根據分支建立的,這也是為什麼在此通常應使用 {branch-slug} 而非 {pr} 作為佔位符。如果您的託管服務商產生的是完全不可預測的隨機子網域,請為 Preview 環境設定一個穩定的別名 URL,並改用該別名。

Push 觸發完全不需要模式——它會針對您所選 TestSprite 環境所設定的 URL 執行,因此 dev 請選擇 Dev,main 請選擇 Production。

步驟 5——儲存前先送出測試事件

點選Send Test Event。這會像真正的觸發一樣,針對範例 Pull Request 執行您的測試,讓您能在正式套用前預覽整個流程。等候大約 30 秒後,回到 GitHub 上的 Pull Request——會看到出現一則 TestSprite 留言。

在繼續下一步之前,請先開啟該留言中的 URL。確認該連結可以連上,且指向您預期的環境。如果不正確,請修正模式並再送出一次測試事件,不要等到下一個 Pull Request 才發現問題。測試執行完成後,TestSprite 會在同一則留言中更新結果。

當測試事件看起來正確後,點選Create Trigger。它會出現在Triggers 清單中,標示為 Active,並在未來每個 Pull Request 上自動執行。有兩個選用切換開關值得謹慎設定:

切換開關功能說明
Include draft PRs對草稿 Pull Request 與待審核的 Pull Request 都執行測試
Block PR until tests pass將 TestSprite 檢查設為必要項目,因此測試失敗時會阻擋合併

如果您的 Preview 位於 Deployment Protection 之後

這是一種看起來像設定成功、實則失敗的情況。啟用 Vercel 的 Deployment Protection 後,每個 Preview URL 都會位於驗證關卡之後,外部測試者收到的會是登入頁面,而不是您的應用程式。測試不會出現錯誤——它們只是描述了一個誰也沒預期到的頁面。

步驟 5 中的檢查可以抓出這個問題:在無痕視窗中開啟 TestSprite 留言中的 URL。如果看到 Vercel 登入畫面,就代表保護功能已啟用。接下來有兩種做法:停用該 Preview 環境的保護功能,或使用 Vercel 的 Protection Bypass for Automation,它會產生一組密鑰,Vercel 會將其接受為 x-vercel-protection-bypass 查詢參數或標頭。由於目標 URL 模式本身就是一個 URL,查詢參數的形式可以直接附加在後面:

https://app-git-{branch-slug}-team.vercel.app?x-vercel-protection-bypass=YOUR_SECRET

請在 Project Settings → Deployment Protection → Protection Bypass for Automation 下產生此密鑰。這一步請務必謹慎——它會將繞過密鑰儲存在設定欄位中,因此若您的 Preview 環境不含任何敏感內容,停用保護功能會是更乾淨的做法。

解讀結果

測試執行完成後,TestSprite 會以結果更新其 Pull Request 留言——或 Commit 檢查。留言的結構固定,如果程式碼是由 AI 代理撰寫的,最後一列會是最重要的資訊:

區塊說明內容
Headline result通過、失敗與被阻擋的測試數量
Quality score依測試套件中可執行的子集計算而得。被阻擋的案例會被排除並另外回報,因為這通常代表測試環境上的落差,而非產品本身的回歸問題
Failed tests每個失敗項目展開後,會顯示預期結果、實際觀察到的結果,以及失敗當下的截圖
Suggested fix prompt一段可直接複製的提示,說明可能的根本原因與修復方式,可直接貼入您的 AI 程式碼代理

每個結果都會連回 TestSprite 中的完整報告。

驗證您的設定

在您依賴此整合功能之前,請確認以下五點:

  1. 工作區中的 GitHub 整合顯示為Connected

  2. 該儲存庫出現在專案的GitHub Action 分頁中

  3. 已列出一個觸發條件並已啟用

  4. 測試事件已產生 TestSprite 留言(Pull Request)或檢查(Push)

  5. 該留言或檢查中的 URL 可開啟正確的已部署環境

疑難排解

所有測試都失敗,且 URL 無法載入

觸發時機過早——使用的是建置開始或工作流程開始事件,而非部署完成事件。請編輯觸發條件,選擇在環境上線後才觸發的事件。

留言顯示錯誤的 URL

請將 URL 模式與實際的 Preview URL 逐字元核對。每次修改後都送出另一次測試事件,不要等到下一個 Pull Request。

Detect Events 未顯示任何事件

該 Pull Request 或分支沒有記錄任何 CI/CD 事件,或是 GitHub App 沒有該儲存庫的存取權限。請確認該儲存庫已包含在 App 安裝範圍內。

測試針對過時的環境執行

請確認所選的事件對應到您想測試的部署。如果一個分支有多個環境,請確認 Environment to test 的選擇是正確的。

未列出該組織

代表您沒有為該組織安裝 GitHub App 的權限。請請組織擁有者核准安裝,然後回到步驟 1。

測試通過,但應用程式其實是壞的

請檢查 Preview URL 實際回傳的內容。受保護的 Preview 會回傳登入頁面,測試可以在不失敗的情況下描述該頁面。

命令列替代方案

當您的流水線已經會產生部署時,GitHub App 是最適合的做法。如果您想改由自己的工作流程來驅動測試執行——或者您根本不是使用 GitHub——開源的 TestSprite CLI 可以在任何 CI 系統中完成相同的工作。它可免費安裝,並採用 Apache-2.0 授權:

npm install -g @testsprite/testsprite-cli
testsprite setup

將專案指向您已經解析好的 URL,並執行整套測試以取得結果:

testsprite project update prj_abc123 --url "$PREVIEW_URL"
testsprite test run --all --project prj_abc123 --wait --output json
#   exit 0 = everything passed, exit 1 = something is broken

testsprite ci init github 會為此路徑產生一份工作流程範本,而該 CLI 只需要環境中有 TESTSPRITE_API_KEY,因此同樣可以輕鬆用於 CircleCI、GitLab、Jenkins 或 Azure Pipelines。使用 --report junit --report-file <path> 可產生這些系統原生支援匯入的附加報告。

如果您在意的流程位於應用程式自身的登入機制之後,可以在專案中儲存一組測試帳號,讓測試執行時能夠登入驗證。以下兩個參數必須一起使用:

testsprite project update prj_abc123 \
  --username qa@example.com \
  --password-file ./.secrets/qa-password

常見問題

我需要在儲存庫中新增工作流程檔案嗎?

不需要。此整合完全在 TestSprite 中設定完成,不需要對您的儲存庫做任何變更。

這會取代我現有的 GitHub Actions 工作流程嗎?

不會。TestSprite 只是監聽您工作流程已經產生的事件——它不會修改或取代您的流水線。

支援哪些託管服務商?

任何會向 GitHub 回報部署,且提供可連上的 URL 的服務商都可以,包括 Vercel、AWS Amplify、Netlify,以及會建立 GitHub 部署的自架流水線。

我可以同時擁有 Pull Request 觸發與 Push 觸發嗎?

可以。分別建立即可——它們會各自獨立運作。

如果我的 Preview URL 不包含 Pull Request 編號怎麼辦?

URL 模式欄位需要的是可預測的模式。Vercel 預設的主機名稱是根據分支建立的,因此 {branch-slug} 通常是正確的佔位符。如果您的服務商產生的是隨機子網域,請為 Preview 環境設定一個穩定的別名 URL,並改用該別名。

結果可以直接餵給我的 AI 程式碼代理嗎?

可以——這正是留言中 Suggested fix prompt 區塊的用途。它是一段可直接複製的提示,描述可能的根本原因與修復方式,專為貼入程式碼代理而撰寫。若想要更完整的迴圈,testsprite setup --agent claude 可安裝一項驗證技能,讓代理自行建立、執行並分類測試。

設定需要花多久時間?

大約十分鐘,且您需要在擁有該儲存庫的組織上,具備安裝 GitHub App 的管理員權限。

// The verdict

您的流水線早已發出訊號,聆聽它就好。

測試 Preview 部署並不需要新增工作流程檔案、撰寫擷取建置紀錄的腳本,或使用第三方 action 來等待 URL 就緒。您的流水線已經會產生部署事件;真正要做的,只是告訴 TestSprite 哪個事件代表「已上線」,以及如何由此建構出 URL。只需十分鐘、不需變更儲存庫,每個 Pull Request 就能在有人查看之前,先經過真實瀏覽器的檢查。若想採用命令列方式,請參閱 docs.testsprite.com 上的參考文件,並為 GitHub 上的開源 CLI 加星星。