Snapshot (Fastlane) este un instrument pentru generarea automată a capturilor de ecran ale aplicațiilor iOS pe toate dispozitivele și limbile suportate. Spre deosebire de crearea manuală a imaginilor de ecran prin simulator, Snapshot rulează teste UI și face capturi de ecran în puncte specificate ale aplicației. Conform documentației oficiale Fastlane (2026), Snapshot reduce timpul de pregătire a capturilor de ecran pentru lansare de la 4 ore la 15 minute.
Principalele aspecte
Snapshot (Fastlane) este o componentă a ecosistemului Fastlane care automatizează crearea capturilor de ecran ale aplicațiilor pentru App Store. Rulează teste UI pe simulatoare iOS, face capturi de ecran în stări specificate ale aplicației și le salvează într-un director structurat cu nume corecte pentru fiecare limbă și dispozitiv.
Fără Snapshot, dezvoltatorii pornesc manual simulatorul, deschid fiecare ecran, fac captură de ecran cu Cmd+S, schimbă limba și repetă procesul pentru toate combinațiile. Automatizarea capturilor de ecran este un element cheie al optimizării ASO, deoarece App Store necesită imagini actualizate pentru fiecare lansare nouă, iar actualizarea manuală a peste 60 de capturi de ecran consumă ore de muncă.
Conform App Store Connect Documentation (2025), aplicațiile cu capturi de ecran localizate au cu 25% mai multe conversii în țările țintă. Snapshot permite echipelor să actualizeze conținutul vizual pentru 32 de limbi într-o singură execuție, ceea ce este deosebit de important pentru campaniile de marketing legate de noile funcții ale aplicației.
Utilizați Snapshot în orice proiect publicat în App Store — este un instrument standard pentru echipele care aspiră la automatizarea procesului de lansare și îmbunătățirea ASO.
Procesul de generare a capturilor de ecran în Snapshot constă din mai multe etape: pregătirea testelor UI, configurarea Snapfile, pornirea simulatoarelor și colectarea rezultatelor. Snapshot pornește secvențial fiecare simulator pentru dispozitivele și limbile specificate, execută teste UI și face capturi în punctele de apelare a funcției snapshot().
După finalizarea tuturor testelor, Snapshot colectează capturile de ecran în directorul screenshots/[Language]/ cu nume corespunzătoare cerințelor App Store. Fiecare captură de ecran este salvată în format PNG cu rezoluția corespunzătoare dispozitivului țintă. Snapshot generează, de asemenea, un raport HTML pentru verificarea vizuală a tuturor imaginilor create.
Pentru funcționarea Snapshot, trebuie adăugate apeluri snapshot() în codul XCTest al testelor UI ale aplicației. Funcția face o captură de ecran a stării curente a ecranului în momentul apelării. Dezvoltatorul plasează snapshot() după fiecare acțiune cheie: deschiderea ecranului, introducerea datelor, navigarea între file sau afișarea rezultatelor.
Exemplu de structură a testului UI: testul se autentifică în aplicație, apelează snapshot("01-LoginScreen") pentru captura ecranului de autentificare, apoi trece la ecranul principal și apelează snapshot("02-HomeScreen") pentru captura ecranului principal. XCTest este framework-ul Apple pentru testarea unitară și UI a aplicațiilor iOS, integrat direct în Xcode.
// Test UI pentru 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 schimbă automat limba simulatorului pentru fiecare limbă specificată în Snapfile. Aplicația pornește cu localizarea corespunzătoare, iar testele UI se execută în acea limbă. Localizarea capturilor de ecran este un factor critic ASO: utilizatorii în 75% din cazuri preferă aplicații cu conținut în limba maternă, inclusiv capturile de ecran din App Store.
Pentru fiecare dispozitiv, Snapshot pornește un simulator separat cu diagonala ecranului corespunzătoare. Sunt suportate toate dimensiunile cerute de App Store: iPhone 6.5 inci (iPhone 15 Pro Max), 5.5 inci (iPhone 8 Plus), 6.7 inci (iPhone 15 Plus) și iPad 12.9 inci. Simulatorul iOS este o emulare software a dispozitivului iOS încorporată în Xcode pentru testarea aplicațiilor fără un dispozitiv fizic.
# Generarea capturilor de ecran pentru toate dispozitivele și limbile
fastlane snapshot
# Generare doar pentru dispozitivele specificate
fastlane snapshot --devices "iPhone 15 Pro Max,iPhone 15"
# Curățare înainte de generarea capturilor de ecran
fastlane snapshot --reinstall_app --erase_simulator
Snapfile este fișierul de configurare Fastlane care definește parametrii de generare a capturilor de ecran: lista dispozitivelor, limbile, timpul de așteptare și opțiunile de pornire. Snapfile este stocat în directorul fastlane și este versionat împreună cu proiectul, garantând o configurare unitară pentru toți membrii echipei.
# Snapfile — configurarea capturilor de ecran
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)
Parametrul clear_previous_screenshots șterge capturile de ecran vechi înainte de începerea generării — aceasta previne acumularea imaginilor învechite în directorul de ieșire. reinstall_app reinstalează aplicația pe simulator înainte de fiecare rulare, garantând o sesiune curată fără influența testelor anterioare asupra noii generări.
Parametrul erase_simulator curăță conținutul simulatorului înainte de începerea testelor — inclusiv cache-ul, setările și datele sesiunilor anterioare. Acest lucru este deosebit de important pentru testele care verifică onboardingu sau prima pornire a aplicației. Snapshot suportă, de asemenea, parametrii ios_version pentru specificarea versiunii iOS pe simulator și stop_after_first_error pentru oprirea generării la prima eroare a testului UI.
Pentru proiecte cu SwiftUI, este disponibil parametrul use_simulator_for_language, care gestionează comutarea limbii prin setările simulatorului în loc să schimbe regiunea sistemului. Snapshot suportă, de asemenea, launch_arguments pentru transmiterea de argumente suplimentare la pornirea aplicației — util pentru teste cu diferite configurații de backend sau teste A/B.
Interfața Snapshot include comenzi de bază pentru pornirea generării și flaguri avansate pentru controlul precis al procesului. Comanda principală fastlane snapshot rulează ciclul complet de generare a capturilor de ecran pe baza configurației din Snapfile.
Comanda fastlane snapshot --devices "iPhone 15" generează capturi de ecran doar pentru dispozitivele specificate, ignorând restul din Snapfile. --languages "en-US,ru" filtrează limbile pentru generare. Combinația acestor flaguri este utilă pentru verificarea rapidă a capturilor de ecran pe un singur dispozitiv și limbă fără ciclul complet de generare, care poate dura până la 30 de minute pentru 5 dispozitive și 10 limbi.
# Generare rapidă pentru un dispozitiv
fastlane snapshot --devices "iPhone 15" --languages "en-US"
# Generare cu reinstalarea aplicației
fastlane snapshot --reinstall_app --erase_simulator
# Generare cu raport HTML
fastlane snapshot --output_directory "./build/screenshots"
Flagul --output_directory schimbă directorul de salvare a rezultatelor. Implicit, Snapshot salvează capturile de ecran în fastlane/screenshots. Pentru integrarea cu Deliver, specificați un director care corespunde structurii așteptate a Deliverfile — aceasta permite transmiterea capturilor de ecran direct în procesul de publicare fără copierea manuală a fișierelor între dosare.
| Parametru Snapshot | Destinație | Exemplu |
|---|---|---|
| devices | Lista dispozitivelor pentru generare | iPhone 15, iPad Pro |
| languages | Lista limbilor de localizare | en-US, ru, de-DE |
| reinstall_app | Reinstalarea aplicației înainte de teste | true / false |
| erase_simulator | Curățarea simulatorului înainte de pornire | true / false |
| clear_previous | Ștergerea capturilor de ecran vechi | true / false |
Snapshot în CI/CD înseamnă generarea automată a capturilor de ecran la fiecare commit de lansare. Snapshot este rulat înainte de etapa Deliver pentru a garanta că capturile de ecran din App Store corespund versiunii curente a aplicației și nu conțin elemente de interfață învechite din versiunile anterioare.
Pentru funcționarea Snapshot în CI este necesar Xcode cu simulatoare iOS instalate. În mediul CI, Snapshot utilizează simulatoarele din Xcode care sunt încărcate preventiv pe runner. GitHub Actions oferă imagini cu Xcode și simulatoare iOS preinstalate pentru rularea testelor UI fără configurare suplimentară.
# Rularea Snapshot în mediul CI
fastlane snapshot --skip_open_summary \
--output_directory "$CI_PROJECT_DIR/screenshots"
# Salvarea capturilor de ecran ca artefacte CI
cp -R "screenshots/" "$CI_PROJECT_DIR/artifacts/"
Parametrul --skip_open_summary dezactivează deschiderea raportului HTML după generare — în mediul CI interfața grafică nu este disponibilă. Rezultatele generării sunt salvate într-un director care este transmis ca artefact al sarcinii CI și apoi utilizat de Deliver pentru încărcarea în App Store împreună cu lansarea.
Pentru accelerarea pipeline-ului CI, utilizați generarea paralelă a capturilor de ecran prin concurrent_simulators — un parametru Snapfile care pornește mai multe simulatoare simultan. Aceasta reduce timpul de generare a capturilor de ecran pentru 5 dispozitive și 10 limbi de la 40 de minute la 15 minute utilizând 4 fire paralele.
La utilizarea Snapshot, dezvoltatorii întâlnesc cel mai frecvent erori legate de instabilitatea testelor UI, probleme ale simulatoarelor și configurarea incorectă a dispozitivelor. Diagnosticarea erorilor Snapshot începe cu analiza raportului HTML, care conține capturi de ecran ale fiecărui pas și informații despre testele eșuate.
Eroarea «Failed to build scheme MyAppUITests» apare atunci când schema testelor UI nu este configurată pentru construire. Soluție: asigurați-vă că în Xcode a fost creat un Scheme separat pentru testele UI și opțiunea Shared este activată pentru acces din linia de comandă. Xcode Scheme este o configurare de construire, testare și rulare a aplicației care definește setul de ținte și parametri pentru fiecare acțiune.
Eroarea «No simulators found matching...» indică absența unui simulator cu tipul de dispozitiv sau versiunea iOS specificată. Soluție: executați xcrun simctl create pentru a crea simulatorul sau specificați un dispozitiv existent din lista xcrun simctl list. xcrun simctl este utilitarul de linie de comandă Xcode pentru gestionarea simulatoarelor iOS: creare, ștergere, pornire și diagnosticare.
La eroarea «UI test failure» testul UI nu trece pe una dintre limbi sau dispozitive. Soluție: rulați Snapshot cu flagul --stop_after_first_error pentru oprirea la prima eroare, analizați captura de ecran în raportul HTML și corectați testul. O cauză frecventă este lungimea diferită a textului în diferite limbi, din cauza căreia elementele interfeței se suprapun sau ies din limitele ecranului.
Întrebări frecvente
Snapshot suportă toate dispozitivele din familia iPhone și iPad, inclusiv iPhone 15 Pro Max (6.7 inci), iPhone 15 (6.1 inci), iPad Pro 12.9 inci și iPad mini. Pentru fiecare dispozitiv, Snapshot încarcă interfețele de simulator corespunzătoare din Xcode, garantând rezoluția exactă a ecranului.
Nu, Snapshot funcționează exclusiv cu simulatoarele iOS din Xcode. Dispozitivele reale nu sunt necesare și nu sunt suportate — toate capturile de ecran sunt generate în mediul simulatorului, care asigură rezoluția și redarea culorilor identice pentru cerințele App Store.
Snapshot schimbă limba simulatorului înainte de rularea testelor UI pentru fiecare limbă din Snapfile. Aplicația se afișează în limba corespunzătoare prin setările de localizare a sistemului. Testele UI utilizează șiruri localizate prin NSLocalizedString, garantând textul corect pe toate capturile de ecran.
Da, Snapshot suportă aplicații macOS începând cu versiunea Fastlane 2.200. Pentru macOS, specificați platforma în Snapfile prin parametrul app_platform("macOS"). Snapshot rulează teste UI pe macOS și creează capturi de ecran conforme cu cerințele Mac App Store.
Captura de ecran manuală necesită deschiderea manuală a fiecărui ecran, schimbarea limbii, schimbarea dispozitivului — aproximativ 60 de acțiuni pentru un set complet. Snapshot automatizează întregul proces: schimbă limbile și dispozitivele, rulează teste UI și salvează capturile de ecran cu nume corecte pentru App Store în 15 minute.
Rezumat
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și