Snapshot (Fastlane) — essenza, generazione di screenshot e configurazione nelle app mobili

Autore: IT Sectr Pubblicato: 2026-04-15 Tempo di lettura: 10 min

Snapshot (Fastlane) è uno strumento per la generazione automatica di screenshot di applicazioni iOS su tutti i dispositivi e lingue supportati. A differenza della creazione manuale di screenshot tramite simulatore, Snapshot esegue test UI e scatta screenshot nei punti specificati dell'app. Secondo la documentazione ufficiale di Fastlane (2026), Snapshot riduce il tempo di preparazione degli screenshot per il rilascio da 4 ore a 15 minuti.

Punti chiave

  • Snapshot è un'utilità Fastlane per la creazione automatica di screenshot di applicazioni iOS tramite test UI su tutti i dispositivi e lingue.
  • Lo strumento si integra con i test XCTest UI: lo sviluppatore aggiunge comandi snapshot() nel codice di test per catturare immagini nelle schermate chiave dell'app.
  • Snapshot supporta tutte le dimensioni di dispositivi iPhone e iPad richieste dall'App Store: 6.5, 5.5, 6.7, 12.9 pollici e altri formati di schermo.
  • La configurazione viene eseguita tramite il file Snapfile, dove vengono specificati dispositivi, lingue, localizzazione e parametri di avvio del simulatore per la generazione.
  • I risultati vengono salvati nella directory screenshots/, compatibile con Deliver — gli screenshot sono pronti per il caricamento nell'App Store senza elaborazione aggiuntiva.

Cos'è Snapshot (Fastlane)?

Snapshot (Fastlane) è un componente dell'ecosistema Fastlane che automatizza la creazione di screenshot dell'app per l'App Store. Esegue test UI su simulatori iOS, scatta screenshot in stati specificati dell'app e li salva in una directory strutturata con nomi corretti per ogni lingua e dispositivo.

Senza Snapshot, gli sviluppatori avviano manualmente il simulatore, aprono ogni schermata, scattano uno screenshot con Cmd+S, cambiano lingua e ripetono il processo per tutte le combinazioni. L'automazione degli screenshot è un elemento chiave dell'ottimizzazione ASO, poiché l'App Store richiede screenshot aggiornati per ogni nuovo rilascio e l'aggiornamento manuale di oltre 60 screenshot richiede ore di lavoro.

Secondo la documentazione App Store Connect (2025), le app con screenshot localizzati ottengono il 25% in più di conversioni nei paesi target. Snapshot consente ai team di aggiornare i contenuti visivi per 32 lingue in un'unica esecuzione, il che è particolarmente importante per le campagne di marketing legate alle nuove funzionalità dell'app.

Utilizza Snapshot in qualsiasi progetto pubblicato sull'App Store — è lo strumento standard per i team che cercano di automatizzare il processo di rilascio e migliorare l'ASO.

Come Snapshot genera screenshot

Il processo di generazione degli screenshot in Snapshot consiste in diverse fasi: preparazione dei test UI, configurazione di Snapfile, avvio dei simulatori e raccolta dei risultati. Snapshot avvia sequenzialmente ogni simulatore per i dispositivi e le lingue specificati, esegue test UI e scatta screenshot nei punti in cui viene chiamata la funzione snapshot().

Dopo il completamento di tutti i test, Snapshot raccoglie gli screenshot nella directory screenshots/[Language]/ con nomi che soddisfano i requisiti dell'App Store. Ogni screenshot viene salvato in formato PNG con risoluzione corrispondente al dispositivo target. Snapshot genera inoltre un report HTML per la verifica visiva di tutti gli screenshot creati.

Configurazione dei test UI per Snapshot

Affinché Snapshot funzioni, è necessario aggiungere chiamate snapshot() al codice XCTest dei test UI dell'app. La funzione scatta uno screenshot dello stato corrente dello schermo al momento della chiamata. Lo sviluppatore posiziona snapshot() dopo ogni azione chiave: apertura di una schermata, inserimento dati, navigazione tra schede o visualizzazione dei risultati.

Esempio di struttura di test UI: il test accede all'app, chiama snapshot("01-LoginScreen") per catturare la schermata di login, poi naviga alla schermata principale e chiama snapshot("02-HomeScreen") per catturare la schermata principale. XCTest è il framework di Apple per i test unitari e UI delle applicazioni iOS, integrato direttamente in Xcode.

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

Lavoro con lingue e dispositivi

Snapshot cambia automaticamente la lingua del simulatore per ogni lingua specificata in Snapfile. L'app viene avviata con la localizzazione corrispondente e i test UI vengono eseguiti in quella lingua. La localizzazione degli screenshot è un fattore critico per l'ASO: gli utenti nel 75% dei casi preferiscono app con contenuti nella loro lingua madre, inclusi gli screenshot nell'App Store.

Per ogni dispositivo, Snapshot avvia un simulatore separato con la diagonale dello schermo corrispondente. Tutte le dimensioni richieste dall'App Store sono supportate: iPhone 6.5 pollici (iPhone 15 Pro Max), 5.5 pollici (iPhone 8 Plus), 6.7 pollici (iPhone 15 Plus) e iPad 12.9 pollici. Il simulatore iOS è un'emulazione software di un dispositivo iOS integrata in Xcode per testare app senza un dispositivo fisico.

bash
# Genera screenshot per tutti i dispositivi e lingue
fastlane snapshot

# Genera solo per dispositivi specificati
fastlane snapshot --devices "iPhone 15 Pro Max,iPhone 15"

# Pulisci prima della generazione screenshot
fastlane snapshot --reinstall_app --erase_simulator

Configurazione di Snapshot tramite Snapfile

Snapfile è un file di configurazione Fastlane che definisce i parametri di generazione degli screenshot: elenco dispositivi, lingue, timeout e opzioni di avvio. Snapfile è memorizzato nella directory fastlane e versionato insieme al progetto, garantendo una configurazione unificata per tutti i membri del team.

ruby
# Snapfile — configurazione screenshot
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)

Il parametro clear_previous_screenshots elimina gli screenshot vecchi prima di iniziare la generazione — impedisce l'accumulo di screenshot obsoleti nella directory di output. reinstall_app reinstalla l'app sul simulatore prima di ogni esecuzione, garantendo una sessione pulita senza influenza dei test precedenti sulla nuova generazione.

Il parametro erase_simulator cancella il contenuto del simulatore prima di iniziare i test — inclusi cache, impostazioni e dati delle sessioni precedenti. Ciò è particolarmente importante per i test che verificano l'onboarding o il primo avvio dell'app. Snapshot supporta anche i parametri ios_version per specificare la versione iOS sul simulatore e stop_after_first_error per fermare la generazione al primo errore di test UI.

Per i progetti SwiftUI, è disponibile il parametro use_simulator_for_language che controlla il cambio di lingua tramite le impostazioni del simulatore invece di modificare la regione di sistema. Snapshot supporta anche launch_arguments per passare argomenti aggiuntivi all'avvio dell'app — utile per test con diverse configurazioni backend o test A/B.

Comandi Snapshot per la generazione di immagini

L'interfaccia di Snapshot include comandi di base per avviare la generazione e flag estesi per un controllo preciso del processo. Il comando principale fastlane snapshot esegue il ciclo completo di generazione degli screenshot basato sulla configurazione Snapfile.

Generazione rapida e filtraggio

Il comando fastlane snapshot --devices "iPhone 15" genera screenshot solo per i dispositivi specificati, ignorando il resto da Snapfile. --languages "en-US,ru" filtra le lingue per la generazione. La combinazione di questi flag è utile per verificare rapidamente gli screenshot su un dispositivo e una lingua senza un ciclo completo di generazione, che può richiedere fino a 30 minuti per 5 dispositivi e 10 lingue.

bash
# Generazione rapida per un dispositivo
fastlane snapshot --devices "iPhone 15" --languages "en-US"

# Genera con reinstallazione dell'app
fastlane snapshot --reinstall_app --erase_simulator

# Genera con report HTML
fastlane snapshot --output_directory "./build/screenshots"

Il flag --output_directory modifica la directory di salvataggio dei risultati. Per impostazione predefinita, Snapshot salva gli screenshot in fastlane/screenshots. Per l'integrazione con Deliver, specificare una directory che corrisponda alla struttura Deliverfile prevista — ciò consente di passare gli screenshot direttamente al processo di pubblicazione senza copia manuale dei file tra le cartelle.

Parametro SnapshotScopoEsempio
devicesElenco dispositivi per la generazioneiPhone 15, iPad Pro
languagesElenco lingue di localizzazioneen-US, ru, de-DE
reinstall_appReinstallare l'app prima dei testtrue / false
erase_simulatorCancellare il simulatore prima dell'avviotrue / false
clear_previousEliminare screenshot vecchitrue / false

Integrazione di Snapshot nella pipeline CI/CD

Snapshot in CI/CD è la generazione automatica di screenshot a ogni commit di rilascio. Snapshot viene eseguito prima della fase Deliver per garantire che gli screenshot nell'App Store corrispondano alla versione corrente dell'app e non contengano elementi dell'interfaccia obsoleti delle versioni precedenti.

Affinché Snapshot funzioni in CI, è richiesto Xcode con simulatori iOS installati. Negli ambienti CI, Snapshot utilizza i simulatori di Xcode, che vengono precaricati sul runner. GitHub Actions fornisce immagini con Xcode preinstallato e simulatori iOS per eseguire test UI senza configurazione aggiuntiva.

bash
# Esegui Snapshot in ambiente CI
fastlane snapshot --skip_open_summary \

      --output_directory "$CI_PROJECT_DIR/screenshots"

# Salva screenshot come artefatti CI
cp -R "screenshots/" "$CI_PROJECT_DIR/artifacts/"

Il parametro --skip_open_summary disabilita l'apertura del report HTML dopo la generazione — negli ambienti CI l'interfaccia grafica non è disponibile. I risultati della generazione vengono salvati in una directory che viene passata come artefatto dell'attività CI e poi utilizzata da Deliver per il caricamento sull'App Store insieme al rilascio.

Per accelerare la pipeline CI, utilizzare la generazione parallela di screenshot tramite concurrent_simulators — un parametro Snapfile che avvia più simulatori simultaneamente. Ciò riduce il tempo di generazione degli screenshot per 5 dispositivi e 10 lingue da 40 minuti a 15 minuti utilizzando 4 thread paralleli.

Errori comuni quando si lavora con Snapshot

Quando si utilizza Snapshot, gli sviluppatori incontrano più spesso errori relativi all'instabilità dei test UI, problemi con i simulatori e configurazione errata dei dispositivi. La diagnosi degli errori di Snapshot inizia con l'analisi del report HTML, che contiene screenshot di ogni passo e informazioni sui test falliti.

L'errore "Failed to build scheme MyAppUITests" si verifica quando lo schema dei test UI non è configurato per la compilazione. Soluzione: assicurarsi che in Xcode sia stato creato uno Scheme separato per i test UI e che l'opzione Shared sia abilitata per l'accesso dalla riga di comando. Xcode Scheme è una configurazione di compilazione, test ed esecuzione dell'app che definisce l'insieme di target e parametri per ogni azione.

L'errore "No simulators found matching..." indica che non esiste alcun simulatore con il tipo di dispositivo o la versione iOS specificata. Soluzione: eseguire xcrun simctl create per creare un simulatore o specificare un dispositivo esistente dall'elenco xcrun simctl list. xcrun simctl è un'utilità della riga di comando di Xcode per gestire i simulatori iOS: creare, eliminare, avviare e diagnosticare.

Per l'errore "UI test failure" il test UI fallisce su una delle lingue o dispositivi. Soluzione: eseguire Snapshot con il flag --stop_after_first_error per fermarsi al primo errore, analizzare lo screenshot nel report HTML e correggere il test. Una causa comune è la diversa lunghezza del testo nelle diverse lingue, che causa la sovrapposizione degli elementi dell'interfaccia o l'uscita dai limiti dello schermo.

Domande frequenti

Quali dispositivi iOS supporta Snapshot?

Snapshot supporta tutti i dispositivi della famiglia iPhone e iPad, inclusi iPhone 15 Pro Max (6.7 pollici), iPhone 15 (6.1 pollici), iPad Pro 12.9 pollici e iPad mini. Per ogni dispositivo, Snapshot carica le skin del simulatore corrispondenti da Xcode, garantendo una risoluzione dello schermo precisa.

Sono necessari dispositivi reali per il funzionamento di Snapshot?

No, Snapshot funziona esclusivamente con simulatori iOS di Xcode. I dispositivi reali non sono necessari né supportati — tutti gli screenshot vengono generati nell'ambiente del simulatore, che fornisce risoluzione e riproduzione dei colori identiche per i requisiti dell'App Store.

Come gestisce Snapshot la localizzazione del testo negli screenshot?

Snapshot cambia la lingua del simulatore prima di eseguire i test UI per ogni lingua da Snapfile. L'app viene visualizzata nella lingua corrispondente tramite le impostazioni di localizzazione di sistema. I test UI utilizzano stringhe localizzate tramite NSLocalizedString, garantendo testo corretto in tutti gli screenshot.

Si possono generare screenshot per app macOS?

Sì, Snapshot supporta app macOS a partire dalla versione 2.200 di Fastlane. Per macOS, specificare la piattaforma in Snapfile tramite il parametro app_platform("macOS"). Snapshot esegue test UI su macOS e crea screenshot secondo i requisiti del Mac App Store.

Qual è la differenza tra Snapshot e uno screenshot normale con Cmd+S?

Lo screenshot manuale richiede l'apertura manuale di ogni schermata, il cambio di lingue, il cambio di dispositivi — circa 60 azioni per un set completo. Snapshot automatizza l'intero processo: cambia lingue, dispositivi, esegue test UI e salva gli screenshot con i nomi corretti per l'App Store in 15 minuti.

Riepilogo

  • Snapshot è un'utilità Fastlane per la generazione automatica di screenshot di applicazioni iOS tramite test XCTest UI su tutti i dispositivi e lingue.
  • Lo sviluppatore aggiunge chiamate snapshot() al codice dei test UI nei punti chiave dell'app — Snapshot scatta screenshot in queste posizioni.
  • La configurazione tramite Snapfile definisce l'elenco di dispositivi, lingue e parametri del simulatore: devices, languages, reinstall_app e erase_simulator.
  • I risultati vengono salvati nella directory screenshots/[Language]/ in un formato compatibile con Deliver per il caricamento diretto sull'App Store.
  • L'integrazione CI/CD consente di generare automaticamente screenshot aggiornati prima di ogni rilascio con simulatori paralleli per accelerare il processo.
  • Gli errori comuni di Snapshot sono relativi a test UI instabili in diverse lingue, mancanza di simulatori in Xcode o configurazione errata dello Scheme.

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche