Snapshot (Fastlane) — istota, generowanie zrzutów ekranu i konfiguracja w aplikacjach mobilnych

Autor: IT Sectr Opublikowano: 2026-04-15 Czas czytania: 10 min

Snapshot (Fastlane) to narzędzie do automatycznego generowania zrzutów ekranu aplikacji iOS na wszystkich obsługiwanych urządzeniach i językach. W przeciwieństwie do ręcznego tworzenia zrzutów ekranu przez symulator, Snapshot uruchamia testy UI i wykonuje zrzuty w określonych punktach aplikacji. Według oficjalnej dokumentacji Fastlane (2026), Snapshot skraca czas przygotowania zrzutów ekranu do wydania z 4 godzin do 15 minut.

Najważniejsze

  • Snapshot to narzędzie Fastlane do automatycznego tworzenia zrzutów ekranu aplikacji iOS poprzez testy UI na wszystkich urządzeniach i językach.
  • Narzędzie integruje się z testami UI XCTest: programista dodaje polecenia snapshot() w kodzie testowym, aby przechwycić zrzuty w kluczowych ekranach aplikacji.
  • Snapshot obsługuje wszystkie rozmiary urządzeń iPhone i iPad wymagane przez App Store: 6.5, 5.5, 6.7, 12.9 cala i inne formaty ekranu.
  • Konfiguracja odbywa się przez plik Snapfile, w którym określa się urządzenia, języki, lokalizację i parametry uruchamiania symulatora do generowania.
  • Wyniki są zapisywane w katalogu screenshots/, kompatybilnym z Deliver — zrzuty ekranu są gotowe do przesłania do App Store bez dodatkowego przetwarzania.

Czym jest Snapshot (Fastlane)?

Snapshot (Fastlane) to komponent ekosystemu Fastlane, który automatyzuje tworzenie zrzutów ekranu aplikacji dla App Store. Uruchamia testy UI na symulatorach iOS, wykonuje zrzuty ekranu w określonych stanach aplikacji i zapisuje je w strukturyzowanym katalogu z poprawnymi nazwami dla każdego języka i urządzenia.

Bez Snapshota programiści ręcznie uruchamiają symulator, otwierają każdy ekran, robią zrzut ekranu przez Cmd+S, przełączają język i powtarzają proces dla wszystkich kombinacji. Automatyzacja zrzutów ekranu to kluczowy element optymalizacji ASO, ponieważ App Store wymaga aktualnych zrzutów dla każdego nowego wydania, a ręczna aktualizacja 60+ zrzutów ekranu zajmuje godziny pracy.

Według App Store Connect Documentation (2025), aplikacje z zlokalizowanymi zrzutami ekranu uzyskują o 25% więcej konwersji w docelowych krajach. Snapshot pozwala zespołom aktualizować treść wizualną dla 32 języków podczas jednego uruchomienia, co jest szczególnie ważne dla kampanii marketingowych związanych z nowymi funkcjami aplikacji.

Używaj Snapshota w każdym projekcie publikowanym w App Store — to standardowe narzędzie dla zespołów dążących do automatyzacji procesu wydawniczego i poprawy ASO.

Jak Snapshot generuje zrzuty ekranu

Proces generowania zrzutów ekranu w Snapshot składa się z kilku etapów: przygotowanie testów UI, konfiguracja Snapfile, uruchomienie symulatorów i zbieranie wyników. Snapshot sekwencyjnie uruchamia każdy symulator dla określonych urządzeń i języków, wykonuje testy UI i robi zrzuty w punktach wywołania funkcji snapshot().

Po zakończeniu wszystkich testów Snapshot zbiera zrzuty ekranu do katalogu screenshots/[Language]/ z nazwami odpowiadającymi wymaganiom App Store. Każdy zrzut ekranu jest zapisywany w formacie PNG z rozdzielczością odpowiadającą docelowemu urządzeniu. Snapshot generuje również raport HTML do wizualnej weryfikacji wszystkich utworzonych zrzutów.

Konfiguracja testów UI dla Snapshota

Do pracy Snapshota należy dodać wywołania snapshot() w kodzie XCTest testów UI aplikacji. Funkcja wykonuje zrzut ekranu bieżącego stanu ekranu w momencie wywołania. Programista umieszcza snapshot() po każdej kluczowej akcji: otwarciu ekranu, wprowadzeniu danych, nawigacji po zakładkach lub wyświetleniu wyników.

Przykład struktury testu UI: test loguje się do aplikacji, wywołuje snapshot("01-LoginScreen") dla zrzutu ekranu logowania, następnie przechodzi do ekranu głównego i wywołuje snapshot("02-HomeScreen") dla zrzutu ekranu głównego. XCTest to framework Apple do testów jednostkowych i UI aplikacji iOS, zintegrowany bezpośrednio z Xcode.

objective-c
// Test UI dla Snapshota
- (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");
}

Praca z językami i urządzeniami

Snapshot automatycznie przełącza język symulatora dla każdego języka określonego w Snapfile. Aplikacja uruchamia się z odpowiednią lokalizacją, a testy UI są wykonywane w tym języku. Lokalizacja zrzutów ekranu to krytyczny czynnik ASO: użytkownicy w 75% przypadków preferują aplikacje z treścią w języku ojczystym, w tym zrzuty ekranu w App Store.

Dla każdego urządzenia Snapshot uruchamia osobny symulator z odpowiednią przekątną ekranu. Obsługiwane są wszystkie rozmiary wymagane przez App Store: iPhone 6.5 cala (iPhone 15 Pro Max), 5.5 cala (iPhone 8 Plus), 6.7 cala (iPhone 15 Plus) i iPad 12.9 cala. Symulator iOS to programowa emulacja urządzenia iOS wbudowana w Xcode do testowania aplikacji bez fizycznego urządzenia.

bash
# Generowanie zrzutów ekranu dla wszystkich urządzeń i języków
fastlane snapshot

# Generowanie tylko dla określonych urządzeń
fastlane snapshot --devices "iPhone 15 Pro Max,iPhone 15"

# Czyszczenie przed generowaniem zrzutów ekranu
fastlane snapshot --reinstall_app --erase_simulator

Konfiguracja Snapshot przez Snapfile

Snapfile to plik konfiguracyjny Fastlane, który określa parametry generowania zrzutów ekranu: listę urządzeń, języki, czas oczekiwania i opcje uruchamiania. Snapfile jest przechowywany w katalogu fastlane i wersjonowany razem z projektem, co gwarantuje jednolitą konfigurację dla wszystkich członków zespołu.

ruby
# Snapfile — konfiguracja zrzutów ekranu
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 usuwa stare zrzuty ekranu przed rozpoczęciem generowania — zapobiega to gromadzeniu się nieaktualnych zrzutów w katalogu wyjściowym. reinstall_app ponownie instaluje aplikację na symulatorze przed każdym uruchomieniem, co gwarantuje czystą sesję bez wpływu poprzednich testów na nowe generowanie.

Parametr erase_simulator czyści zawartość symulatora przed rozpoczęciem testów — w tym pamięć podręczną, ustawienia i dane poprzednich sesji. Jest to szczególnie ważne dla testów sprawdzających onboardingu lub pierwsze uruchomienie aplikacji. Snapshot obsługuje również parametry ios_version do określenia wersji iOS na symulatorze oraz stop_after_first_error do zatrzymania generowania przy pierwszym błędzie testu UI.

Dla projektów z SwiftUI dostępny jest parametr use_simulator_for_language, który zarządza przełączaniem języka przez ustawienia symulatora zamiast zmiany regionu systemu. Snapshot obsługuje również launch_arguments do przekazywania dodatkowych argumentów przy uruchamianiu aplikacji — przydatne do testów z różnymi konfiguracjami backendu lub testami A/B.

Polecenia Snapshot do generowania zrzutów

Interfejs Snapshota zawiera podstawowe polecenia do uruchamiania generowania oraz rozszerzone flagi do precyzyjnej kontroli nad procesem. Główne polecenie fastlane snapshot uruchamia pełny cykl generowania zrzutów ekranu na podstawie konfiguracji z Snapfile.

Szybkie generowanie i filtrowanie

Polecenie fastlane snapshot --devices "iPhone 15" generuje zrzuty ekranu tylko dla określonych urządzeń, ignorując pozostałe z Snapfile. --languages "en-US,ru" filtruje języki do generowania. Kombinacja tych flag jest przydatna do szybkiego sprawdzania zrzutów ekranu na jednym urządzeniu i języku bez pełnego cyklu generowania, który może zajmować do 30 minut przy 5 urządzeniach i 10 językach.

bash
# Szybkie generowanie dla jednego urządzenia
fastlane snapshot --devices "iPhone 15" --languages "en-US"

# Generowanie z ponowną instalacją aplikacji
fastlane snapshot --reinstall_app --erase_simulator

# Generowanie z raportem HTML
fastlane snapshot --output_directory "./build/screenshots"

Flaga --output_directory zmienia katalog zapisywania wyników. Domyślnie Snapshot zapisuje zrzuty ekranu w fastlane/screenshots. Do integracji z Deliver należy wskazać katalog zgodny z oczekiwaną strukturą Deliverfile — umożliwia to przekazywanie zrzutów ekranu bezpośrednio do procesu publikacji bez ręcznego kopiowania plików między folderami.

Parametr SnapshotPrzeznaczeniePrzykład
devicesLista urządzeń do generowaniaiPhone 15, iPad Pro
languagesLista języków lokalizacjien-US, ru, de-DE
reinstall_appPonowna instalacja aplikacji przed testamitrue / false
erase_simulatorCzyszczenie symulatora przed uruchomieniemtrue / false
clear_previousUsunięcie starych zrzutów ekranutrue / false

Integracja Snapshot w pipeline CI/CD

Snapshot w CI/CD to automatyczne generowanie zrzutów ekranu przy każdym commicie wydaniowym. Snapshot jest uruchamiany przed etapem Deliver, aby zagwarantować, że zrzuty ekranu w App Store odpowiadają bieżącej wersji aplikacji i nie zawierają nieaktualnych elementów interfejsu z poprzednich wersji.

Do pracy Snapshota w CI wymagane jest Xcode z zainstalowanymi symulatorami iOS. W środowisku CI Snapshot korzysta z symulatorów z Xcode, które są wstępnie ładowane na runner. GitHub Actions udostępnia obrazy z preinstalowanym Xcode i symulatorami iOS do uruchamiania testów UI bez dodatkowej konfiguracji.

bash
# Uruchamianie Snapshota w środowisku CI
fastlane snapshot --skip_open_summary \

      --output_directory "$CI_PROJECT_DIR/screenshots"

# Zapisywanie zrzutów ekranu jako artefaktów CI
cp -R "screenshots/" "$CI_PROJECT_DIR/artifacts/"

Parametr --skip_open_summary wyłącza otwieranie raportu HTML po generowaniu — w środowisku CI interfejs graficzny jest niedostępny. Wyniki generowania są zapisywane w katalogu, który jest przekazywany jako artefakt zadania CI, a następnie używany przez Deliver do przesłania do App Store wraz z wydaniem.

Aby przyspieszyć pipeline CI, używaj równoległego generowania zrzutów ekranu przez concurrent_simulators — parametr Snapfile, który uruchamia kilka symulatorów jednocześnie. Skraca to czas generowania zrzutów ekranu na 5 urządzeń i 10 języków z 40 minut do 15 minut przy użyciu 4 równoległych wątków.

Typowe błędy podczas pracy ze Snapshot

Podczas korzystania ze Snapshota programiści najczęściej spotykają się z błędami związanymi z niestabilnością testów UI, problemami symulatorów i nieprawidłową konfiguracją urządzeń. Diagnostyka błędów Snapshota rozpoczyna się od analizy raportu HTML, który zawiera zrzuty ekranu każdego kroku i informacje o nieudanych testach.

Błąd «Failed to build scheme MyAppUITests» występuje, gdy schemat testów UI nie jest skonfigurowany do budowania. Rozwiązanie: upewnij się, że w Xcode utworzono osobny Scheme dla testów UI i włączono opcję Shared dla dostępu z wiersza poleceń. Xcode Scheme to konfiguracja budowania, testowania i uruchamiania aplikacji, która określa zestaw celów i parametrów dla każdego działania.

Błąd «No simulators found matching...» wskazuje na brak symulatora z określonym typem urządzenia lub wersją iOS. Rozwiązanie: wykonaj xcrun simctl create, aby utworzyć symulator, lub wskaż istniejące urządzenie z listy xcrun simctl list. xcrun simctl to narzędzie wiersza poleceń Xcode do zarządzania symulatorami iOS: tworzenia, usuwania, uruchamiania i diagnostyki.

Przy błędzie «UI test failure» test UI nie przechodzi na jednym z języków lub urządzeń. Rozwiązanie: uruchom Snapshot z flagą --stop_after_first_error, aby zatrzymać się przy pierwszym błędzie, przeanalizuj zrzut ekranu w raporcie HTML i popraw test. Częstą przyczyną jest różna długość tekstu w różnych językach, przez którą elementy interfejsu nakładają się lub wychodzą poza granice ekranu.

Często zadawane pytania

Jakie urządzenia iOS obsługuje Snapshot?

Snapshot obsługuje wszystkie urządzenia z rodziny iPhone i iPad, w tym iPhone 15 Pro Max (6.7 cala), iPhone 15 (6.1 cala), iPad Pro 12.9 cala i iPad mini. Dla każdego urządzenia Snapshot ładuje odpowiednie skórki symulatorów z Xcode, co gwarantuje dokładną rozdzielczość ekranu.

Czy do pracy Snapshota potrzebne są rzeczywiste urządzenia?

Nie, Snapshot działa wyłącznie z symulatorami iOS z Xcode. Rzeczywiste urządzenia nie są wymagane ani obsługiwane — wszystkie zrzuty ekranu są generowane w środowisku symulatora, który zapewnia identyczną rozdzielczość i odwzorowanie kolorów zgodnie z wymaganiami App Store.

Jak Snapshot obsługuje lokalizację tekstu na zrzutach ekranu?

Snapshot przełącza język symulatora przed uruchomieniem testów UI dla każdego języka z Snapfile. Aplikacja wyświetla się w odpowiednim języku poprzez systemowe ustawienia lokalizacji. Testy UI używają zlokalizowanych ciągów przez NSLocalizedString, co gwarantuje poprawny tekst na wszystkich zrzutach ekranu.

Czy można generować zrzuty ekranu dla aplikacji macOS?

Tak, Snapshot obsługuje aplikacje macOS od wersji Fastlane 2.200. Dla macOS należy określić platformę w Snapfile przez parametr app_platform("macOS"). Snapshot uruchamia testy UI na macOS i tworzy zrzuty ekranu zgodnie z wymaganiami Mac App Store.

Czym Snapshot różni się od zwykłego zrzutu ekranu przez Cmd+S?

Ręczny zrzut ekranu wymaga ręcznego otwarcia każdego ekranu, przełączenia języka, zmiany urządzenia — około 60 czynności dla pełnego zestawu. Snapshot automatyzuje cały proces: przełącza języki, urządzenia, uruchamia testy UI i zapisuje zrzuty ekranu z poprawnymi nazwami dla App Store w 15 minut.

Podsumowanie

  • Snapshot to narzędzie Fastlane do automatycznego generowania zrzutów ekranu aplikacji iOS przez testy UI XCTest na wszystkich urządzeniach i językach.
  • Programista dodaje wywołania snapshot() w kodzie testów UI w kluczowych punktach aplikacji — Snapshot robi zrzuty w tych miejscach.
  • Konfiguracja przez Snapfile określa listę urządzeń, języków i parametrów symulatora: devices, languages, reinstall_app i erase_simulator.
  • Wyniki są zapisywane w katalogu screenshots/[Language]/ w formacie kompatybilnym z Deliver do bezpośredniego przesyłania do App Store.
  • Integracja z CI/CD pozwala automatycznie generować świeże zrzuty ekranu przed każdym wydaniem z równoległymi symulatorami w celu przyspieszenia procesu.
  • Typowe błędy Snapshota są związane z niestabilnymi testami UI w różnych językach, brakiem symulatorów w Xcode lub nieprawidłową konfiguracją Scheme.

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również