症狀:每次 App 更新後,都要手動切換語言、重跑流程,再確認截圖有沒有漏掉。 最快解法:把流程固定為生成、檢查、上傳 3 個關卡;fastlane snapshot 搭配 Xcode UI 測試產生多語言截圖,先鎖定語言、模擬器與測試資料,再逐張驗收。fastlane 官方說明了多語言及多裝置截圖工作流程,但自動生成不等於符合商店規格,更不代表已成功上傳或通過審核。官方截圖工作流程|App Store Connect 截圖規格
適合單人維護多語言 iOS App、希望減少更新後重做截圖的人。 也適合負責出海本地化、要重複生成並覆核素材的開發者。 若你維護遠端 Mac 自動化環境,本文也會說明如何保留可追查的測試紀錄與輸出。
SECTION 01fastlane snapshot 多語言截圖自動化,先固定哪些條件?
先固定本地化語言、測試入口和模擬器目標,再逐步增加覆蓋範圍。只要其中一項在不同執行間改變,截圖就可能無法比較:測試停在不同頁面、文案不一致,或生成了預期外的裝置素材。
| 設定項目 | 單一語言 App 的做法 | 多語言出海 App 的做法 | 主要驗收點 |
|---|---|---|---|
| 語言 | 先測試目前主要語言 | 列出實際要交付的語言及地區 | 畫面文字與語言設定相符 |
| 測試流程 | 由 UI 測試進入指定畫面 | 每種語言走過相同的必要畫面 | 測試沒有停在載入或登入頁 |
| 模擬器 | 先選能代表目前介面的目標 | 只增加會影響版面或交付素材的目標 | 執行環境已安裝,截圖可讀 |
| 輸出與檢查 | 保存生成檔案及測試結果 | 依語言、裝置與畫面逐項核對 | 沒有缺圖、錯語言或錯狀態 |
fastlane 設定可用來描述要執行的語言、裝置及輸出位置;實際可用的模擬器,仍取決於目前安裝的 Xcode 執行環境。snapshot 設定與參數說明 Apple 亦說明可使用本地化 UI 測試檢查 App 在不同語言下的呈現,建議把「語言已切換」與「畫面內容正確」分開驗收。Apple 本地化測試說明
單人維護 App:先證明路徑穩定
如果你只維護一種語言,不必一開始就擴大裝置矩陣。先讓 UI 測試從啟動 App 穩定到達要截圖的頁面,處理登入狀態、首次啟動提示和非同步載入,再接上截圖流程。一次只改一個因素,失敗時才容易判斷是測試路徑、畫面等待,還是截圖設定造成。
多語言負責人:檢查真實介面,不只檢查檔名
不同語言可能改變字串長度、日期呈現與按鈕排列。測試應進入預期的本地化介面,並以畫面內容確認語言正確;僅憑資料夾名稱或輸出檔名,無法證明截圖中的介面真的已切換。Apple 的本地化截圖說明可作為安排測試與檢視素材的參考。本地化 App 截圖說明
SECTION 02怎麼選模擬器,避免把覆蓋範圍做得過大?
模擬器選擇應對應 App 支援的平台、介面差異與商店素材需求,不是目標越多越完整。Apple 說明可在模擬或實體裝置上執行 App;對截圖自動化而言,你仍須先確認所選模擬器能在目前環境中啟動,並且測試能穩定完成。在模擬或實體裝置執行 App
| 你的需求 | 模擬器選擇方向 | 需要留意 |
|---|---|---|
| 驗證單一介面流程 | 選一個能呈現主要版面的目標 | 不要把「能啟動」當成測試通過 |
| 核對不同版面差異 | 選能代表實際差異的目標 | 檢查文字換行、按鈕位置與安全區域 |
| 交付商店素材 | 先查看 App Store Connect 當前要求 | 測試裝置覆蓋不等於素材規格合格 |
| 遠端 Mac 排程執行 | 選環境已安裝且可重複啟動的目標 | 缺少執行環境時,任務可能在截圖前就停止 |
Apple 的 test plan 可用來組織測試設定;你可以用它管理需要分別執行的測試條件,而不是把所有語言與裝置組合一次塞進同一輪。組織測試以改善回饋
SECTION 03從 UI 測試到圖片驗收:逐步建立可重跑流程
第一步:整理要交付的語言與畫面
列出真正需要交付的語言、每種語言要展示的畫面,以及畫面成立所需的測試資料。資料應能重複建立,例如固定的帳戶狀態與內容;若畫面依賴即時內容或隨機資料,先替測試安排穩定輸入,否則每次截圖都可能不同。
第二步:讓 Xcode UI 測試穩定抵達目標頁面
先單獨執行 UI 測試,確認 App 能啟動、完成必要操作並到達截圖頁面。載入時間不固定時,不要只靠短暫等待;應確認畫面已出現可判斷的狀態,再繼續操作。UI 測試的責任是建立正確情境,fastlane snapshot 才負責依流程收集截圖。
第三步:固定語言與模擬器設定
在 fastlane snapshot 設定中明確列出預定語言及模擬器目標,並指定輸出目錄。設定值要與專案中實際可用的 scheme、測試及 Xcode 執行環境相符;不要直接複製其他專案的裝置名稱或測試設定,未安裝的目標可能使任務無法開始。
第四步:先跑小範圍,再擴大矩陣
先用代表性的語言與裝置完成一次端到端執行,檢查測試結果及實際圖片,再逐項增加其他目標。若首次就同時加入所有語言、裝置與畫面,失敗時難以定位是某種語言、某台模擬器,還是共用測試路徑出了問題。
第五步:逐張檢查圖片及輸出完整性
開啟生成的圖片,核對語言、畫面、文案截斷、動態內容及畫面狀態;再把實際檔案與預期清單對照。保留測試紀錄與輸出目錄,將失敗分成「測試未完成」、「測試完成但缺少截圖」和「圖片已生成但品質不合格」,避免把三種問題混成同一個成功或失敗狀態。
第六步:獨立核對規格,再處理上傳
截圖生成後,依 App Store Connect 當前頁面與 Apple 規格核對對應裝置的素材要求,再進行上傳。Apple 將截圖上傳與素材管理列為獨立操作;因此,fastlane 執行成功只能證明自動化流程產生了結果,不能替代尺寸、格式、內容與上傳狀態的確認。上傳 App 預覽與截圖
| 驗收關卡 | 可以判定完成的條件 | 尚未完成時要查什麼 |
|---|---|---|
| UI 測試 | 測試結果顯示已走到預定畫面 | 語言啟動方式、測試資料、載入與動畫 |
| 截圖生成 | 輸出目錄有預期素材,且測試紀錄可對照 | 設定的輸出位置、模擬器執行結果、測試中斷 |
| 圖片品質 | 逐張確認語言、內容、版面與狀態 | 文案溢出、錯誤頁面、動態內容或缺圖 |
| 商店交付 | 已對照當前規格並確認 App Store Connect 狀態 | 對應裝置要求、素材格式及上傳結果 |
提醒:自動化截圖的可靠性取決於 UI 測試能否重現同一個畫面。若動畫、網路內容或登入狀態未固定,重新執行得到不同圖片並不一定是 fastlane 出錯;先找出畫面狀態差異,再判斷截圖流程是否需要調整。
SECTION 04依你的工作情境安排維護方式
負責多語言出海 App 時,將語言、地區與畫面清單當成待驗收資料,而不是只把語言加進設定就結案。每次本地化更新後,優先檢查文案較長的畫面、日期與數字呈現,以及主要操作是否仍然可見。
維護遠端 Mac 自動化環境的小團隊,則要固定專案版本、Xcode 工具鏈、測試 scheme、模擬器目標與輸出位置,並讓日誌及截圖在工作階段結束後仍可查看。遠端 Mac 能執行 Xcode UI 測試,不代表相應模擬器執行環境都已安裝,也不代表每次排程都會穩定完成;把環境準備、測試結果與圖片驗收分開記錄,才能找到中斷點。
如果目前靠個人電腦手動切換語言與裝置,常見代價是工作被綁定在一台設備、無法輕易重現同一環境,而且長時間占用本機資源。若為此另備一台常駐 Mac,則還要自行處理設備維護與工具鏈更新。你可以先看 MACNOX 的遠端 Mac 使用方式,評估是否適合把無人值守的截圖任務移出日常開發機;若需要比對租用方案,再參考遠端 Mac 租用方案與計費方式。
SECTION 05常見問題
不同語言的截圖要怎麼確認是真的切換成功?
核對畫面上的實際文案、日期格式與預期頁面,而不是只看輸出檔案的名稱。測試應以目標語言啟動 App,並確認本地化資源已載入;如果同一張圖的內容沒有改變,先檢查測試啟動語言及 App 狀態,再重跑截圖。
截圖輸出在哪裡,怎麼發現缺圖?
先查看 fastlane snapshot 設定中的輸出目錄,再將目錄內實際圖片與預期的語言、裝置及畫面清單逐項核對。若缺圖,同時檢查測試結果與執行紀錄:測試可能未完成、截圖步驟可能未執行,或輸出位置與你檢查的資料夾不同。
多種模擬器是否代表商店尺寸都已驗收?
不代表。模擬器目標用於執行測試與產生圖片;商店素材是否符合要求,須另外依 App Store Connect 當前顯示及 Apple 的截圖規格檢查。若裝置選擇只為了增加覆蓋數量,卻沒有對應的版面或交付需求,還會增加維護與檢查工作。
遠端 Mac 執行前,哪些資料必須固定?
至少固定專案版本、Xcode 工具鏈、可用模擬器、測試 scheme、語言、測試資料與輸出位置,並確認 UI 測試不依賴人工操作。執行後保留日誌、測試結果與圖片,這樣遠端工作階段結束後,仍能辨別是測試未完成、沒有產生截圖,還是圖片內容不符合預期。
fastlane snapshot 適合重複產生截圖,但若你目前依賴本機手動操作,環境容易受個人設備狀態影響,也會占用開發機;自行維護常駐 Mac 則需負責更新與排程可靠性。若截圖任務需要在無人值守時重複執行,可先評估 MACNOX 的遠端 Mac 租用方案,並繼續閱讀 Xcode UI 測試與模擬器配置指引;若你的測試矩陣長期固定且需要本機硬體或實體介面,自行維護 Mac 可能更合適。
SECTION 06常見問題 FAQ
如何讓 fastlane snapshot 為不同語言產生截圖?
先在 snapshot 設定中列出要測試的語言,再確認 App 的本地化資源與 UI 測試啟動流程會進入相應介面。執行後不要只看輸出檔名;逐張核對畫面文字、日期格式與預期狀態,才能確認測到的是正確語言,而不是只有語言標籤不同。
fastlane snapshot 的截圖存在哪裡,怎麼確認沒有漏圖?
輸出位置依專案的 snapshot 設定而定,先檢查 Snapfile 中的 output_directory,並在執行後查看該目錄及測試結果。將預期的語言、模擬器與畫面清單逐項對照實際檔案,再開啟圖片核對內容;目錄有檔案不代表每個測試案例都成功完成。
一套 fastlane snapshot 流程可以產生不同裝置的截圖嗎?
可以把多個支援的模擬器目標納入設定與測試,但先確認目前 Xcode 已安裝相應執行環境,而且 App 的平台與版面確實需要這些目標。裝置覆蓋是測試範圍,商店截圖則須另按 App Store Connect 當前規格核對,兩者不能直接畫上等號。
在遠端 Mac 執行 fastlane snapshot 前要先準備什麼?
固定程式碼版本、Xcode 工具鏈、測試 scheme、語言與模擬器目標,並確認 UI 測試不依賴人工點擊或不穩定的外部資料。也要預先指定截圖輸出目錄,保留測試紀錄與圖片,讓遠端工作階段結束後仍能分辨測試中斷、截圖缺漏或圖片內容不合格。