Expo EAS
Exécutez les tests mobiles d'un projet sur chaque build EAS et publiez le résultat sous forme de check GitHub.
L'intégration Expo EAS écoute les builds EAS terminés. Quand un build se termine, Autonomy le télécharge et exécute un cas de test ou un plan de test d'un projet sur un émulateur Android. Les tests iOS arrivent bientôt. Si un dépôt GitHub est associé, le résultat apparaît comme check GitHub sur le commit.
Ce qu'elle fait
- Lance des exécutions quand un build EAS se termine, pour les builds Android, et pour les builds iOS quand les tests iOS seront disponibles.
- Installe le build lui-même : un
.apkpour Android, et un.appde simulateur pour iOS quand les tests iOS seront disponibles. - Publie un check GitHub
Autonomy QAvia un dépôt associé. Expo n'a pas d'espace de checks qui lui soit propre. - Enregistre pour vous le webhook EAS quand vous associez une application.
Configuration
Avant de commencer
- Un compte Expo avec un projet qui utilise EAS Build.
- Un jeton d'accès robot Expo capable de lire les builds et les projets.
- Un projet Autonomy avec un environnement pour les exécutions mobiles.
- Un cas de test ou un plan de test de ce projet dont les exécutions réussissent sur un build mobile.
- Un profil de build EAS qui produit des builds installables (voir ci-dessous).
- Pour les checks : l'application GitHub Autonomy installée sur le dépôt.
- Ouvrez Organization → Integrations → Expo EAS et cliquez sur Connect. Collez un robot access token Expo. Expo fonctionne avec des jetons, pas avec une connexion.
- Cliquez sur Link app et choisissez l'application Expo à tester. Autonomy enregistre le webhook de build.
- Sous Project, choisissez le projet Autonomy dont ces builds exécutent les tests. Le modifier par la suite efface les valeurs par défaut ci-dessous.
- Sous Default test case or plan, choisissez ce qui s'exécute sur chaque build. Seuls les cas de test et plans de test du projet sont proposés.
- Sous Default environment, choisissez l'environnement du projet. Les exécutions utilisent ses valeurs et ses connexions, avec le nouveau build comme application. Sans environnement, les builds sont ignorés.
- Choisissez les platforms dont les builds lancent des exécutions.
- Pour obtenir un check sur la pull request, activez Post a GitHub check via linked repository et choisissez le GitHub repository for checks.
Profils de build
Autonomy a besoin de builds qu'il peut installer sur un simulateur ou un émulateur. Ajoutez un profil à eas.json :
- iOS (bientôt disponible) : définissez
simulatoràtruepour obtenir un build de simulateur.app. Un.ipapour appareil physique ne peut pas être installé sur un simulateur. - Android : définissez
buildTypeàapk. Un.aabne peut pas être installé sur un émulateur.
1{2 "build": {3 "autonomy-e2e": {4 "withoutCredentials": true,5 "ios": {6 "simulator": true7 },8 "android": {9 "buildType": "apk"10 }11 }12 }13}Si le webhook n'est pas enregistré
L'application associée affiche Registered automatically quand l'enregistrement a fonctionné. Si le jeton ne peut pas gérer les webhooks, elle affiche à la place Webhook — manual setup required avec l'URL de rappel :
- Cliquez sur Make a new secret for this command. Autonomy crée un secret et complète la commande
eas webhook:createentière. - Copiez la commande tout de suite. Le secret n'est plus affiché ensuite ; si vous le perdez, créez-en un nouveau, et l'ancien cesse de fonctionner.
- Exécutez-la dans le répertoire de votre projet :
eas webhook:create --event BUILD --url <callback-url> --secret <secret>Filtres de branche
Les webhooks de build EAS n'indiquent pas de quelle branche provient un build : les associations Expo n'ont donc pas de filtres de branche.
Coller un lien de build Expo
Vous n'avez pas besoin de l'intégration pour tester un seul build. Dans la cible Android ou iOS d'un environnement, collez le lien de la page du build Expo comme lien de téléchargement. À l'enregistrement, Autonomy retrouve le build et stocke son URL de téléchargement. Il vérifie le compte, le projet, la plateforme, que le build est terminé et n'a pas expiré, ainsi que l'identifiant de l'application quand Expo en fournit un.
Autonomy tente d'abord la recherche sans identifiants, puis avec la connexion Expo de votre organisation si Expo demande un accès. S'il ne parvient toujours pas à lire le build, connectez un compte Expo qui y a accès, collez le lien de téléchargement direct ou téléversez le build. Les liens Android doivent mener à un .apk.
Comment une exécution démarre
Quand EAS signale un build terminé, Autonomy :
- Retrouve l'application associée et son projet Autonomy. Rien ne s'exécute si ce projet est archivé.
- Compare la plateforme du build aux plateformes de l'association.
- Vérifie le build : un
.aab, un type de fichier inconnu ou un lien de téléchargement de plus de 30 jours est ignoré. - Lance le cas de test ou le plan de test par défaut dans l'environnement par défaut, avec le build comme application.
Chaque build s'exécute une seule fois. Un webhook qu'EAS envoie deux fois ne lance pas de deuxième exécution.
Le check
Avec un dépôt associé, le check GitHub porte le nom de ce qui a été exécuté, par exemple Autonomy QA: Onboarding, et affiche un lien vers chaque exécution. Il se conclut ainsi :
| Conclusion | Quand |
|---|---|
success | Toutes les exécutions ont réussi. |
failure | Une exécution a échoué, les exécutions ont été annulées, ou elles ne se sont pas terminées dans les 30 minutes. |
neutral | Une exécution n'a pas pu démarrer : il n'y a donc rien à juger. |
Une exécution échouée fait échouer le check, que son résultat attendu n'ait pas été atteint ou que l'agent n'ait pas pu montrer qu'il l'a été. Le résumé en donne la raison.
Pour que les bugs fassent aussi échouer le check, activez Fail the check on issues dans Settings → Integrations → Pull requests du projet. L'option est désactivée par défaut. Une fois activée, un Bug ouvert qu'une des exécutions du check a trouvé ou rouvert fait échouer le check : « Failed: a bug was found ». Voir Tests de pull request.
Sans dépôt associé, les résultats n'apparaissent que dans Autonomy.
EAS Workflows
Si vous construisez avec EAS Workflows, c'est toujours le webhook de build qui lance les exécutions : votre workflow doit seulement construire avec un profil testable.
name: Autonomy E2E
on:
push:
branches: ['main']
pull_request:
branches: ['*']
jobs:
build_ios:
name: Build iOS for Autonomy
type: build
params:
platform: ios
profile: autonomy-e2e
build_android:
name: Build Android for Autonomy
type: build
params:
platform: android
profile: autonomy-e2e
# No trigger job: the EAS build webhook starts the runs
# when each build finishes.Lancer les exécutions vous-même
Pour décider précisément quand les exécutions démarrent, appelez l'API depuis une étape qui suit le build, au lieu d'associer l'application. Utilisez une clé API d'organisation, transmettez le lien de téléchargement du build comme application et envoyez un idempotencyKey pour qu'une étape relancée ne démarre pas les exécutions deux fois :
/api/v1/run.trigger1{2 "testPlanId": "...",3 "environmentSlug": "staging",4 "platforms": [5 "android"6 ],7 "targets": {8 "android": {9 "packageName": "com.example.app",10 "artifactUrl": "https://expo.dev/artifacts/eas/....apk",11 "sourceMode": "url"12 }13 },14 "branch": "main",15 "idempotencyKey": "eas-build-<build id>"16}1{2 "runIds": [3 "..."4 ],5 "planGroupRunId": "...",6 "environment": {7 "slug": "staging",8 "name": "Staging"9 }10}Envoyez la clé sous la forme Authorization: Bearer aut_…. Suivez chaque exécution avec run.get jusqu'à ce que son status soit définitif. Voir Authentification et Exécutions et preuves.
Plusieurs applications
Associez chaque application Expo séparément. Chaque association a son propre projet Autonomy, son plan de test, son environnement et ses plateformes. Plusieurs applications peuvent partager un même dépôt pour les checks.
Dépannage
Aucune exécution ne démarre à la fin d'un build
Ouvrez l'application associée dans Autonomy et consultez les builds récents. Un build ignoré en indique la raison :
project disabled: l'association est désactivée.deployment not ready: le build est encore en cours ou s'est terminé en erreur.no default test target: choisissez un Default test case or plan.- « Choose an environment for this deploy link in Autonomy. » : choisissez un Default environment.
project archived, ou une valeur par défaut archivée ou appartenant à un autre projet : restaurez le projet ou choisissez de nouvelles valeurs par défaut.no build artifact: le build n'a rien à télécharger.
Si aucun build n'apparaît, vérifiez que le webhook affiche Registered automatically, ou enregistrez-le à la main comme indiqué plus haut.
Le build ne s'installe pas
- iOS : le profil doit définir
ios.simulator: true. Un.ipapour appareil physique ne peut pas s'exécuter sur un simulateur. - Android : le profil doit définir
android.buildType: "apk". Un.aabest ignoré avecartifact kind aab is not installable.
Le type de fichier n'est pas reconnu
Le build n'est ni un .app, ni un .apk, ni un .ipa, ni un .aab, et il est ignoré avec artifact format not recognized: <ext>. Vérifiez le profil de build.
Le lien de téléchargement a expiré
Les liens de téléchargement EAS expirent au bout de 30 jours, et le build est ignoré avec build artifact expired. Lancez un nouveau build EAS.
Aucun check n'apparaît sur la pull request
Vérifiez que Post a GitHub check via linked repository est activé, qu'un GitHub repository for checks est choisi et que l'application GitHub Autonomy y est installée.
Vous n’avez pas trouvé ?