Executar testes em paralelo em múltiplos dispositivos reduz drasticamente o tempo total da suíte.
# Android
adb devices
# iOS (simuladores)
xcrun simctl list devices# Por ID do dispositivo Android
maestro --device emulator-5554 test flows/
# Por UDID do simulador iOS
maestro --device "iPhone 15 Pro (17.2)" test flows/O Maestro não possui paralelismo nativo via CLI, mas você pode usar scripts para rodar em paralelo:
#!/bin/bash
# run-parallel.sh
# Divide os flows em grupos
FLOWS_1=(flows/autenticacao/login-sucesso.yaml flows/autenticacao/logout.yaml)
FLOWS_2=(flows/produtos/listar-produtos.yaml flows/produtos/buscar-produto.yaml)
# Executa em paralelo em dispositivos diferentes
maestro --device emulator-5554 test ${FLOWS_1[@]} &
maestro --device emulator-5556 test ${FLOWS_2[@]} &
# Aguarda todos terminarem
wait
echo "Todos os testes concluídos!"# .github/workflows/testes.yml
jobs:
test:
strategy:
matrix:
grupo: [autenticacao, produtos, checkout]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Executar testes - ${{ matrix.grupo }}
run: maestro test flows/${{ matrix.grupo }}/# Criar AVDs com nomes diferentes
avdmanager create avd -n "Pixel6_API34_1" -k "system-images;android-34;google_apis;x86_64"
avdmanager create avd -n "Pixel6_API34_2" -k "system-images;android-34;google_apis;x86_64"
# Iniciar em portas diferentes
emulator -avd Pixel6_API34_1 -port 5554 &
emulator -avd Pixel6_API34_2 -port 5556 &- Testes paralelos exigem independência total — cada teste deve criar e limpar seus próprios dados
- Use
clearState: truepara garantir estado limpo - Prefira criar dados via API em vez de usar dados compartilhados
Ir para: CI/CD