Snapshot (Fastlane) est un outil de génération automatique de captures d'écran d'applications iOS sur tous les appareils et langues pris en charge. Contrairement à la création manuelle de captures via le simulateur, Snapshot exécute des tests UI et prend des captures aux points spécifiés de l'application. Selon la documentation officielle de Fastlane (2026), Snapshot réduit le temps de préparation des captures pour la publication de 4 heures à 15 minutes.
Points clés
Snapshot (Fastlane) est un composant de l'écosystème Fastlane qui automatise la création de captures d'écran de l'application pour l'App Store. Il exécute des tests UI sur des simulateurs iOS, prend des captures dans des états spécifiés de l'application et les enregistre dans un répertoire structuré avec des noms corrects pour chaque langue et appareil.
Sans Snapshot, les développeurs lancent manuellement le simulateur, ouvrent chaque écran, prennent une capture avec Cmd+S, changent de langue et répètent le processus pour toutes les combinaisons. L'automatisation des captures d'écran est un élément clé de l'optimisation ASO, car l'App Store exige des captures à jour pour chaque nouvelle publication, et la mise à jour manuelle de plus de 60 captures prend des heures de travail.
Selon la documentation App Store Connect (2025), les applications avec des captures localisées obtiennent 25 % de conversions supplémentaires dans les pays cibles. Snapshot permet aux équipes de mettre à jour le contenu visuel pour 32 langues en une seule exécution, ce qui est particulièrement important pour les campagnes marketing liées aux nouvelles fonctionnalités de l'application.
Utilisez Snapshot dans tout projet publié sur l'App Store — c'est l'outil standard pour les équipes qui cherchent à automatiser le processus de publication et à améliorer l'ASO.
Le processus de génération de captures dans Snapshot comprend plusieurs étapes : préparation des tests UI, configuration du Snapfile, lancement des simulateurs et collecte des résultats. Snapshot lance séquentiellement chaque simulateur pour les appareils et langues spécifiés, exécute des tests UI et prend des captures aux points où la fonction snapshot() est appelée.
Une fois tous les tests terminés, Snapshot collecte les captures dans le répertoire screenshots/[Language]/ avec des noms qui répondent aux exigences de l'App Store. Chaque capture est enregistrée au format PNG avec une résolution correspondant à l'appareil cible. Snapshot génère également un rapport HTML pour la vérification visuelle de toutes les captures créées.
Pour que Snapshot fonctionne, il est nécessaire d'ajouter des appels snapshot() au code XCTest des tests UI de l'application. La fonction prend une capture de l'état actuel de l'écran au moment de l'appel. Le développeur place snapshot() après chaque action clé : ouverture d'un écran, saisie de données, navigation par onglets ou affichage de résultats.
Exemple de structure de test UI : le test se connecte à l'application, appelle snapshot("01-LoginScreen") pour capturer l'écran de connexion, puis navigue vers l'écran d'accueil et appelle snapshot("02-HomeScreen") pour capturer l'écran d'accueil. XCTest est le framework d'Apple pour les tests unitaires et UI des applications iOS, intégré directement dans Xcode.
// Test UI pour 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");
}
Snapshot change automatiquement la langue du simulateur pour chaque langue spécifiée dans Snapfile. L'application se lance avec la localisation correspondante et les tests UI s'exécutent dans cette langue. La localisation des captures d'écran est un facteur critique d'ASO : les utilisateurs dans 75 % des cas préfèrent les applications avec du contenu dans leur langue maternelle, y compris les captures dans l'App Store.
Pour chaque appareil, Snapshot lance un simulateur séparé avec la diagonale d'écran correspondante. Toutes les tailles requises par l'App Store sont prises en charge : iPhone 6,5 pouces (iPhone 15 Pro Max), 5,5 pouces (iPhone 8 Plus), 6,7 pouces (iPhone 15 Plus) et iPad 12,9 pouces. Le simulateur iOS est une émulation logicielle d'un appareil iOS intégrée dans Xcode pour tester des applications sans appareil physique.
# Générer les captures pour tous les appareils et langues
fastlane snapshot
# Générer uniquement pour les appareils spécifiés
fastlane snapshot --devices "iPhone 15 Pro Max,iPhone 15"
# Nettoyer avant la génération de captures
fastlane snapshot --reinstall_app --erase_simulator
Snapfile est un fichier de configuration Fastlane qui définit les paramètres de génération de captures : liste des appareils, langues, temps d'attente et options de lancement. Snapfile est stocké dans le répertoire fastlane et versionné avec le projet, garantissant une configuration unifiée pour tous les membres de l'équipe.
# Snapfile — configuration des captures
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)
Le paramètre clear_previous_screenshots supprime les anciennes captures avant de commencer la génération — cela évite l'accumulation de captures obsolètes dans le répertoire de sortie. reinstall_app réinstalle l'application sur le simulateur avant chaque exécution, garantissant une session propre sans influence des tests précédents sur la nouvelle génération.
Le paramètre erase_simulator efface le contenu du simulateur avant de commencer les tests — y compris le cache, les paramètres et les données des sessions précédentes. C'est particulièrement important pour les tests qui vérifient l'intégration ou le premier lancement de l'application. Snapshot prend également en charge les paramètres ios_version pour spécifier la version d'iOS sur le simulateur et stop_after_first_error pour arrêter la génération à la première erreur de test UI.
Pour les projets SwiftUI, le paramètre use_simulator_for_language est disponible, qui contrôle le changement de langue via les paramètres du simulateur au lieu de modifier la région du système. Snapshot prend également en charge launch_arguments pour passer des arguments supplémentaires au lancement de l'application — utile pour les tests avec différentes configurations backend ou tests A/B.
L'interface Snapshot comprend des commandes de base pour lancer la génération et des indicateurs étendus pour un contrôle précis du processus. La commande principale fastlane snapshot exécute le cycle complet de génération de captures basé sur la configuration Snapfile.
La commande fastlane snapshot --devices "iPhone 15" génère des captures uniquement pour les appareils spécifiés, ignorant le reste du Snapfile. --languages "en-US,ru" filtre les langues pour la génération. La combinaison de ces indicateurs est utile pour vérifier rapidement les captures sur un appareil et une langue sans cycle complet de génération, qui peut prendre jusqu'à 30 minutes pour 5 appareils et 10 langues.
# Génération rapide pour un appareil
fastlane snapshot --devices "iPhone 15" --languages "en-US"
# Générer avec réinstallation de l'application
fastlane snapshot --reinstall_app --erase_simulator
# Générer avec rapport HTML
fastlane snapshot --output_directory "./build/screenshots"
L'indicateur --output_directory modifie le répertoire de sauvegarde des résultats. Par défaut, Snapshot enregistre les captures dans fastlane/screenshots. Pour l'intégration avec Deliver, spécifiez un répertoire qui correspond à la structure attendue de Deliverfile — cela permet de passer les captures directement au processus de publication sans copie manuelle de fichiers entre dossiers.
| Paramètre Snapshot | Objectif | Exemple |
|---|---|---|
| devices | Liste des appareils pour la génération | iPhone 15, iPad Pro |
| languages | Liste des langues de localisation | en-US, ru, de-DE |
| reinstall_app | Réinstaller l'application avant les tests | true / false |
| erase_simulator | Effacer le simulateur avant le lancement | true / false |
| clear_previous | Supprimer les anciennes captures | true / false |
Snapshot dans CI/CD est la génération automatique de captures à chaque commit de publication. Snapshot s'exécute avant l'étape Deliver pour garantir que les captures dans l'App Store correspondent à la version actuelle de l'application et ne contiennent pas d'éléments d'interface obsolètes des versions précédentes.
Pour que Snapshot fonctionne dans CI, Xcode avec des simulateurs iOS installés est requis. Dans les environnements CI, Snapshot utilise les simulateurs de Xcode, qui sont préchargés sur le runner. GitHub Actions fournit des images avec Xcode préinstallé et des simulateurs iOS pour exécuter des tests UI sans configuration supplémentaire.
# Exécuter Snapshot dans l'environnement CI
fastlane snapshot --skip_open_summary \
--output_directory "$CI_PROJECT_DIR/screenshots"
# Enregistrer les captures comme artefacts CI
cp -R "screenshots/" "$CI_PROJECT_DIR/artifacts/"
Le paramètre --skip_open_summary désactive l'ouverture du rapport HTML après la génération — dans les environnements CI, l'interface graphique n'est pas disponible. Les résultats de la génération sont enregistrés dans un répertoire qui est passé comme artefact de la tâche CI, puis utilisé par Deliver pour le téléchargement sur l'App Store avec la publication.
Pour accélérer le pipeline CI, utilisez la génération parallèle de captures via concurrent_simulators — un paramètre Snapfile qui lance plusieurs simulateurs simultanément. Cela réduit le temps de génération de captures pour 5 appareils et 10 langues de 40 minutes à 15 minutes en utilisant 4 flux parallèles.
Lors de l'utilisation de Snapshot, les développeurs rencontrent le plus souvent des erreurs liées à l'instabilité des tests UI, aux problèmes de simulateurs et à la configuration incorrecte des appareils. Le diagnostic d'erreurs de Snapshot commence par l'analyse du rapport HTML, qui contient des captures de chaque étape et des informations sur les tests échoués.
L'erreur "Failed to build scheme MyAppUITests" se produit lorsque le schéma de tests UI n'est pas configuré pour la compilation. Solution : assurez-vous qu'un Scheme séparé pour les tests UI a été créé dans Xcode et que l'option Shared est activée pour l'accès en ligne de commande. Xcode Scheme est une configuration de compilation, de test et d'exécution de l'application qui définit l'ensemble des cibles et des paramètres pour chaque action.
L'erreur "No simulators found matching..." indique qu'aucun simulateur avec le type d'appareil ou la version iOS spécifiée n'existe. Solution : exécutez xcrun simctl create pour créer un simulateur ou spécifiez un appareil existant depuis la liste xcrun simctl list. xcrun simctl est un utilitaire en ligne de commande Xcode pour gérer les simulateurs iOS : créer, supprimer, lancer et diagnostiquer.
Pour l'erreur "UI test failure" le test UI échoue sur l'une des langues ou appareils. Solution : exécutez Snapshot avec l'indicateur --stop_after_first_error pour vous arrêter à la première erreur, analysez la capture dans le rapport HTML et corrigez le test. Une cause fréquente est la différence de longueur de texte entre les langues, ce qui provoque le chevauchement des éléments d'interface ou leur sortie des limites de l'écran.
Questions fréquentes
Snapshot prend en charge tous les appareils de la famille iPhone et iPad, y compris l'iPhone 15 Pro Max (6,7 pouces), l'iPhone 15 (6,1 pouces), l'iPad Pro 12,9 pouces et l'iPad mini. Pour chaque appareil, Snapshot charge les skins de simulateur correspondants depuis Xcode, garantissant une résolution d'écran précise.
Non, Snapshot fonctionne exclusivement avec les simulateurs iOS de Xcode. Les appareils réels ne sont pas nécessaires et ne sont pas pris en charge — toutes les captures sont générées dans l'environnement du simulateur, qui fournit une résolution et une reproduction des couleurs identiques pour les exigences de l'App Store.
Snapshot change la langue du simulateur avant d'exécuter les tests UI pour chaque langue du Snapfile. L'application s'affiche dans la langue correspondante via les paramètres de localisation système. Les tests UI utilisent des chaînes localisées via NSLocalizedString, garantissant un texte correct sur toutes les captures.
Oui, Snapshot prend en charge les applications macOS à partir de Fastlane version 2.200. Pour macOS, spécifiez la plateforme dans Snapfile via le paramètre app_platform("macOS"). Snapshot exécute des tests UI sur macOS et crée des captures selon les exigences du Mac App Store.
La capture manuelle nécessite d'ouvrir chaque écran manuellement, de changer les langues, de changer les appareils — environ 60 actions pour un ensemble complet. Snapshot automatise tout le processus : change les langues, les appareils, exécute les tests UI et enregistre les captures avec les noms corrects pour l'App Store en 15 minutes.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.