視覺測試
視覺測試會捕捉 UI 外觀的錯誤。其運作方式是擷取每個 Story 的螢幕截圖,並將其與先前的版本進行比較,以識別視覺上的變化。這非常適合驗證版面配置、顏色、大小、對比度以及 UI 的任何其他視覺方面。
Storybook 原生支援使用 Chromatic 進行跨瀏覽器視覺測試,Chromatic 是 Storybook 團隊建立的雲端服務。啟用視覺測試後,每個 Story 都會自動轉換為測試。這讓您可以直接在 Storybook 中獲得關於 UI 錯誤的即時回饋。
安裝擴充功能
透過安裝 @chromatic-com/storybook
(Storybook 維護人員的官方擴充功能) 將視覺測試新增至您的專案
npx storybook@latest add @chromatic-com/storybook
需要 Storybook 7.6 或更高版本。請閱讀遷移指南以升級您的專案。
啟用視覺測試
當您啟動 Storybook 時,您會看到一個新的視覺測試擴充功能面板,您可以在其中執行測試並檢視結果。
若要啟用視覺測試,請註冊 Chromatic 並建立專案。這將讓您存取一系列雲端瀏覽器。
從您的專案清單中選取專案以完成設定。如果您是第一次設定擴充功能,則會自動為您新增設定檔和必要的專案識別碼。
設定
預設情況下,此擴充功能包含涵蓋大多數使用案例的組態選項。您也可以透過 ./chromatic.config.json
檔案微調擴充功能組態,使其符合您專案的需求。以下是可用的選項以及如何使用它們的範例。
選項 | 說明 |
---|---|
projectId | 自動設定。設定專案識別碼的值"projectId": "Project:64cbcde96f99841e8b007d75" |
buildScriptName | 選用。定義自訂 Storybook 建置指令碼"buildScriptName": "deploy-storybook" |
debug | 選用。將詳細的偵錯資訊輸出到主控台。"debug": true |
zip | 選用。建議用於大型專案。將擴充功能設定為以 zip 檔案的形式將您的 Storybook 部署到 Chromatic。"zip": true |
// ./chromatic.config.json
{
"buildScriptName": "deploy-storybook",
"debug": true,
"projectId": "Project:64cbcde96f99841e8b007d75",
"zip": true
}
執行視覺測試
按一下 Storybook 側邊欄中的 ▶️「播放」按鈕以執行視覺測試。這會將您的 Stories 送至雲端以擷取快照並偵測視覺上的變化。
檢閱變更
如果您的 stories 中有視覺上的變更,它們將會在側邊欄中以 🟡 突出顯示。點擊該 story 並前往「視覺測試」附加元件面板,查看哪些像素已變更。
如果這些變更是有意的,請在本地 ✅ 接受它們作為基準。如果這些變更不是有意的,請修復該 story 並使用 ▶️ 「播放」按鈕重新執行測試。
當您完成在附加元件中接受變更作為基準時,您就可以將程式碼推送到您的遠端儲存庫。這將把基準同步到雲端,以便任何檢查您分支的人都可以存取。
使用 CI 自動化
此附加元件旨在與 CI 搭配使用。我們建議您在開發期間使用此附加元件來檢查變更,然後在您準備合併時在 CI 中執行視覺測試。
您在附加元件中接受為基準的變更將在 CI 中自動接受為基準,因此您無需審閱兩次。
-
在您的 CI 工作流程中新增一個步驟以執行 Chromatic。
-
設定您的 CI 以包含環境變數,以便使用 Chromatic (專案權杖) 進行驗證。
PR 檢查
在您成功於 CI 中設定 Chromatic 後,您的提取/合併請求將會以 UI 測試檢查標記。此標記會通知您測試錯誤或需要您團隊驗證的 UI 變更。在您的 Git 提供者中要求此檢查,以防止意外合併 UI 錯誤。
視覺測試和快照測試有什麼區別?
快照測試會將每個 story 的已呈現標記與已知的基準進行比較。這表示測試會比較 HTML blob,而不是使用者實際看到的東西。反過來說,這可能會導致誤判率增加,因為程式碼變更並不總是會導致元件的視覺變更。
視覺測試會將每個 story 的已呈現像素與已知的基準進行比較。由於您測試的是使用者實際體驗的相同事物,因此您的測試將會更豐富且更易於維護。
了解其他 UI 測試