Snapshot (Fastlane) — essência, geração de capturas de tela e configuração em aplicativos móveis

Autor: IT Sectr Publicado: 2026-04-15 Tempo de leitura: 10 min

Snapshot (Fastlane) é uma ferramenta para geração automática de capturas de tela de aplicativos iOS em todos os dispositivos e idiomas suportados. Ao contrário da criação manual de capturas através do simulador, o Snapshot executa testes de UI e tira capturas nos pontos especificados do aplicativo. De acordo com a documentação oficial do Fastlane (2026), o Snapshot reduz o tempo de preparação de capturas para o lançamento de 4 horas para 15 minutos.

Principais pontos

  • Snapshot é um utilitário Fastlane para criação automática de capturas de tela de aplicativos iOS através de testes de UI em todos os dispositivos e idiomas.
  • A ferramenta integra-se com testes XCTest UI: o desenvolvedor adiciona comandos snapshot() no código de teste para capturar imagens nas telas principais do aplicativo.
  • Snapshot suporta todos os tamanhos de dispositivos iPhone e iPad exigidos pela App Store: 6.5, 5.5, 6.7, 12.9 polegadas e outros formatos de tela.
  • A configuração é feita através do arquivo Snapfile, onde são especificados dispositivos, idiomas, localização e parâmetros de inicialização do simulador para geração.
  • Os resultados são salvos no diretório screenshots/, compatível com Deliver — as capturas estão prontas para upload na App Store sem processamento adicional.

O que é Snapshot (Fastlane)?

Snapshot (Fastlane) é um componente do ecossistema Fastlane que automatiza a criação de capturas de tela do aplicativo para a App Store. Ele executa testes de UI em simuladores iOS, tira capturas em estados especificados do aplicativo e as salva em um diretório estruturado com nomes corretos para cada idioma e dispositivo.

Sem o Snapshot, os desenvolvedores iniciam manualmente o simulador, abrem cada tela, tiram uma captura com Cmd+S, mudam de idioma e repetem o processo para todas as combinações. A automação de capturas é um elemento chave da otimização ASO, pois a App Store exige capturas atualizadas para cada novo lançamento, e a atualização manual de mais de 60 capturas leva horas de trabalho.

De acordo com a Documentação App Store Connect (2025), aplicativos com capturas localizadas obtêm 25% mais conversões nos países-alvo. O Snapshot permite que as equipes atualizem o conteúdo visual para 32 idiomas em uma única execução, o que é especialmente importante para campanhas de marketing vinculadas a novos recursos do aplicativo.

Use o Snapshot em qualquer projeto que publique na App Store — é a ferramenta padrão para equipes que buscam automatizar o processo de lançamento e melhorar o ASO.

Como o Snapshot gera capturas de tela

O processo de geração de capturas no Snapshot consiste em várias etapas: preparação de testes de UI, configuração do Snapfile, inicialização de simuladores e coleta de resultados. O Snapshot inicia sequencialmente cada simulador para os dispositivos e idiomas especificados, executa testes de UI e tira capturas nos pontos onde a função snapshot() é chamada.

Após a conclusão de todos os testes, o Snapshot coleta as capturas no diretório screenshots/[Language]/ com nomes que atendem aos requisitos da App Store. Cada captura é salva em formato PNG com resolução correspondente ao dispositivo alvo. O Snapshot também gera um relatório HTML para verificação visual de todas as capturas criadas.

Configuração de testes de UI para Snapshot

Para o Snapshot funcionar, é necessário adicionar chamadas snapshot() ao código XCTest de testes de UI do aplicativo. A função tira uma captura do estado atual da tela no momento da chamada. O desenvolvedor coloca snapshot() após cada ação chave: abrir uma tela, inserir dados, navegar por abas ou exibir resultados.

Exemplo de estrutura de teste de UI: o teste faz login no aplicativo, chama snapshot("01-LoginScreen") para capturar a tela de login, depois navega para a tela inicial e chama snapshot("02-HomeScreen") para capturar a tela inicial. XCTest é o framework da Apple para testes unitários e de UI de aplicativos iOS, integrado diretamente no Xcode.

objective-c
// Teste 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");
}

Trabalho com idiomas e dispositivos

O Snapshot muda automaticamente o idioma do simulador para cada idioma especificado no Snapfile. O aplicativo é iniciado com a localização correspondente e os testes de UI são executados nesse idioma. A localização de capturas é um fator crítico de ASO: os usuários em 75% dos casos preferem aplicativos com conteúdo em seu idioma nativo, incluindo as capturas na App Store.

Para cada dispositivo, o Snapshot inicia um simulador separado com a diagonal de tela correspondente. Todos os tamanhos exigidos pela App Store são suportados: iPhone 6.5 polegadas (iPhone 15 Pro Max), 5.5 polegadas (iPhone 8 Plus), 6.7 polegadas (iPhone 15 Plus) e iPad 12.9 polegadas. O simulador iOS é uma emulação por software de um dispositivo iOS integrada no Xcode para testar aplicativos sem um dispositivo físico.

bash
# Gerar capturas para todos os dispositivos e idiomas
fastlane snapshot

# Gerar apenas para dispositivos especificados
fastlane snapshot --devices "iPhone 15 Pro Max,iPhone 15"

# Limpar antes da geração de capturas
fastlane snapshot --reinstall_app --erase_simulator

Configuração do Snapshot através do Snapfile

Snapfile é um arquivo de configuração do Fastlane que define os parâmetros de geração de capturas: lista de dispositivos, idiomas, tempo de espera e opções de inicialização. O Snapfile é armazenado no diretório fastlane e versionado junto com o projeto, garantindo uma configuração unificada para todos os membros da equipe.

ruby
# Snapfile — configuração 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)

O parâmetro clear_previous_screenshots elimina as capturas antigas antes de iniciar a geração — isso evita o acúmulo de capturas desatualizadas no diretório de saída. reinstall_app reinstala o aplicativo no simulador antes de cada execução, garantindo uma sessão limpa sem influência de testes anteriores na nova geração.

O parâmetro erase_simulator limpa o conteúdo do simulador antes de iniciar os testes — incluindo cache, configurações e dados de sessões anteriores. Isso é especialmente importante para testes que verificam a integração ou o primeiro início do aplicativo. O Snapshot também suporta os parâmetros ios_version para especificar a versão do iOS no simulador e stop_after_first_error para parar a geração ao primeiro erro de teste de UI.

Para projetos com SwiftUI, o parâmetro use_simulator_for_language está disponível, que controla a mudança de idioma através das configurações do simulador em vez de alterar a região do sistema. O Snapshot também suporta launch_arguments para passar argumentos adicionais ao iniciar o aplicativo — útil para testes com diferentes configurações de backend ou testes A/B.

Comandos do Snapshot para geração de capturas

A interface do Snapshot inclui comandos básicos para iniciar a geração e flags estendidas para controle preciso do processo. O comando principal fastlane snapshot executa o ciclo completo de geração de capturas com base na configuração do Snapfile.

Geração rápida e filtragem

O comando fastlane snapshot --devices "iPhone 15" gera capturas apenas para os dispositivos especificados, ignorando o restante do Snapfile. --languages "en-US,ru" filtra os idiomas para geração. A combinação dessas flags é útil para verificar rapidamente as capturas em um dispositivo e idioma sem um ciclo completo de geração, que pode levar até 30 minutos para 5 dispositivos e 10 idiomas.

bash
# Geração rápida para um dispositivo
fastlane snapshot --devices "iPhone 15" --languages "en-US"

# Gerar com reinstalação do aplicativo
fastlane snapshot --reinstall_app --erase_simulator

# Gerar com relatório HTML
fastlane snapshot --output_directory "./build/screenshots"

A flag --output_directory altera o diretório de salvamento dos resultados. Por padrão, o Snapshot salva as capturas em fastlane/screenshots. Para integração com o Deliver, especifique um diretório que corresponda à estrutura esperada do Deliverfile — isso permite passar as capturas diretamente para o processo de publicação sem copiar arquivos manualmente entre pastas.

Parâmetro do SnapshotFinalidadeExemplo
devicesLista de dispositivos para geraçãoiPhone 15, iPad Pro
languagesLista de idiomas de localizaçãoen-US, ru, de-DE
reinstall_appReinstalar aplicativo antes dos testestrue / false
erase_simulatorLimpar simulador antes da inicializaçãotrue / false
clear_previousEliminar capturas antigastrue / false

Integração do Snapshot no pipeline CI/CD

Snapshot em CI/CD é a geração automática de capturas a cada commit de lançamento. O Snapshot é executado antes da etapa do Deliver para garantir que as capturas na App Store correspondam à versão atual do aplicativo e não contenham elementos de interface desatualizados de versões anteriores.

Para o Snapshot funcionar em CI, é necessário Xcode com simuladores iOS instalados. Em ambientes CI, o Snapshot usa os simuladores do Xcode, que são pré-carregados no runner. GitHub Actions fornece imagens com Xcode pré-instalado e simuladores iOS para executar testes de UI sem configuração adicional.

bash
# Executar Snapshot em ambiente CI
fastlane snapshot --skip_open_summary \

      --output_directory "$CI_PROJECT_DIR/screenshots"

# Salvar capturas como artefatos de CI
cp -R "screenshots/" "$CI_PROJECT_DIR/artifacts/"

O parâmetro --skip_open_summary desativa a abertura do relatório HTML após a geração — em ambientes CI, a interface gráfica não está disponível. Os resultados da geração são salvos em um diretório que é passado como artefato da tarefa CI e depois usado pelo Deliver para upload na App Store junto com o lançamento.

Para acelerar o pipeline CI, use a geração paralela de capturas através de concurrent_simulators — um parâmetro do Snapfile que inicia vários simuladores simultaneamente. Isso reduz o tempo de geração de capturas para 5 dispositivos e 10 idiomas de 40 minutos para 15 minutos usando 4 fluxos paralelos.

Erros comuns ao trabalhar com Snapshot

Ao usar o Snapshot, os desenvolvedores encontram com mais frequência erros relacionados à instabilidade dos testes de UI, problemas com simuladores e configuração incorreta de dispositivos. O diagnóstico de erros do Snapshot começa com a análise do relatório HTML, que contém capturas de cada etapa e informações sobre os testes com falha.

O erro "Failed to build scheme MyAppUITests" ocorre quando o esquema de testes de UI não está configurado para compilação. Solução: certifique-se de que um Scheme separado para testes de UI foi criado no Xcode e a opção Shared está habilitada para acesso pela linha de comando. Xcode Scheme é uma configuração de compilação, teste e execução do aplicativo que define o conjunto de alvos e parâmetros para cada ação.

O erro "No simulators found matching..." indica que não há nenhum simulador com o tipo de dispositivo ou versão iOS especificada. Solução: execute xcrun simctl create para criar um simulador ou especifique um dispositivo existente da lista xcrun simctl list. xcrun simctl é um utilitário de linha de comando do Xcode para gerenciar simuladores iOS: criar, excluir, iniciar e diagnosticar.

Para o erro "UI test failure" o teste de UI falha em um dos idiomas ou dispositivos. Solução: execute o Snapshot com a flag --stop_after_first_error para parar no primeiro erro, analise a captura no relatório HTML e corrija o teste. Uma causa comum é o diferente comprimento do texto em diferentes idiomas, fazendo com que os elementos da interface se sobreponham ou saiam dos limites da tela.

Perguntas frequentes

Quais dispositivos iOS o Snapshot suporta?

O Snapshot suporta todos os dispositivos da família iPhone e iPad, incluindo iPhone 15 Pro Max (6.7 polegadas), iPhone 15 (6.1 polegadas), iPad Pro 12.9 polegadas e iPad mini. Para cada dispositivo, o Snapshot carrega as skins de simulador correspondentes do Xcode, garantindo resolução de tela precisa.

Dispositivos reais são necessários para o Snapshot funcionar?

Não, o Snapshot funciona exclusivamente com simuladores iOS do Xcode. Dispositivos reais não são necessários nem suportados — todas as capturas são geradas no ambiente do simulador, que fornece resolução e reprodução de cor idênticas para os requisitos da App Store.

Como o Snapshot lida com a localização de texto nas capturas?

O Snapshot muda o idioma do simulador antes de executar os testes de UI para cada idioma do Snapfile. O aplicativo é exibido no idioma correspondente através das configurações de localização do sistema. Os testes de UI usam strings localizadas via NSLocalizedString, garantindo o texto correto em todas as capturas.

É possível gerar capturas para aplicativos macOS?

Sim, o Snapshot suporta aplicativos macOS a partir da versão 2.200 do Fastlane. Para macOS, especifique a plataforma no Snapfile através do parâmetro app_platform("macOS"). O Snapshot executa testes de UI no macOS e cria capturas de acordo com os requisitos da Mac App Store.

Qual a diferença entre o Snapshot e uma captura normal com Cmd+S?

A captura manual requer abrir cada tela manualmente, mudar idiomas, mudar dispositivos — cerca de 60 ações para um conjunto completo. Snapshot automatiza todo o processo: muda idiomas, dispositivos, executa testes de UI e salva as capturas com os nomes corretos para a App Store em 15 minutos.

Resumo

  • Snapshot é um utilitário Fastlane para geração automática de capturas de tela de aplicativos iOS através de testes XCTest UI em todos os dispositivos e idiomas.
  • O desenvolvedor adiciona chamadas snapshot() ao código de testes de UI em pontos chave do aplicativo — o Snapshot tira capturas nesses locais.
  • A configuração através do Snapfile define a lista de dispositivos, idiomas e parâmetros do simulador: devices, languages, reinstall_app e erase_simulator.
  • Os resultados são salvos no diretório screenshots/[Language]/ em formato compatível com Deliver para upload direto na App Store.
  • A integração em CI/CD permite gerar automaticamente capturas atualizadas antes de cada lançamento com simuladores paralelos para acelerar o processo.
  • Os erros comuns do Snapshot estão relacionados a testes de UI instáveis em diferentes idiomas, falta de simuladores no Xcode ou configuração incorreta do Scheme.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também