Snapshot (Fastlane) je nástroj pro automatické generování snímků obrazovky iOS aplikací na všech podporovaných zařízeních a jazycích. Na rozdíl od ručního vytváření snímků obrazovky přes simulátor, Snapshot spouští UI testy a pořizuje snímky v určených bodech aplikace. Podle oficiální dokumentace Fastlane (2026), Snapshot zkracuje dobu přípravy snímků obrazovky pro vydání ze 4 hodin na 15 minut.
Hlavní body
Snapshot (Fastlane) je součást ekosystému Fastlane, která automatizuje vytváření snímků obrazovky aplikací pro App Store. Spouští UI testy na iOS simulátorech, pořizuje snímky obrazovky v určených stavech aplikace a ukládá je do strukturovaného adresáře se správnými názvy pro každý jazyk a zařízení.
Bez Snapshotu vývojáři ručně spouštějí simulátor, otevírají každou obrazovku, pořizují snímek obrazovky pomocí Cmd+S, přepínají jazyk a opakují proces pro všechny kombinace. Automatizace snímků obrazovky je klíčový prvek optimalizace ASO, protože App Store vyžaduje aktuální obrázky pro každé nové vydání a ruční aktualizace 60+ snímků obrazovky zabírá hodiny práce.
Podle App Store Connect Documentation (2025) dosahují aplikace s lokalizovanými snímky obrazovky o 25 % více konverzí v cílových zemích. Snapshot umožňuje týmům aktualizovat vizuální obsah pro 32 jazyků v jednom spuštění, což je důležité zejména pro marketingové kampaně vázané na nové funkce aplikace.
Používejte Snapshot v jakémkoli projektu publikovaném v App Store — je to standardní nástroj pro týmy usilující o automatizaci procesu vydávání a zlepšení ASO.
Proces generování snímků obrazovky ve Snapshotu se skládá z několika fází: příprava UI testů, konfigurace Snapfile, spuštění simulátorů a shromáždění výsledků. Snapshot postupně spouští každý simulátor pro uvedená zařízení a jazyky, provádí UI testy a pořizuje snímky v bodech volání funkce snapshot().
Po dokončení všech testů Snapshot shromáždí snímky obrazovky do adresáře screenshots/[Language]/ s názvy odpovídajícími požadavkům App Store. Každý snímek obrazovky je uložen ve formátu PNG s rozlišením odpovídajícím cílovému zařízení. Snapshot také generuje HTML přehled pro vizuální kontrolu všech vytvořených snímků.
Pro fungování Snapshotu je třeba přidat volání snapshot() do XCTest kódu UI testů aplikace. Funkce pořizuje snímek obrazovky aktuálního stavu obrazovky v okamžiku volání. Vývojář umisťuje snapshot() po každé klíčové akci: otevření obrazovky, zadání dat, navigace po záložkách nebo zobrazení výsledků.
Příklad struktury UI testu: test se přihlásí do aplikace, zavolá snapshot("01-LoginScreen") pro snímek přihlašovací obrazovky, poté přejde na hlavní obrazovku a zavolá snapshot("02-HomeScreen") pro snímek hlavní obrazovky. XCTest je framework Apple pro unitní a UI testování iOS aplikací, integrovaný přímo do Xcode.
// UI test pro Snapshot
- (void)testScreenshots {
XCUIApplication *app = [[XCUIApplication alloc] init];
[app launch];
snapshot(@"01-LoginScreen");
[app.textFields[@"email"] tap];
[app.textFields[@"email"] typeText:@"user@company.com"];
[app.buttons[@"Login"] tap];
snapshot(@"02-HomeScreen");
}
Snapshot automaticky přepíná jazyk simulátoru pro každý jazyk uvedený v Snapfile. Aplikace se spouští s odpovídající lokalizací a UI testy se provádějí v tomto jazyce. Lokalizace snímků obrazovky je kritický faktor ASO: uživatelé v 75 % případů preferují aplikace s obsahem v rodném jazyce, včetně snímků obrazovky v App Store.
Pro každé zařízení Snapshot spouští samostatný simulátor s odpovídající úhlopříčkou obrazovky. Jsou podporovány všechny velikosti požadované App Store: iPhone 6.5 palce (iPhone 15 Pro Max), 5.5 palce (iPhone 8 Plus), 6.7 palce (iPhone 15 Plus) a iPad 12.9 palce. iOS simulátor je softwarová emulace zařízení iOS vestavěná do Xcode pro testování aplikací bez fyzického zařízení.
# Generování snímků obrazovky pro všechna zařízení a jazyky
fastlane snapshot
# Generování pouze pro uvedená zařízení
fastlane snapshot --devices "iPhone 15 Pro Max,iPhone 15"
# Vyčištění před generováním snímků obrazovky
fastlane snapshot --reinstall_app --erase_simulator
Snapfile je konfigurační soubor Fastlane, který definuje parametry generování snímků obrazovky: seznam zařízení, jazyky, dobu čekání a možnosti spuštění. Snapfile je uložen v adresáři fastlane a je verzován společně s projektem, což zaručuje jednotnou konfiguraci pro všechny členy týmu.
# Snapfile — konfigurace snímků obrazovky
devices([
"iPhone 15 Pro Max",
"iPhone 15",
"iPad Pro (12.9-inch)"
])
languages([
"en-US",
"ru",
"de-DE"
])
scheme("MyAppUITests")
output_directory("./screenshots")
clear_previous_screenshots(true)
reinstall_app(true)
erase_simulator(true)
Parametr clear_previous_screenshots odstraňuje staré snímky obrazovky před zahájením generování — to zabraňuje hromadění zastaralých obrázků ve výstupním adresáři. reinstall_app přeinstaluje aplikaci na simulátor před každým spuštěním, což zaručuje čistou relaci bez vlivu předchozích testů na nové generování.
Parametr erase_simulator čistí obsah simulátoru před zahájením testů — včetně mezipaměti, nastavení a dat předchozích relací. To je důležité zejména pro testy, které kontrolují onboardingu nebo první spuštění aplikace. Snapshot také podporuje parametry ios_version pro určení verze iOS na simulátoru a stop_after_first_error pro zastavení generování při první chybě UI testu.
Pro projekty s SwiftUI je k dispozici parametr use_simulator_for_language, který spravuje přepínání jazyka prostřednictvím nastavení simulátoru namísto změny regionu systému. Snapshot také podporuje launch_arguments pro předávání dalších argumentů při spouštění aplikace — užitečné pro testy s různými konfiguracemi backendu nebo A/B testy.
Rozhraní Snapshotu zahrnuje základní příkazy pro spuštění generování a pokročilé příznaky pro přesné řízení procesu. Hlavní příkaz fastlane snapshot spouští plný cyklus generování snímků obrazovky na základě konfigurace ze Snapfile.
Příkaz fastlane snapshot --devices "iPhone 15" generuje snímky obrazovky pouze pro uvedená zařízení, ignoruje ostatní ze Snapfile. --languages "en-US,ru" filtruje jazyky pro generování. Kombinace těchto příznaků je užitečná pro rychlou kontrolu snímků obrazovky na jednom zařízení a jazyku bez plného cyklu generování, který může trvat až 30 minut při 5 zařízeních a 10 jazycích.
# Rychlé generování pro jedno zařízení
fastlane snapshot --devices "iPhone 15" --languages "en-US"
# Generování s přeinstalací aplikace
fastlane snapshot --reinstall_app --erase_simulator
# Generování s HTML přehledem
fastlane snapshot --output_directory "./build/screenshots"
Příznak --output_directory mění adresář pro ukládání výsledků. Ve výchozím nastavení Snapshot ukládá snímky obrazovky do fastlane/screenshots. Pro integraci s Deliver uveďte adresář, který odpovídá očekávané struktuře Deliverfile — to umožňuje přímé předávání snímků obrazovky do procesu publikování bez ručního kopírování souborů mezi složkami.
| Parametr Snapshot | Účel | Příklad |
|---|---|---|
| devices | Seznam zařízení pro generování | iPhone 15, iPad Pro |
| languages | Seznam jazyků lokalizace | en-US, ru, de-DE |
| reinstall_app | Přeinstalace aplikace před testy | true / false |
| erase_simulator | Vymazání simulátoru před spuštěním | true / false |
| clear_previous | Smazání starých snímků obrazovky | true / false |
Snapshot v CI/CD je automatické generování snímků obrazovky při každém release commitu. Snapshot se spouští před fází Deliver, aby bylo zaručeno, že snímky obrazovky v App Store odpovídají aktuální verzi aplikace a neobsahují zastaralé prvky rozhraní z předchozích verzí.
Pro fungování Snapshotu v CI je vyžadováno Xcode s nainstalovanými iOS simulátory. V prostředí CI Snapshot používá simulátory z Xcode, které jsou předem načteny na runner. GitHub Actions poskytuje obrazy s předinstalovaným Xcode a iOS simulátory pro spouštění UI testů bez další konfigurace.
# Spuštění Snapshotu v CI prostředí
fastlane snapshot --skip_open_summary \
--output_directory "$CI_PROJECT_DIR/screenshots"
# Ukládání snímků obrazovky jako CI artefaktů
cp -R "screenshots/" "$CI_PROJECT_DIR/artifacts/"
Parametr --skip_open_summary deaktivuje otevření HTML přehledu po generování — v prostředí CI není grafické rozhraní k dispozici. Výsledky generování se ukládají do adresáře, který se předává jako artefakt úlohy CI a poté se používá Deliver pro nahrání do App Store spolu s vydáním.
Pro urychlení CI pipeline používejte paralelní generování snímků obrazovky prostřednictvím concurrent_simulators — parametru Snapfile, který spouští několik simulátorů současně. To zkracuje dobu generování snímků obrazovky pro 5 zařízení a 10 jazyků ze 40 minut na 15 minut při použití 4 paralelních vláken.
Při používání Snapshotu se vývojáři nejčastěji setkávají s chybami souvisejícími s nestabilitou UI testů, problémy simulátorů a nesprávnou konfigurací zařízení. Diagnostika chyb Snapshotu začíná analýzou HTML přehledu, který obsahuje snímky obrazovky každého kroku a informace o neúspěšných testech.
Chyba «Failed to build scheme MyAppUITests» nastává, když schéma UI testů není nakonfigurováno pro sestavení. Řešení: ujistěte se, že v Xcode bylo vytvořeno samostatné Scheme pro UI testy a možnost Shared je zapnutá pro přístup z příkazového řádku. Xcode Scheme je konfigurace sestavení, testování a spouštění aplikace, která definuje sadu cílů a parametrů pro každou akci.
Chyba «No simulators found matching...» indikuje absenci simulátoru s uvedeným typem zařízení nebo verzí iOS. Řešení: spusťte xcrun simctl create pro vytvoření simulátoru nebo uveďte existující zařízení ze seznamu xcrun simctl list. xcrun simctl je nástroj příkazového řádku Xcode pro správu iOS simulátorů: vytváření, mazání, spouštění a diagnostika.
Při chybě «UI test failure» UI test neprochází v jednom z jazyků nebo zařízení. Řešení: spusťte Snapshot s příznakem --stop_after_first_error pro zastavení při první chybě, analyzujte snímek obrazovky v HTML přehledu a opravte test. Častou příčinou je rozdílná délka textu v různých jazycích, kvůli které se prvky rozhraní překrývají nebo vycházejí za hranice obrazovky.
Často kladené otázky
Snapshot podporuje všechna zařízení z rodiny iPhone a iPad, včetně iPhone 15 Pro Max (6.7 palce), iPhone 15 (6.1 palce), iPad Pro 12.9 palce a iPad mini. Pro každé zařízení Snapshot načítá odpovídající vzhledy simulátorů z Xcode, což zaručuje přesné rozlišení obrazovky.
Ne, Snapshot pracuje výhradně s iOS simulátory z Xcode. Skutečná zařízení nejsou vyžadována ani podporována — všechny snímky obrazovky jsou generovány v prostředí simulátoru, který poskytuje identické rozlišení a podání barev pro požadavky App Store.
Snapshot přepíná jazyk simulátoru před spuštěním UI testů pro každý jazyk ze Snapfile. Aplikace se zobrazuje v odpovídajícím jazyce prostřednictvím systémových nastavení lokalizace. UI testy používají lokalizované řetězce přes NSLocalizedString, což zaručuje správný text na všech snímcích obrazovky.
Ano, Snapshot podporuje aplikace macOS od verze Fastlane 2.200. Pro macOS uveďte platformu v Snapfile pomocí parametru app_platform("macOS"). Snapshot spouští UI testy na macOS a vytváří snímky obrazovky podle požadavků Mac App Store.
Ruční snímek obrazovky vyžaduje ruční otevření každé obrazovky, přepnutí jazyka, změnu zařízení — asi 60 akcí pro kompletní sadu. Snapshot automatizuje celý proces: přepíná jazyky a zařízení, spouští UI testy a ukládá snímky obrazovky se správnými názvy pro App Store za 15 minut.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také