Screengrab (Fastlane) — cos’è, funzionalità e automazione degli screenshot

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

Screengrab è un’utilità dell’ecosistema Fastlane per automatizzare la creazione di screenshot di app mobili per Android e iOS. Invece di scorrere manualmente gli schermi su decine di dispositivi, lo sviluppatore esegue un singolo comando e Screengrab cattura autonomamente tutti gli schermi necessari. Secondo Fastlane Docs, 2026, lo strumento supporta simultaneamente fino a 30 lingue e qualsiasi risoluzione dello schermo specificata nella configurazione.

Punti chiave

  • Screengrab — uno strumento Fastlane per la creazione automatica di screenshot di app mobili su Android e iOS.
  • Automazione sostituisce la creazione manuale di centinaia di screenshot con un singolo comando nel terminale.
  • Localizzazione — generazione simultanea di screenshot in decine di lingue senza configurazioni aggiuntive.
  • CI/CD — integrazione con qualsiasi pipeline: Jenkins, GitHub Actions, GitLab CI.
  • Flessibilità — supporto per più dispositivi, orientamenti e lingue in una singola esecuzione.

Cos’è Screengrab e perché serve

Screengrab è un componente dell’ecosistema Fastlane progettato per la creazione automatizzata di screenshot di app mobili. Lo strumento è apparso nel 2015 come risposta al problema: per pubblicare su Google Play e App Store sono necessari da 4 a 10 screenshot per lingua. Con il supporto di 30 lingue, si tratta di 120–300 catture manuali.

Il problema della creazione manuale degli screenshot

Uno sviluppatore avvia manualmente l’app su un simulatore o dispositivo, scorre fino allo schermo desiderato, fa uno screenshot, lo trasferisce al computer, lo ritaglia e lo salva nella cartella corretta. La procedura si ripete per ogni lingua e ogni orientamento. Secondo Google Play Console, l’app media viene aggiornata ogni due settimane, trasformando gli screenshot in una routine regolare.

Vantaggi dell’automazione

Screengrab risolve il problema radicalmente: lo sviluppatore descrive scenari di test utilizzando un framework UI (Espresso per Android, XCTest per iOS) e Screengrab li esegue automaticamente su tutti i dispositivi e lingue necessari. Fastlane coordina il processo: compila l’app, esegue i test, raccoglie gli screenshot e li impacchetta nella struttura di cartelle richiesta.

Il risultato — cento screenshot in 10–15 minuti invece di diverse ore di lavoro manuale. Google raccomanda di aggiornare gli screenshot a ogni modifica significativa dell’interfaccia e, senza automazione, questo consiglio viene spesso ignorato.

Come funziona Screengrab: architettura e principio di funzionamento

L’architettura di Screengrab è costruita attorno a due componenti chiave: un client sul dispositivo (screengrab-lib) e un esecutore che gestisce l’esecuzione dei test e la raccolta dei risultati. Su Android utilizza il framework di test strumentato; su iOS — XCTest.

Ciclo di vita di una singola esecuzione

Fastlane chiama l’azione screengrab, che legge il file di configurazione Screengrabfile. L’esecutore compila l’APK di test con la libreria screengrab-lib collegata, lo installa sui dispositivi o emulatori connessi ed esegue i test UI contrassegnati con annotazioni per gli screenshot.

ruby
# Fastfile — descrizione della lane per screenshot
lane :screenshots do
  capture_android_screenshots(
    output_directory: "fastlane/metadata/android/screenshots",
    locales: ["ru-RU", "en-US", "de-DE"],
    devices: ["pixel_6", "pixel_tablet"],
    use_tests_external_storage: true
  )
end

Struttura dei file di output

Screengrab crea una gerarchia di cartelle: lingua → dispositivo → screenshot. La struttura corrisponde completamente ai requisiti di Google Play Console e App Store Connect. L’App Store richiede dimensioni rigorosamente definite per ogni tipo di dispositivo e Screengrab genera catture esattamente secondo le specifiche.

Supporto multi-dispositivo

Lo strumento può eseguire test in parallelo su tutti i dispositivi ed emulatori connessi. Gli emulatori Android si avviano automaticamente se non sono attivi. Per iOS, Screengrab utilizza i simulatori Xcode.

Installazione e configurazione di Screengrab per Android

L’installazione di Screengrab consiste in due parti: aggiunta della libreria al progetto e configurazione del file di configurazione. Su Android sono necessari il framework UI Espresso e la libreria screengrab-lib dal repository Fastlane.

Aggiunta delle dipendenze

Nel build.gradle del modulo dell’app, viene aggiunta la dipendenza screengrab-lib. La libreria fornisce la classe ScreenCapturer, che effettua uno screenshot al momento della chiamata.

groovy
// build.gradle (module: app)
androidTestImplementation(
  'tools.fastlane:screengrab-lib:2.1.0'
)

Scrivere un test con screenshot

Un test UI viene contrassegnato con l’annotazione Screengrab.screenshot() nei punti necessari. Ogni chiamata cattura lo schermo corrente e lo salva con il nome specificato.

kotlin
import tools.fastlane.screengrab.Screengrab
import tools.fastlane.screengrab.locale.LocaleTestRule

class ScreenshotTest {

    @get:Rule
    val localeTestRule = LocaleTestRule()

    @Test
    fun testTakeScreenshots() {
        Screengrab.screenshot("main_screen")
        // Azioni: toccare il pulsante di login
        Screengrab.screenshot("login_screen")
    }
}

Configurazione di Screengrabfile

Il file Screengrabfile memorizza i parametri di avvio: elenco dispositivi, lingue, timeout e percorso di salvataggio. Il file si trova solitamente nella cartella fastlane accanto a Fastfile.

Localizzazione degli screenshot e lingue multiple

La localizzazione è la funzionalità chiave di Screengrab e la ragione principale per cui viene scelto più spesso. Lo strumento cambia automaticamente la lingua dell’app prima di ogni esecuzione di test e scatta screenshot in tutte le lingue specificate.

Configurazione delle lingue

Le lingue vengono impostate in Screengrabfile utilizzando il parametro locales. Per ogni lingua, Screengrab reinstalla l’app con le risorse corrispondenti ed esegue l’intero ciclo di test. LocaleTestRule su Android cambia automaticamente la locale del dispositivo.

ruby
# Screengrabfile
locales [
  "ru-RU",
  "en-US",
  "de-DE",
  "fr-FR",
  "es-ES",
  "ja-JP",
  "ko-KR"
]

Struttura delle cartelle per screenshot localizzati

Screengrab crea directory secondo lo schema: screenshots/{locale}/{device_name}/{screenshot_name}.png. Questa struttura corrisponde direttamente ai requisiti di Google Play, consentendo il caricamento degli screenshot tramite Fastlane deliver con un singolo comando.

Per iOS, App Store Connect prevede screenshot in una struttura piatta per lingua. Fastlane converte automaticamente la gerarchia di Screengrab nel formato richiesto durante la pubblicazione.

Integrazione di Screengrab in pipeline CI/CD

L’integrazione CI/CD è uno dei principali vantaggi di Screengrab. Lo strumento viene eseguito dalla riga di comando e non richiede interfaccia grafica, rendendolo ideale per le build su server.

GitHub Actions

In un ambiente CI, è necessario avviare un emulatore Android o simulatore iOS, quindi chiamare la lane con gli screenshot. GitHub Actions supporta la memorizzazione nella cache AVD, accelerando le esecuzioni ripetute.

Parametri per CI

Nella configurazione CI, è importante considerare i limiti di memoria e tempo. Gli emulatori Android richiedono almeno 2 GB di RAM per dispositivo e un’esecuzione completa su 7 lingue e 2 dispositivi richiede 20–40 minuti.

ruby
# Fastfile — lane per CI con timeout
lane :ci_screenshots do
  capture_android_screenshots(
    locales: ["en-US", "ru-RU"],
    devices: ["pixel_6"],
    clear_previous_screenshots: true,
    tests_timeout: "600",
    output_directory: "screenshots/ci"
  )
end

Pipeline Jenkins

Per Jenkins, viene utilizzato il passo sh con una chiamata a bundle exec fastlane. Si consiglia di eseguire gli screenshot di notte o tramite trigger dopo il merge nel ramo principale per non rallentare il ciclo di sviluppo.

Screengrab vs alternative: confronto degli strumenti

Screengrab non è l’unico strumento per automatizzare gli screenshot. Esistono alternative con approcci diversi: strumenti integrati del sistema operativo, piattaforme commerciali e librerie di screenshot nel codice.

StrumentoPiattaformaLocalizzazioneCI/CD
ScreengrabAndroid, iOSAutomaticaNativa
ADB ShellAndroidManualeTramite script
XCTestiOSManualeTramite xcodebuild
Firebase Test LabAndroidRichiede configurazione
AppiumMultipiattaformaManualeTramite WebDriver

ADB Shell offre il controllo totale ma richiede la scrittura di script per ogni scenario. XCTest è integrato in Xcode ma non gestisce automaticamente la localizzazione. Firebase Test Lab esegue test su dispositivi reali nel cloud, offrendo la massima copertura, ma addebita un costo al minuto.

Screengrab vince per la combinazione: Fastlane gestisce l’intero ciclo di vita della build — dalla compilazione alla pubblicazione. Google Play accetta direttamente la struttura di cartelle di Screengrab tramite Fastlane deliver.

Problemi comuni e relative soluzioni

Quando si lavora con Screengrab, gli sviluppatori incontrano spesso diversi problemi ricorrenti. Conoscere gli errori tipici riduce il tempo di debug al primo avvio.

Gli screenshot risultano vuoti o neri

Il problema si verifica quando Screengrab scatta uno screenshot prima del completamento del rendering dello schermo. La soluzione è aggiungere un ritardo Thread.sleep() prima di chiamare screenshot() o utilizzare IdlingResource di Espresso per attendere operazioni asincrone.

Errore di incompatibilità di versione

La versione di screengrab-lib deve corrispondere alla versione di Fastlane. Fastlane viene aggiornato mensilmente e una vecchia libreria potrebbe non supportare nuovi parametri di configurazione. La soluzione è sincronizzare le versioni tramite Gemfile e gradle.properties.

Esecuzione lunga su CI

Eseguire su 30 lingue su 5 dispositivi può richiedere più di un’ora. La soluzione è dividere le esecuzioni: una per lo store in tutte le lingue, un’altra per esigenze interne in due lingue. GitHub Actions consente di utilizzare strategie a matrice per esecuzioni parallele.

Problemi con l’emulatore su CI

L’emulatore Android richiede la virtualizzazione hardware, che non è sempre disponibile sui server CI. KVM deve essere abilitato, altrimenti l’emulatore non si avvia. La soluzione è utilizzare immagini x86 senza accelerazione GPU o Firebase Test Lab.

Domande frequenti

In che modo Screengrab si differenzia da uno screenshot normale tramite ADB?

ADB cattura ciò che viene visualizzato sullo schermo in quel momento. Screengrab si integra con i test UI, cambia automaticamente lingue e dispositivi e scatta una serie di screenshot secondo uno scenario senza intervento umano.

Si può usare Screengrab senza Fastlane?

No, Screengrab è un componente dell’ecosistema Fastlane e utilizza la sua infrastruttura per compilare, installare e coordinare. La libreria screengrab-lib non può essere eseguita separatamente — Fastlane è necessario come orchestratore.

Quanto tempo richiede la generazione di screenshot in 10 lingue?

Su un singolo dispositivo, un’esecuzione in 10 lingue richiede 15–25 minuti. Ogni lingua richiede la reinstallazione dell’app e un ciclo completo di test UI. L’esecuzione parallela su più dispositivi riduce il tempo proporzionalmente.

Screengrab supporta le app iOS?

, Screengrab supporta iOS tramite XCTest e simulatori Xcode. La configurazione è simile ad Android: si aggiungono lingue e dispositivi e i test UI in Swift vengono scritti utilizzando XCTest con catture tramite XCUIScreenshot.

Come aggiornare gli screenshot solo per le nuove lingue?

Screengrab non supporta la modalità incrementale — ogni esecuzione genera un set completo di screenshot. Si consiglia di impostare una lane separata per CI con un elenco limitato di lingue per evitare di sovrascrivere le catture esistenti dall’esecuzione principale.

Riepilogo

  • Screengrab — un componente Fastlane per automatizzare gli screenshot di app mobili su Android e iOS.
  • Automazione sostituisce la creazione manuale di centinaia di screenshot con un singolo comando nel terminale.
  • Localizzazione — lo strumento cambia automaticamente la lingua dell’app prima di ogni esecuzione di test.
  • CI/CD — integrazione con Jenkins, GitHub Actions, GitLab CI e altre pipeline senza interfaccia grafica.
  • Struttura dei file di output corrisponde ai requisiti di Google Play e App Store per il caricamento diretto.
  • Flessibilità — supporto per più dispositivi, orientamenti dello schermo e scenari di test personalizzati.
  • Risparmio — cento screenshot in 15 minuti invece di diverse ore di lavoro manuale a ogni aggiornamento.

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