📱 DeviceFarm Robot Libraries
Biblioteca desenvolvida para simplificar a integração entre projetos Robot Framework e a plataforma DeviceFarm.
O objetivo da biblioteca é abstrair a comunicação com a API do DeviceFarm, permitindo que os testes automatizados realizem operações de gerenciamento de dispositivos e aplicativos sem que o usuário precise implementar chamadas REST, autenticação ou tratamento de erros manualmente.
🚀 O que a biblioteca faz
A biblioteca disponibiliza recursos para:
- 📱 Reservar dispositivos automaticamente para execução de testes.
- 🔄 Selecionar dispositivos disponíveis de forma inteligente.
- 🚫 Tratar conflitos de reserva de workspace.
- 📦 Realizar upload de aplicativos para o DeviceFarm.
- 📲 Instalar aplicações nos dispositivos reservados.
- 🔐 Gerenciar autenticação com a API do DeviceFarm através de variáveis de ambiente.
- 📋 Centralizar logs e informações de execução para troubleshooting.
- ⚙️ Facilitar a reutilização da integração entre múltiplos projetos Robot Framework.
🎯 Benefícios
Utilizando esta biblioteca, os times de automação podem:
- Reduzir a complexidade de integração com o DeviceFarm.
- Padronizar a utilização da plataforma entre diferentes projetos.
- Evitar duplicação de código de autenticação e chamadas de API.
- Aumentar a confiabilidade do processo de reserva e instalação de aplicativos.
- Centralizar a manutenção da integração em uma única biblioteca compartilhada
🚀 Funcionalidades
✅ DeviceFarmLibrary
- Seleção inteligente de dispositivos
- Reserva automática
- Fallback em caso de indisponibilidade
- Tratamento de conflito de workspace
- Logs estruturados
✅ UploadAppLibrary
- Upload de APK para o DeviceFarm
- Leitura automática de metadados
- Instalação do aplicativo em dispositivos reservados
- Controle de estado via install_state.json
- Tratamento de erros de upload
📥 Instalação
1. Clonar a biblioteca
Clone o projeto na pasta:
C:\Desenvolvimento\SIAFS-devicefarm-library
🏗️ Arquitetura
A biblioteca foi projetada para ser utilizada como dependência compartilhada entre projetos Robot Framework.
Cada projeto consumidor possui seu próprio arquivo .env, contendo as credenciais e configurações necessárias para acesso ao DeviceFarm, enquanto a lógica de integração permanece centralizada nesta biblioteca.
DeviceFarmLibrary/
│
├── DeviceFarmLibrary.py # Reserva de dispositivos
├── UploadAppLibrary.py # Upload e instalação de apps
├── apks/ # Pasta de aplicativos
└── install_state.json # Controle de estado de instalação
Recomenda-se manter a biblioteca exatamente nesse local para padronizar a configuração entre os projetos.
2. Configurar o VS Code
Abra o projeto consumidor normalmente no VS Code.
Localizando o arquivo settings.json
Pressione:
CTRL + P
Digite:
settings.json
E abra o arquivo de configurações do Workspace.
Caso sua equipe utilize Profiles do VS Code, as mesmas configurações também podem ser adicionadas ao Profile utilizado para automação Robot Framework.
3. Adicionar a biblioteca ao Python Path
No settings.json, adicione:
{
"robotcode.robot.pythonPath": [
"C://PythonPath//venv//Scripts//python.exe",
"C://PastaDesenvolvimento//devicefarm-library"
]
}
Exemplo
{
"robotcode.robot.pythonPath": [
"C://PythonPath//venv//Scripts//python.exe",
"C://PastaDesenvolvimento//devicefarm-library"
]
}
4. Configurar o arquivo .env
Ainda no settings.json, adicione:
{
"robotcode.robot.env": {
"ENV_FILE": "${workspaceFolder}/.env"
}
}
Essa configuração informa à biblioteca onde está localizado o arquivo .env do projeto consumidor.
⚙️ Criando o arquivo .env
Crie um arquivo .env na raiz do projeto.
Exemplo:
DEVICEFARM_BASE_URL=https://seu-devicefarm/rest
DEVICEFARM_TENANT_ID=999999999
DEVICEFARM_WORKSPACE_ID=workspace-id
DEVICEFARM_CLIENT_ID=client-id
DEVICEFARM_CLIENT_SECRET=client-secret
DEVICEFARM_APP_FOLDER=./resources/apks
DEVICEFARM_STATE_FILE=./resources/apks/install_state.json
✅ Variáveis obrigatórias
- DEVICEFARM_BASE_URL
- DEVICEFARM_TENANT_ID
- DEVICEFARM_WORKSPACE_ID
- DEVICEFARM_CLIENT_ID
- DEVICEFARM_CLIENT_SECRET
📦 Dependências
pip install requests
pip install loguru
pip install robotframework
pip install androguard
pip install python-dotenv
🤖 Utilização com Robot Framework
### 🔹 Exemplo de uso
*** Configurações ***
Library device_farm_library
Library devicefarm_app_manager
Suite Setup Run Keywords Reservar dispositivo
... AND Instalar Aplicativo
*** Variáveis ***
${DEVICES} ABCD 1234 ABCD1234
@{APP_VERSAO} 1.8.3 185 ANDROID
*** Keywords ***
Reservar dispositivo
Log To Console \nReservando dispositivo da lista ${DEVICES}
${UDID} Seleciona Dispositivo Pronto Para Uso ANDROID ${DEVICES}
Instalar Aplicativo
Garantir Aplicativo Instalado
... device_id=${UDID}
... app_identifier=${PACKAGE}
... version=${APP_VERSAO}[0]
... build=${APP_VERSAO}[1]
... platform=${APP_VERSAO}[2]
🧾 Logs
- Logs padrão via
logging - Logs detalhados adicionais via
loguru - Logs incluem:
- Reservas
- Uploads
- Erros
- Conflitos
⚠️ Tratamento de Erros
Tipos de exceções:
WorkspaceConflictUploadError
🔄 Controle de Estado
O arquivo install_state.json armazena:
- Última versão instalada
- Evita reinstalação desnecessária
- Mantém consistência entre sessões
🛠️ Boas Práticas
✅ Utilizar um .env por projeto
✅ Não versionar credenciais
✅ Utilizar logs para troubleshooting
✅ Separar APKs por ambiente
👨💻 Autores
Caio Torres Rocha https://linkedin.com/in/kcaioqa/
Paulo Rogério Moreira Rocha https://linkedin.com/in/prmoreirarocha/
📅 Versão
1.1 — Julho/2026
TODO
Melhorias que temos que implementar antes da integração.
- Caso o dispositivo tenha uma agendamento futuro ele apresenta erro na tentativa de agendamento. DONE - Usar o install_state para facilitar o reuso de sessão Melhorar arquitetura do projeto Implementar logs para facilitar debug, como foi feito no projeto de automação de massas.
Passo a passo para execução.
PASSO 1 - Verificar o install_state. Dispositivo e Versão/build estão de acordo com a reserva feita e com a Versão/build informada no script? SIM: Segue a automação NÃO: Segue para PASSO 2
PASSO 2 - O Script menciona Versão/build especifica para ser testada? SIM: Segue para PASSO 3 NÃO: Segue para PASSO 7 PASSO 3 - Versão/build aparece no cashe de apk enviado para o devicefarm? SIM: Segue para PASSO 4 NÃO: Segue para PASSO 5
PASSO 4 - O apk esta instalado é o que esta descrito no Script? SIM: Segue a automação NÃO: Instala o apk no dispositivo e Segue a automação
PASSO 5 - O APK está na pasta local para upload? SIM: Realiza o upload e volta para a PASSO 4 NÃO: Segue para PASSO 6 PASSO 6 - A Versão/build informada existe no firebase? SIM: Realiza o download e volta para a PASSO 5 NÃO: Lançar exceção informando que Versão/build não existe e que seja corrigido o número PASSO 7 - O dispositivo já possui alguma Versão/build instalada? SIM: Segue a automação NÃO: Segue para PASSO 8 PASSO 8 - O dispositivo não possui Versão/build instalada? SIM: Instala a ultima versão disponivel no devicefarm NÃO: Lança exceção solicitando instalação no dispositivo ou a Versão/build para o teste.
Metadata
Release files for devicefarm-app-manager-library 1.0.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| devicefarm_app_manager_library-1.0.7.tar.gz | 19.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| devicefarm_app_manager_library-1.0.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 39.7 kB
Release files / devicefarm_app_manager_library-1.0.7.tar.gz
| Download URL | devicefarm_app_manager_library-1.0.7.tar.gz |
|---|---|
| Size | 19.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a0fe913cff8bb3ac4cb97fd38b0fdf80b88d0bee2214e8ac94e0318ce76c5799
|
|
BLAKE2b-256 checksum How to use checksums |
bd9be7055af1c515a748f1de6fcf8ebdefd8849bc26eca7458b8bf178a3452d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.1
|
Release files / devicefarm_app_manager_library-1.0.7-py3-none-any.whl
| Download URL | devicefarm_app_manager_library-1.0.7-py3-none-any.whl |
|---|---|
| Size | 20.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
764ff6a719926b51d5338756b3327106c748a0c49af9a2d6170b4291fa9812e8
|
|
BLAKE2b-256 checksum How to use checksums |
acf672354b2829b93908977c8170dcde9fedebfb79e02bd30c3bba3f229a9439
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.1
|