O EAS Workflows é uma solução de CI/CD nativa da Expo que integra build e testes Maestro em um único pipeline — sem precisar configurar emuladores manualmente no GitHub Actions.
Funciona em projetos Expo padrão, não é exclusivo de monorepos.
| Situação | Recomendação |
|---|---|
| Projeto Expo/React Native com EAS configurado | EAS Workflows |
| Projeto React Native sem Expo | GitHub Actions (ver CI/CD) |
| Quer evitar configurar emuladores no CI | EAS Workflows |
| Precisa de controle total do pipeline | GitHub Actions |
- Conta na Expo
- Projeto configurado com
eas.json - Repositório GitHub vinculado ao projeto EAS
- EAS CLI instalado:
npm install -g eas-cli
Crie um diretório .maestro/ na raiz do projeto (mesmo nível do eas.json):
meu-projeto/
├── .maestro/
│ ├── home.yml
│ └── expand_test.yml
├── eas.json
└── app.json
Exemplo: .maestro/home.yml
appId: com.seuapp.id
---
- launchApp
- assertVisible: "Bem-vindo!"Exemplo: .maestro/expand_test.yml
appId: com.seuapp.id
---
- launchApp
- tapOn: "Explorar.*"
- assertVisible: "Navegação baseada em arquivos.*"Adicione um perfil específico para testes e2e:
{
"build": {
"e2e-test": {
"withoutCredentials": true,
"ios": {
"simulator": true
},
"android": {
"buildType": "apk"
}
}
}
}O perfil withoutCredentials: true evita a necessidade de certificados de assinatura, acelerando o build para testes.
Crie .eas/workflows/e2e-test-android.yml:
name: e2e-test-android
on:
pull_request:
branches: ['*']
jobs:
build_android_for_e2e:
type: build
params:
platform: android
profile: e2e-test
maestro_test:
needs: [build_android_for_e2e]
type: maestro
params:
build_id: ${{ needs.build_android_for_e2e.outputs.build_id }}
flow_path:
- .maestro/home.yml
- .maestro/expand_test.ymlCrie .eas/workflows/e2e-test-ios.yml:
name: e2e-test-ios
on:
pull_request:
branches: ['*']
jobs:
build_ios_for_e2e:
type: build
params:
platform: ios
profile: e2e-test
maestro_test:
needs: [build_ios_for_e2e]
type: maestro
params:
build_id: ${{ needs.build_ios_for_e2e.outputs.build_id }}
flow_path:
- .maestro/home.yml
- .maestro/expand_test.yml# Android
npx eas-cli@latest workflow:run .eas/workflows/e2e-test-android.yml
# iOS
npx eas-cli@latest workflow:run .eas/workflows/e2e-test-ios.ymlCom o campo on.pull_request configurado, o workflow dispara automaticamente quando um PR é aberto ou atualizado.
PR aberto
↓
EAS Workflow inicia
↓
Job "build": gera APK/Simulator build via EAS Build
↓
Job "maestro_test": recebe o build_id e executa os flows Maestro
↓
Resultado aparece no PR e no painel da Expo
O EAS cuida de provisionar o emulador, instalar o app e rodar o Maestro — tudo gerenciado pela infraestrutura da Expo.
- Mantenha os flows do
.maestro/simples e focados em fluxos críticos - Use
assertVisiblecom regex (.*) para textos que podem variar - O perfil
e2e-testé separado do perfil de produção: não precisa de credenciais de assinatura - Combine com o
on.pull_requestpara garantir que nenhum PR quebre o app
Parabéns! Você concluiu o Maestro4Noobs! Volte ao README para revisar o conteúdo ou contribua com melhorias.