Expo EAS
Ejecuta las pruebas móviles de un proyecto en cada build de EAS e informa del resultado como un check de GitHub.
La integración de Expo EAS escucha los builds de EAS terminados. Cuando un build termina, Autonomy lo descarga y ejecuta un caso de prueba o un plan de pruebas de un proyecto en un emulador de Android. Las pruebas en iOS llegarán pronto. Si hay un repositorio de GitHub vinculado, el resultado aparece como un check de GitHub en el commit.
Qué hace
- Inicia ejecuciones cuando termina un build de EAS, para los builds de Android, y para los de iOS cuando las pruebas en iOS estén disponibles.
- Instala el propio build: un
.apkpara Android, y un.appde simulador para iOS cuando las pruebas en iOS estén disponibles. - Publica un check de GitHub
Autonomy QAa través de un repositorio vinculado. Expo no tiene una superficie de checks propia. - Registra el webhook de EAS por ti cuando vinculas una app.
Configuración
Antes de empezar
- Una cuenta de Expo con un proyecto que use EAS Build.
- Un token de acceso de robot de Expo que pueda leer builds y proyectos.
- Un proyecto de Autonomy con un entorno para ejecuciones móviles.
- Un caso de prueba o un plan de pruebas de ese proyecto que se supere contra un build móvil.
- Un perfil de build de EAS que genere builds instalables (consulta más abajo).
- Para los checks: la GitHub App de Autonomy instalada en el repositorio.
- Abre Organization → Integrations → Expo EAS y pulsa Connect. Pega un robot access token de Expo. Expo usa tokens, no un inicio de sesión.
- Pulsa Link app y elige la app de Expo que quieres probar. Autonomy registra el webhook de builds.
- En Project, elige el proyecto de Autonomy cuyas pruebas ejecutan estos builds. Si lo cambias más adelante, se borran los valores predeterminados de abajo.
- En Default test case or plan, elige qué se ejecuta en cada build. Solo aparecen los casos de prueba y planes de pruebas del proyecto.
- En Default environment, elige el entorno del proyecto. Las ejecuciones usan sus valores e inicios de sesión, con el build nuevo como app. Sin un entorno, los builds se omiten.
- Elige las plataformas cuyos builds inician ejecuciones.
- Para tener un check en la pull request, activa Post a GitHub check via linked repository y elige el GitHub repository for checks.
Perfiles de build
Autonomy necesita builds que pueda instalar en un simulador o un emulador. Añade un perfil a eas.json:
- iOS (próximamente): pon
simulatoratruepara obtener un build.appde simulador. Un.ipade dispositivo no se puede instalar en un simulador. - Android: pon
buildTypeaapk. Un.aabno se puede instalar en un emulador.
1{2 "build": {3 "autonomy-e2e": {4 "withoutCredentials": true,5 "ios": {6 "simulator": true7 },8 "android": {9 "buildType": "apk"10 }11 }12 }13}Si el webhook no se registra
La app vinculada muestra Registered automatically cuando ha funcionado. Si el token no puede gestionar webhooks, muestra en su lugar Webhook — manual setup required con la URL de callback:
- Pulsa Make a new secret for this command. Autonomy crea un secreto y completa el comando
eas webhook:createentero. - Copia el comando ahora. El secreto no se vuelve a mostrar; si lo pierdes, crea uno nuevo y el anterior deja de funcionar.
- Ejecútalo en el directorio de tu proyecto:
eas webhook:create --event BUILD --url <callback-url> --secret <secret>Filtros de rama
Los webhooks de builds de EAS no indican de qué rama viene un build, así que los vínculos de Expo no tienen filtros de rama.
Pegar un enlace de build de Expo
No necesitas la integración para probar un solo build. En el objetivo Android o iOS de un entorno, pega el enlace de la página del build de Expo como enlace de descarga. Al guardar, Autonomy consulta el build y guarda su URL de descarga. Comprueba la cuenta, el proyecto, la plataforma, que el build terminó y no ha caducado, y el identificador de la app cuando Expo lo proporciona.
Autonomy intenta primero la consulta sin credenciales y después con la conexión de Expo de tu organización si Expo pide acceso. Si aun así no puede leer el build, conecta una cuenta de Expo que pueda hacerlo, pega el enlace de descarga directo o sube el build. Los enlaces de Android deben llevar a un .apk.
Cómo se inicia una ejecución
Cuando EAS informa de un build terminado, Autonomy:
- Busca la app vinculada y su proyecto de Autonomy. No se ejecuta nada si ese proyecto está archivado.
- Compara la plataforma del build con las plataformas del vínculo.
- Comprueba el build: se omite un
.aab, un tipo de archivo desconocido o un enlace de descarga de más de 30 días. - Inicia el caso de prueba o el plan de pruebas predeterminado en el entorno predeterminado, con el build como app.
Cada build se ejecuta una sola vez. Un webhook que EAS envía dos veces no inicia una segunda ejecución.
El check
Con un repositorio vinculado, el check de GitHub lleva el nombre de lo que se ejecutó, por ejemplo Autonomy QA: Onboarding, y muestra un enlace a cada ejecución. Concluye como:
| Conclusión | Cuándo |
|---|---|
success | Todas las ejecuciones se superaron. |
failure | Una ejecución falló, se cancelaron las ejecuciones o no terminaron en 30 minutos. |
neutral | Una ejecución no pudo empezar, así que no hay nada que evaluar. |
Una ejecución fallida hace fallar el check, tanto si no se alcanzó su resultado esperado como si el agente no pudo demostrar que se alcanzó. El resumen da el motivo.
Para que los bugs también hagan fallar el check, activa Fail the check on issues en Settings → Integrations → Pull requests del proyecto. Está desactivado por defecto. Cuando está activado, un Bug abierto que una de las ejecuciones del check encontró o reabrió hace fallar el check: "Failed: a bug was found". Consulta Pruebas de pull requests.
Sin un repositorio vinculado, los resultados solo aparecen en Autonomy.
EAS Workflows
Si compilas con EAS Workflows, el webhook de builds sigue iniciando las ejecuciones: tu workflow solo tiene que compilar con un perfil que se pueda probar.
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.Iniciar tú las ejecuciones
Para decidir exactamente cuándo empiezan las ejecuciones, llama a la API desde un paso posterior al build en lugar de vincular la app. Usa una clave de API de la organización, pasa el enlace de descarga del build como app y envía un idempotencyKey para que un paso reintentado no inicie las ejecuciones dos veces:
/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}Envía la clave como Authorization: Bearer aut_…. Sigue cada ejecución con run.get hasta que su status sea definitivo. Consulta Autenticación y Ejecuciones y evidencia.
Varias apps
Vincula cada app de Expo por separado. Cada vínculo tiene su propio proyecto de Autonomy, plan de pruebas, entorno y plataformas. Varias apps pueden compartir un mismo repositorio para los checks.
Solución de problemas
No se inicia ninguna ejecución cuando termina un build
Abre la app vinculada en Autonomy y revisa los builds recientes. Un build omitido indica el motivo:
project disabled: el vínculo está desactivado.deployment not ready: el build todavía está en curso o dio error.no default test target: elige un Default test case or plan.- "Choose an environment for this deploy link in Autonomy.": elige un Default environment.
project archived, o un valor predeterminado archivado o de otro proyecto: restaura el proyecto o elige valores predeterminados nuevos.no build artifact: el build no tiene descarga.
Si no aparece ningún build, comprueba que el webhook muestra Registered automatically, o regístralo a mano como se explica arriba.
El build no se instala
- iOS: el perfil debe poner
ios.simulator: true. Un.ipade dispositivo no puede ejecutarse en un simulador. - Android: el perfil debe poner
android.buildType: "apk". Un.aabse omite conartifact kind aab is not installable.
No se reconoce el tipo de archivo
El build no es un .app, .apk, .ipa ni .aab, y se omite con artifact format not recognized: <ext>. Revisa el perfil de build.
El enlace de descarga caducó
Los enlaces de descarga de EAS caducan a los 30 días, y el build se omite con build artifact expired. Lanza un build de EAS nuevo.
No aparece ningún check en la pull request
Comprueba que Post a GitHub check via linked repository está activado, que hay un GitHub repository for checks elegido y que la GitHub App de Autonomy está instalada en él.
¿No lo encontraste?