fastlane 官方文件指出,snapshot 可透過 UI 測試自動擷取 iOS 與 tvOS 螢幕截圖,並依語言和模擬器目標整理採集流程。fastlane 截圖指南
症狀:每次發版都要手動切換語言、裝置,再逐張整理截圖。
最快解法:先讓一條代表性的 UI 測試在 Xcode 中穩定執行,再交由 fastlane snapshot 擷取;執行環境必須能運行 macOS、Xcode 與 iOS 模擬器。
適合需要為多種語言準備商店素材、想減少重複截圖的獨立開發者。
也適合維護多個模擬器目標的小團隊,以及需要確認遠端 Mac 能否執行 Xcode UI 測試的 iOS 開發者。
fastlane snapshot 自動生成 iOS 截圖的起始條件
fastlane snapshot 不是從程式碼直接繪製商店圖片,而是讓 UI 測試啟動 App、操作介面,再於指定位置擷取畫面。測試若無法重現同一個畫面,擴大語言或裝置範圍只會複製不穩定的結果。capture_ios_screenshots action 說明
單一裝置專案先確認三個環節:專案有可執行的 UI Test target、測試使用的 scheme 可被選取,測試流程中有明確的截圖呼叫點。實際初始化方式和可用設定以fastlane 官方截圖指南為準;不要直接套用過期範例中的參數名稱。
| 里程碑 | 你要確認的項目 | 未通過時先處理 |
|---|---|---|
| 測試可啟動 | Xcode 能建置 App,UI Test 能啟動指定 scheme | 先在 Xcode 裡修正建置或測試錯誤 |
| 畫面可重現 | 測試能走到預定頁面,擷取時沒有載入中的內容 | 固定測試資料與初始狀態 |
| 輸出可找到 | fastlane 執行後,輸出目錄中有預期圖片 | 對照目前 action 文件核查輸出設定 |
| 素材可驗收 | 圖片內容、語言和目標裝置符合預期 | 暫停擴大批次,先修正單一目標 |
多語言 App Store 截圖的語言邊界
多語言截圖的前提,是 App 在測試中確實呈現對應語言的介面。fastlane 的語言設定用來安排截圖採集語言;它不會自動替你完成 App Store Connect 的商店描述、關鍵字或其他在地化資料設定。兩者分開驗收,才不會把畫面語言正確誤認為商店語言已完整設定。
| 核對面向 | UI 測試截圖 | 商店在地化資料 |
|---|---|---|
| 語言來源 | App 的本地化資源與測試啟動環境 | App Store Connect 中的商店資料設定 |
| 驗收重點 | 按鈕、標題及畫面內容是否顯示目標語言 | 素材與商店語言欄位是否對應 |
| 常見錯誤 | 測試啟動後仍落在裝置預設語言 | 截圖有翻譯,但上傳至錯誤語言項目 |
先以一種目標語言跑通測試,確認 App 介面真的切換,再逐步增加語言。每種語言都應抽查實際輸出,而不是只檢查設定檔裡有沒有語言代碼。商店截圖的上傳與畫面素材管理,另依Apple 的上傳說明核對。
fastlane snapshot 可以在多個 iOS 模擬器上執行嗎?
可以,但應按 App 實際支援的裝置範圍挑選模擬器,不要把一次成功的測試解讀成所有裝置都已覆蓋。fastlane 支援以設定組織模擬器目標;Apple 也提供在 Xcode Device Hub 管理模擬與實體裝置的說明。Apple Device Hub 文件
| 目標安排 | 適合情況 | 主要風險 |
|---|---|---|
| 單一代表裝置 | 先驗證測試流程與截圖呼叫點 | 不能代表其他螢幕尺寸或版面 |
| 按支援範圍分組 | 需要維護多種模擬器目標 | 測試時間與輸出檔案管理變複雜 |
| 只挑商店所需素材目標 | 團隊有明確的提交素材需求 | 若遺漏目標,可能需要補跑與重新核對 |
設定檔應把裝置目標和輸出整理方式明確管理。Apple 的截圖規格說明會列出當前素材要求;裝置型號或素材規格有變動時,回到官方頁面核對,不要沿用舊專案中的圖片尺寸假設。
截圖內容不穩定時的排查方向
iOS UI 測試截圖常見的問題不是圖片寫檔失敗,而是擷取時 App 還沒到達預期狀態。登入工作階段過期、網路內容改變、載入指示器未消失,或測試資料被其他流程改寫,都會讓同一項測試產生不同畫面。
先確認測試能否固定重現畫面,再評估是否要調整等待或重試。fastlane 文件描述的等待網路請求等能力,不能取代對 App 狀態與測試資料的檢查,也不代表所有不穩定都能自動消除。
逐項確認測試帳號是否有效、測試資料是否可重設、畫面是否等待到穩定狀態,以及截圖呼叫點是否在動畫或網路更新之前。fastlane 文件提到的等待與重試方式,應按目前 action 文件和你的專案實測結果設定;不要只因重試後通過,就判定根因已經消失。
需要逐項執行時,使用這份檢查清單:
- [ ] 在 Xcode 中單獨執行代表性 UI 測試,確認測試 target 與 scheme 正確。
- [ ] 以固定測試帳號與可重設資料啟動 App,排除登入狀態及內容變動。
- [ ] 確認擷取畫面時,載入指示器、動畫或網路更新不會遮住目標內容。
- [ ] 先檢查一種語言、一個模擬器目標的輸出位置與圖片內容。
- [ ] 擴大語言或模擬器範圍後,分別核對新增目標的實際輸出。
- [ ] 上傳前抽查語言、裝置目標、測試資料及圖片是否為本次版本。
沒有本地 Mac 時的遠端執行條件
沒有本地 Mac,仍可透過遠端 Mac 執行 fastlane,但前提是遠端環境能運行專案所需的 Xcode、模擬器執行環境與 scheme。Apple 的文件說明如何從模擬或實體裝置擷取畫面;這類流程依賴 Mac 上的 Xcode 工具環境,不能只靠一般 Linux 或 Windows 工作站取代。Apple 裝置截圖說明
交給自動化採集前,先在遠端環境實際跑一次 UI Test。再確認登入工作階段能否持續、測試結束後圖片儲存在哪裡,以及你是否能透過使用的連線方式取回檔案。對 SSH、VNC 或網頁主控台等操作方式,也要按實際工作流程驗證檔案可存取;不能只因建置成功,就推定截圖已生成並可下載。
若你在評估遠端環境,可先閱讀MacUDP 的環境與使用協助,並核對可用節點資訊。這些資訊應與專案所需的 Xcode 和模擬器環境逐項比對;本文不預設任何特定執行配置或截圖結果。
App Store Connect 提交前的素材驗收
fastlane 可透過 deliver 上傳截圖,但檔案成功生成或上傳,不等於素材已符合提交要求,也不代表 App 已通過審核。deliver 官方文件說明其上傳流程;提交前仍需確認目標 App、語言項目與現有商店資料受到的影響。
逐張檢查圖片是否來自目前版本、是否顯示正確的測試資料、語言和裝置畫面是否與上傳目標相符。Apple 的截圖審核指引要求商店截圖呈現實際 App 體驗;請勿把宣傳合成圖或與目前介面不符的畫面混入提交素材。最後再核對 App Store Connect 中的預覽結果與上傳位置。
如果你目前靠個人 Mac 手動切換語言與模擬器,主要代價是重複操作、測試環境被日常工作占用,以及本機資源或登入狀態不穩定。遠端 Mac 能把採集工作移到可運行 Xcode 的環境,適合需要臨時建立或持續執行截圖流程的情況;但若你長期高頻使用、需要實體裝置或本機周邊,先比較自購 Mac 的使用成本與操作限制會更實際。
若你的截圖任務需要一個可遠端操作的 Mac 環境,可先按專案頻率評估MacUDP 的租用方案,再確認 Xcode UI 測試能否在選定環境中實際執行。先驗收測試和檔案取回流程,再擴展多語言與多模擬器,才能避免把一批錯誤截圖送進商店素材。
