Snapshot (Fastlane) — esencia, generación de capturas de pantalla y configuración en aplicaciones móviles

Autor: IT Sectr Publicado: 2026-04-15 Tiempo de lectura: 10 min

Snapshot (Fastlane) es una herramienta para la generación automática de capturas de pantalla de aplicaciones iOS en todos los dispositivos e idiomas compatibles. A diferencia de la creación manual de capturas a través del simulador, Snapshot ejecuta pruebas de UI y toma capturas en los puntos especificados de la aplicación. Según la documentación oficial de Fastlane (2026), Snapshot reduce el tiempo de preparación de capturas para el lanzamiento de 4 horas a 15 minutos.

Puntos clave

  • Snapshot es una utilidad de Fastlane para la creación automática de capturas de pantalla de aplicaciones iOS mediante pruebas de UI en todos los dispositivos e idiomas.
  • La herramienta se integra con pruebas XCTest UI: el desarrollador añade comandos snapshot() en el código de prueba para capturar imágenes en las pantallas clave de la aplicación.
  • Snapshot admite todos los tamaños de dispositivos iPhone y iPad requeridos por App Store: 6.5, 5.5, 6.7, 12.9 pulgadas y otros formatos de pantalla.
  • La configuración se realiza mediante el archivo Snapfile, donde se especifican dispositivos, idiomas, localización y parámetros de lanzamiento del simulador para la generación.
  • Los resultados se guardan en el directorio screenshots/, compatible con Deliver — las capturas están listas para cargar en App Store sin procesamiento adicional.

¿Qué es Snapshot (Fastlane)?

Snapshot (Fastlane) es un componente del ecosistema Fastlane que automatiza la creación de capturas de pantalla de la aplicación para App Store. Ejecuta pruebas de UI en simuladores de iOS, toma capturas en estados especificados de la aplicación y las guarda en un directorio estructurado con nombres correctos para cada idioma y dispositivo.

Sin Snapshot, los desarrolladores lanzan manualmente el simulador, abren cada pantalla, toman una captura con Cmd+S, cambian de idioma y repiten el proceso para todas las combinaciones. La automatización de capturas es un elemento clave de la optimización ASO, ya que App Store requiere capturas actualizadas para cada nuevo lanzamiento, y la actualización manual de más de 60 capturas requiere horas de trabajo.

Según App Store Connect Documentation (2025), las aplicaciones con capturas localizadas obtienen un 25% más de conversiones en los países objetivo. Snapshot permite a los equipos actualizar el contenido visual para 32 idiomas en una sola ejecución, lo que es especialmente importante para campañas de marketing vinculadas a nuevas funciones de la aplicación.

Use Snapshot en cualquier proyecto que publique en App Store — es la herramienta estándar para equipos que buscan automatizar el proceso de lanzamiento y mejorar el ASO.

Cómo genera capturas Snapshot

El proceso de generación de capturas en Snapshot consta de varias etapas: preparación de pruebas de UI, configuración de Snapfile, lanzamiento de simuladores y recopilación de resultados. Snapshot lanza secuencialmente cada simulador para los dispositivos e idiomas especificados, ejecuta pruebas de UI y toma capturas en los puntos donde se llama a la función snapshot().

Después de que todas las pruebas se completan, Snapshot recopila las capturas en el directorio screenshots/[Language]/ con nombres que cumplen con los requisitos de App Store. Cada captura se guarda en formato PNG con resolución que coincide con el dispositivo objetivo. Snapshot también genera un informe HTML para la verificación visual de todas las capturas creadas.

Configuración de pruebas de UI para Snapshot

Para que Snapshot funcione, es necesario añadir llamadas snapshot() al código XCTest de pruebas de UI de la aplicación. La función toma una captura del estado actual de la pantalla en el momento de la llamada. El desarrollador coloca snapshot() después de cada acción clave: abrir una pantalla, introducir datos, navegar por pestañas o mostrar resultados.

Ejemplo de estructura de prueba de UI: la prueba inicia sesión en la aplicación, llama a snapshot("01-LoginScreen") para capturar la pantalla de inicio de sesión, luego navega a la pantalla principal y llama a snapshot("02-HomeScreen") para capturar la pantalla principal. XCTest es el framework de Apple para pruebas unitarias y de UI de aplicaciones iOS, integrado directamente en Xcode.

objective-c
// Prueba de UI para 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");
}

Trabajo con idiomas y dispositivos

Snapshot cambia automáticamente el idioma del simulador para cada idioma especificado en Snapfile. La aplicación se lanza con la localización correspondiente y las pruebas de UI se ejecutan en ese idioma. La localización de capturas es un factor crítico de ASO: los usuarios en el 75% de los casos prefieren aplicaciones con contenido en su idioma nativo, incluyendo las capturas en App Store.

Para cada dispositivo, Snapshot lanza un simulador separado con la diagonal de pantalla correspondiente. Se admiten todos los tamaños requeridos por App Store: iPhone 6.5 pulgadas (iPhone 15 Pro Max), 5.5 pulgadas (iPhone 8 Plus), 6.7 pulgadas (iPhone 15 Plus) y iPad 12.9 pulgadas. El simulador de iOS es una emulación por software de un dispositivo iOS integrada en Xcode para probar aplicaciones sin un dispositivo físico.

bash
# Generar capturas para todos los dispositivos e idiomas
fastlane snapshot

# Generar solo para dispositivos especificados
fastlane snapshot --devices "iPhone 15 Pro Max,iPhone 15"

# Limpiar antes de la generación de capturas
fastlane snapshot --reinstall_app --erase_simulator

Configuración de Snapshot mediante Snapfile

Snapfile es un archivo de configuración de Fastlane que define los parámetros de generación de capturas: lista de dispositivos, idiomas, tiempo de espera y opciones de lanzamiento. Snapfile se almacena en el directorio fastlane y se versiona junto con el proyecto, garantizando una configuración unificada para todos los miembros del equipo.

ruby
# Snapfile — configuración de capturas
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)

El parámetro clear_previous_screenshots elimina las capturas antiguas antes de comenzar la generación — esto evita la acumulación de capturas desactualizadas en el directorio de salida. reinstall_app reinstala la aplicación en el simulador antes de cada ejecución, garantizando una sesión limpia sin influencia de pruebas anteriores en la nueva generación.

El parámetro erase_simulator limpia el contenido del simulador antes de comenzar las pruebas — incluyendo caché, configuraciones y datos de sesiones anteriores. Esto es especialmente importante para pruebas que verifican la incorporación o el primer inicio de la aplicación. Snapshot también admite los parámetros ios_version para especificar la versión de iOS en el simulador y stop_after_first_error para detener la generación ante el primer error de prueba de UI.

Para proyectos con SwiftUI está disponible el parámetro use_simulator_for_language, que controla el cambio de idioma a través de la configuración del simulador en lugar de cambiar la región del sistema. Snapshot también admite launch_arguments para pasar argumentos adicionales al iniciar la aplicación — útil para pruebas con diferentes configuraciones de backend o pruebas A/B.

Comandos de Snapshot para generar capturas

La interfaz de Snapshot incluye comandos básicos para iniciar la generación y banderas extendidas para un control preciso del proceso. El comando principal fastlane snapshot ejecuta el ciclo completo de generación de capturas basado en la configuración de Snapfile.

Generación rápida y filtrado

El comando fastlane snapshot --devices "iPhone 15" genera capturas solo para los dispositivos especificados, ignorando el resto de Snapfile. --languages "en-US,ru" filtra los idiomas para la generación. La combinación de estas banderas es útil para verificar rápidamente las capturas en un dispositivo e idioma sin un ciclo completo de generación, que puede tomar hasta 30 minutos para 5 dispositivos y 10 idiomas.

bash
# Generación rápida para un dispositivo
fastlane snapshot --devices "iPhone 15" --languages "en-US"

# Generar con reinstalación de la aplicación
fastlane snapshot --reinstall_app --erase_simulator

# Generar con informe HTML
fastlane snapshot --output_directory "./build/screenshots"

La bandera --output_directory cambia el directorio de guardado de los resultados. Por defecto, Snapshot guarda las capturas en fastlane/screenshots. Para la integración con Deliver, especifique un directorio que coincida con la estructura esperada de Deliverfile — esto permite pasar las capturas directamente al proceso de publicación sin copiar archivos manualmente entre carpetas.

Parámetro de SnapshotPropósitoEjemplo
devicesLista de dispositivos para la generacióniPhone 15, iPad Pro
languagesLista de idiomas de localizaciónen-US, ru, de-DE
reinstall_appReinstalar aplicación antes de las pruebastrue / false
erase_simulatorLimpiar simulador antes del iniciotrue / false
clear_previousEliminar capturas antiguastrue / false

Integración de Snapshot en el pipeline CI/CD

Snapshot en CI/CD es la generación automática de capturas con cada commit de lanzamiento. Snapshot se ejecuta antes de la etapa de Deliver para garantizar que las capturas en App Store coincidan con la versión actual de la aplicación y no contengan elementos de interfaz desactualizados de versiones anteriores.

Para que Snapshot funcione en CI, se requiere Xcode con simuladores de iOS instalados. En entornos CI, Snapshot utiliza los simuladores de Xcode, que se precargan en el runner. GitHub Actions proporciona imágenes con Xcode preinstalado y simuladores de iOS para ejecutar pruebas de UI sin configuración adicional.

bash
# Ejecutar Snapshot en entorno CI
fastlane snapshot --skip_open_summary \

      --output_directory "$CI_PROJECT_DIR/screenshots"

# Guardar capturas como artefactos de CI
cp -R "screenshots/" "$CI_PROJECT_DIR/artifacts/"

El parámetro --skip_open_summary desactiva la apertura del informe HTML después de la generación — en entornos CI la interfaz gráfica no está disponible. Los resultados de la generación se guardan en un directorio que se pasa como artefacto de la tarea CI y luego Deliver lo utiliza para la carga en App Store junto con el lanzamiento.

Para acelerar el pipeline CI, utilice la generación paralela de capturas mediante concurrent_simulators — un parámetro de Snapfile que lanza múltiples simuladores simultáneamente. Esto reduce el tiempo de generación de capturas para 5 dispositivos y 10 idiomas de 40 minutos a 15 minutos utilizando 4 flujos paralelos.

Errores comunes al trabajar con Snapshot

Al usar Snapshot, los desarrolladores se encuentran más a menudo con errores relacionados con la inestabilidad de las pruebas de UI, problemas con los simuladores y configuración incorrecta de dispositivos. El diagnóstico de errores de Snapshot comienza con el análisis del informe HTML, que contiene capturas de cada paso e información sobre las pruebas fallidas.

El error "Failed to build scheme MyAppUITests" ocurre cuando el esquema de pruebas de UI no está configurado para la compilación. Solución: asegúrese de que en Xcode se haya creado un Scheme separado para las pruebas de UI y la opción Shared esté habilitada para el acceso desde la línea de comandos. Xcode Scheme es una configuración de compilación, prueba y ejecución de la aplicación que define el conjunto de objetivos y parámetros para cada acción.

El error "No simulators found matching..." indica que no hay ningún simulador con el tipo de dispositivo o versión de iOS especificada. Solución: ejecute xcrun simctl create para crear un simulador o especifique un dispositivo existente de la lista xcrun simctl list. xcrun simctl es una utilidad de línea de comandos de Xcode para gestionar simuladores de iOS: crear, eliminar, iniciar y diagnosticar.

Para el error "UI test failure" la prueba de UI falla en uno de los idiomas o dispositivos. Solución: ejecute Snapshot con la bandera --stop_after_first_error para detenerse ante el primer error, analice la captura en el informe HTML y corrija la prueba. Una causa común es la diferente longitud del texto en distintos idiomas, lo que provoca que los elementos de la interfaz se superpongan o salgan de los límites de la pantalla.

Preguntas frecuentes

¿Qué dispositivos iOS admite Snapshot?

Snapshot admite todos los dispositivos de la familia iPhone y iPad, incluyendo iPhone 15 Pro Max (6.7 pulgadas), iPhone 15 (6.1 pulgadas), iPad Pro 12.9 pulgadas y iPad mini. Para cada dispositivo, Snapshot carga las skins de simulador correspondientes de Xcode, lo que garantiza una resolución de pantalla precisa.

¿Se necesitan dispositivos reales para que funcione Snapshot?

No, Snapshot funciona exclusivamente con simuladores de iOS de Xcode. No se requieren ni se admiten dispositivos reales — todas las capturas se generan en el entorno del simulador, que proporciona una resolución y reproducción de color idénticas para los requisitos de App Store.

¿Cómo maneja Snapshot la localización del texto en las capturas?

Snapshot cambia el idioma del simulador antes de ejecutar las pruebas de UI para cada idioma de Snapfile. La aplicación se muestra en el idioma correspondiente a través de la configuración de localización del sistema. Las pruebas de UI utilizan cadenas localizadas mediante NSLocalizedString, lo que garantiza el texto correcto en todas las capturas.

¿Se pueden generar capturas para aplicaciones macOS?

Sí, Snapshot admite aplicaciones macOS a partir de la versión 2.200 de Fastlane. Para macOS, especifique la plataforma en Snapfile mediante el parámetro app_platform("macOS"). Snapshot ejecuta pruebas de UI en macOS y crea capturas según los requisitos de Mac App Store.

¿En qué se diferencia Snapshot de una captura normal con Cmd+S?

La captura manual requiere abrir cada pantalla manualmente, cambiar idiomas, cambiar dispositivos — alrededor de 60 acciones para un conjunto completo. Snapshot automatiza todo el proceso: cambia idiomas, dispositivos, ejecuta pruebas de UI y guarda las capturas con los nombres correctos para App Store en 15 minutos.

Resumen

  • Snapshot es una utilidad de Fastlane para la generación automática de capturas de pantalla de aplicaciones iOS mediante pruebas XCTest UI en todos los dispositivos e idiomas.
  • El desarrollador añade llamadas snapshot() al código de pruebas de UI en puntos clave de la aplicación — Snapshot toma capturas en estos lugares.
  • La configuración mediante Snapfile define la lista de dispositivos, idiomas y parámetros del simulador: devices, languages, reinstall_app y erase_simulator.
  • Los resultados se guardan en el directorio screenshots/[Language]/ en un formato compatible con Deliver para la carga directa en App Store.
  • La integración en CI/CD permite generar automáticamente capturas actualizadas antes de cada lanzamiento con simuladores paralelos para acelerar el proceso.
  • Los errores comunes de Snapshot están relacionados con pruebas de UI inestables en diferentes idiomas, falta de simuladores en Xcode o configuración incorrecta del Scheme.

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también