TestFlight
Gérez les tests bêta TestFlight de bout en bout : groupes bêta, testeurs, distribution des builds, notes What to Test, examen bêta et retours des testeurs.
Les commandes portant sur un build utilisent par défaut le build le plus récent non expiré. Passez --build <numéro> pour cibler un build précis, et --platform pour lever l'ambiguïté lorsqu'une application en achat universel partage le même numéro de build entre plusieurs plateformes.
Groupes bêta
ascelerate testflight groups list <bundle-id>
ascelerate testflight groups info <bundle-id> "External Testers"
ascelerate testflight groups create <bundle-id> --name "Friends" --public-link --public-link-limit 100
ascelerate testflight groups update <bundle-id> "Friends" --public-link false
ascelerate testflight groups update <bundle-id> "Friends" --mac false --vision-pro true
ascelerate testflight groups delete <bundle-id> "Friends"
groups list affiche pour chaque groupe son type, son lien public, sa limite de testeurs et son réglage de retours. groups info y ajoute les testeurs du groupe et les builds qui lui sont associés. create accepte --internal pour un groupe interne (membres de l'équipe) et --all-builds pour lui donner un accès automatique à tous les builds ; les groupes externes peuvent activer un lien d'invitation public avec une limite de testeurs facultative. update accepte aussi --mac et --vision-pro, qui déterminent si les testeurs peuvent exécuter les builds iPhone et iPad du groupe sur les Mac avec puce Apple et sur l'Apple Vision Pro.
Les noms de groupes sont comparés sans tenir compte de la casse. Omettez le nom pour choisir dans une liste interactive.
Associer des builds
# Par défaut, le build le plus récent non expiré est utilisé
ascelerate testflight groups add-build <bundle-id> "Friends"
ascelerate testflight groups add-build <bundle-id> "Friends" --build 123
ascelerate testflight groups remove-build <bundle-id> "Friends" --build 123
Critères de recrutement
Les groupes à lien public qui ont des critères de recrutement peuvent les modifier ou les supprimer. Apple ne permet plus d'en ajouter de nouveaux (App Store Connect ne les affiche plus non plus), donc set ne remplace que des critères existants :
# Afficher les critères actuels, ainsi que les options appareil/OS acceptées par Apple
ascelerate testflight groups criteria view <bundle-id> "Friends" --options
# Remplacer les critères : FAMILY[:MIN[:MAX]] avec bornes incluses
ascelerate testflight groups criteria set <bundle-id> "Friends" --filter IPHONE:18.0 --filter IPAD:17.0:26
# Supprimer tous les critères
ascelerate testflight groups criteria clear <bundle-id> "Friends"
Familles d'appareils valides : IPHONE, IPAD, MAC, APPLE_TV, APPLE_WATCH, VISION.
Testeurs
ascelerate testflight testers list <bundle-id>
ascelerate testflight testers list <bundle-id> --group "Friends"
# L'ajout envoie l'invitation TestFlight pour les groupes externes
ascelerate testflight testers add <bundle-id> --email tester@example.com --first-name Jane --group "Friends"
# Retirer d'un groupe, ou de toute l'application
ascelerate testflight testers remove <bundle-id> tester@example.com --group "Friends"
ascelerate testflight testers remove <bundle-id> tester@example.com
# Renvoyer l'e-mail d'invitation
ascelerate testflight testers invite <bundle-id> tester@example.com
Avec add et import, l'option --group accepte plusieurs noms de groupes séparés par des virgules.
Importation groupée
ascelerate testflight testers import <bundle-id> --file testers.csv --group "Friends"
Le fichier contient un testeur par ligne : email[,prénom[,nom]]. Les lignes vides, les lignes commençant par # et une ligne d'en-tête initiale sont ignorées ; le format CSV exporté par l'interface web d'App Store Connect fonctionne tel quel. Les lignes en échec sont signalées à la fin, sans interrompre le reste de l'importation.
Builds et distribution
# Tous les builds avec leurs états TestFlight
ascelerate testflight builds <bundle-id>
ascelerate testflight builds <bundle-id> --platform ios --limit 50
# Versions préliminaires
ascelerate testflight versions <bundle-id>
# État complet d'un build
ascelerate testflight status <bundle-id> --build 123
builds liste pour chaque build son état de traitement, ses états de test interne et externe et sa date d'expiration. status y ajoute, pour un seul build, le réglage de notification automatique et l'état de l'examen bêta. Ces deux commandes acceptent --json pour une sortie lisible par machine (conventions).
# Faire expirer un build pour que les testeurs ne puissent plus l'installer
ascelerate testflight expire <bundle-id> --build 123
# Notifier les testeurs qu'un build est disponible
ascelerate testflight notify <bundle-id>
# Activer ou désactiver la notification automatique pour un build
ascelerate testflight auto-notify <bundle-id> --enabled false
What to Test
Les notes de test sont enregistrées par build et par langue :
ascelerate testflight what-to-test view <bundle-id>
# Une seule langue, ou toutes les langues existantes si --locale est omis
ascelerate testflight what-to-test set <bundle-id> --text "Essayez les nouveaux filtres de carte" --locale fr-FR
ascelerate testflight what-to-test set <bundle-id> --text "Essayez les nouveaux filtres de carte"
# Le build le plus récent reçoit les notes de test du build antérieur le plus récent qui en a (dans un workflow, après await-processing)
ascelerate testflight what-to-test copy <bundle-id> --platform ios
# Export et import via JSON
ascelerate testflight what-to-test export <bundle-id> --output notes.json
ascelerate testflight what-to-test import <bundle-id> --file notes.json
Le format JSON suit celui des autres commandes de localisation :
{
"en-US": { "whatsNew": "Try the new map filters" },
"fr-FR": { "whatsNew": "Essayez les nouveaux filtres de carte" }
}
Examen bêta
Les tests externes exigent un examen bêta pour chaque build :
ascelerate testflight submit <bundle-id> --build 123
ascelerate testflight status <bundle-id> --build 123
Les informations de l'application bêta et les détails d'examen s'appliquent au niveau de l'application :
# Description de l'application bêta et e-mail de retours, par langue
ascelerate testflight app-info view <bundle-id>
ascelerate testflight app-info update <bundle-id> --locale fr-FR --feedback-email moi@example.com
ascelerate testflight app-info export <bundle-id> --output beta-app-info.json
ascelerate testflight app-info import <bundle-id> --file beta-app-info.json
# Contact et compte de démonstration pour l'équipe d'examen bêta
ascelerate testflight review-info <bundle-id>
ascelerate testflight review-info <bundle-id> --demo-account-name demo@example.com --demo-account-required true
# Contrat de licence bêta personnalisé (--text "" rétablit le contrat standard d'Apple)
ascelerate testflight eula <bundle-id>
ascelerate testflight eula <bundle-id> --file eula.txt
Retours des testeurs
Les retours de plantage et de capture d'écran envoyés par les testeurs via TestFlight :
ascelerate testflight feedback crashes list <bundle-id>
ascelerate testflight feedback crashes info <submission-id>
ascelerate testflight feedback crashes log <submission-id> --output crash.log
ascelerate testflight feedback crashes delete <submission-id>
ascelerate testflight feedback screenshots list <bundle-id>
ascelerate testflight feedback screenshots info <submission-id>
ascelerate testflight feedback screenshots download <bundle-id> [submission-id] --output feedback.zip
ascelerate testflight feedback screenshots delete <submission-id>
list accepte les filtres --build et --platform. info affiche le contexte complet de l'appareil : modèle, version du système, langue, type de connexion, niveau de batterie, espace disque libre et commentaire du testeur. log affiche le journal de plantage ou l'enregistre avec --output. download regroupe les captures d'écran et le commentaire d'un envoi dans une archive zip ; si l'identifiant d'envoi est omis, une liste paginée des envois de l'application vous permet d'en choisir un. Les URL des captures expirent au bout de quelques jours : téléchargez les retours que vous souhaitez conserver.