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 (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.
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.
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.
// 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");
}
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.
# 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
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.
# 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.
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.
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.
# 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 Snapshot | Finalidade | Exemplo |
|---|---|---|
| devices | Lista de dispositivos para geração | iPhone 15, iPad Pro |
| languages | Lista de idiomas de localização | en-US, ru, de-DE |
| reinstall_app | Reinstalar aplicativo antes dos testes | true / false |
| erase_simulator | Limpar simulador antes da inicialização | true / false |
| clear_previous | Eliminar capturas antigas | true / false |
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.
# 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.
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
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.
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.
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.
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.
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
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.
Leia também