Teste funcional com Calabash


Obs: Esse ambiente foi configurado em Linux/Ubuntu. Uma configuração similar em Windows possivel realizando os devidos ajustes




Instalação do Calabash

1 - Instalar o Ruby

$ sudo apt-get install ruby-full

2 - Instalar o Android SDK

$ sudo apt update
 $ sudo apt install android-sdk android-sdk-platform23
 $ export ANDROID_HOME=/usr/lib/android-sdk
 $ gradle build --init-script /usr/share/android-sdk-helper/init.gradle

3 - No Android SDK Instalar os TODOS OS EXTRAS
- GPU Debugging tools
- Android Support repository
- Google USB Driver
- Google WEB Driver
… etc …

Ainda no Android SDK, instalar a seguinte dependência do SDK instalado:
- Google APIs ARM EABI vXY System Image
(Confirmar)

Verificar se a plataforma de ferramentas tem ADB (Android Debug Bridge) no SDK manager
- <pasta do sdk>/plataform-tools/adb
OBS: JAVA_HOME deve estar configurado no ambiente

4 - Instalar Calabash-android

$ gem install calabash-android
Não executar esse comando com sudo porque o teste não executará porque o keystore será diferente e haverá problema com as senhas

O comando GEM LIST exibe todas as bibliotecas Ruby instaladas. Execute e verifique se calabash-android (0.9.2) está instalado, se não estiver, instale com o comando abaixo.


iOS Apenas:

Download Xcode na app store
Instale requerimentos adicionais
Instale calabash cucumber ruby gem


Criando a automação


Comandos Calabash:

1 – Criar a estrutura do projeto

$ calabash-android gen

Gera a estrutura de pastas básicas do projeto. Deve ser executado em uma pasta separada do projeto Android/iOS

2 – Configure o calabash para o projeto

$ calabash-android setup

No passo onde vc vai configurar “calabash-android setup”, vai pedir o “keystore location”, tem que colocar o caminho inteiro. No meu caso ficou /home/wagner/.android/debug.keystore

3 – O que é reassinar (Re-sign) e por que?
Se você gerar ou construir (build) o apk na sua máquina então esse passo não é necessário porque por padrão o APK construído vai considerar o keystore do seu depurador Android

Se alguém gerar ou construir o apk em outra máquina então precisamos reassinar (resign) o apk com o keystore do seu depurador Android para executar os testes contra o apk

$ calabash-android resign <apk>

- Este comando reassinará o APK com o keystore presente na sua máquina para executar os casos de testes

4 – Construir o Apk server para instalar no emulador ou aparelho para realizar os testes

$ calabash-android build

O apk server será criado dentro da pasta test_servers. Instale esse apk server e o apk do aplicativo no emulador/aparelho


Somente para testes no emulador

5 – Configure a rede no emulador (ícone) para acessar a internet pela rede local:

Settings > Network & Internet > Mobile Network > Access Point Names > (clique no APN selecionado)

Proxy: 10.0.2.2
Port: 3128



No menu flutuante do emulador clique em “…” (MORE) > Settings > Proxy

Selecione “Manual proxy configuration”
Host name: 127.0.0.1
Port number: 3128


6 – Abra um emulador (AVD) ou deixe um aparelho conectado em modo de depuração e execute o comando abaixo:

$ calabash-android run <apk>



Comando úteis

- lista a configuração do ambiente para gem

$ gem environment

- Gera uma nova chave

$ keytool -genkey -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US"

- lista a chave atual

keytool -exportcert -alias androiddebugkey -keystore $HOME/.android/debug.keystore -list -v -storepass android

Se ocorrer erro ao exibir a chave, tente com o parâmetro “-J-Duser.language=en”

Se ao executar o teste e acontecer o mesmo erro, provavelmente a linguagem do sistema está diferente da usada para executar o teste. Basta ajustar a variável de ambiente do Linux

$ echo $LANG
$ export LANG=en_US.UTF-8

erro de keytool: java.util.IllegalFormatConversionException: d != java.lang.String

- Instala o apk em um device ou emulador

$ adb -s emulator-5554 install myapp.apk

- Executa um emulador

$ adb -avd Nexus_5X_API_26

Comentários