DeviceFarm App Manager Library
Biblioteca Robot Framework para reservar dispositivos, baixar aplicativos do Firebase, realizar upload e garantir a instalação no DeviceFarm.
Instalação
python -m pip install --upgrade devicefarm-app-manager-library
Import único
*** Settings ***
Library devicefarm_app_manager_library
O import unificado disponibiliza, entre outras, as seguintes keywords:
Seleciona Dispositivo Pronto Para UsoDownload APK FirebaseUpload Aplicativo para o devicefarmInstalar Aplicativo em dispositivo reservadoConsultar Aplicativo InstaladoGarantir Aplicativo InstaladoRetorna counter do aplicativo no devicefarm
Exemplo
*** Settings ***
Library devicefarm_app_manager_library
*** Variables ***
@{APP_VERSAO} 1.8.4 201 ANDROID
${PACKAGE} br.gov.caixa.fies
*** Test Cases ***
Reservar e instalar
${device_id}= Seleciona Dispositivo Pronto Para Uso
... platform=ANDROID
... preferred_devices=${DEVICES}
${resultado}= Garantir Aplicativo Instalado
... device_id=${device_id}
... app_identifier=${PACKAGE}
... version=${APP_VERSAO}[0]
... build=${APP_VERSAO}[1]
... platform=${APP_VERSAO}[2]
Configuração
Defina ENV_FILE com o caminho do .env do projeto consumidor ou disponibilize
as variáveis diretamente no ambiente:
DEVICEFARM_BASE_URL=https://seu-devicefarm/rest
DEVICEFARM_TENANT_ID=tenant-id
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
DEVICEFARM_UPLOAD_CACHE_FILE=./resources/apks/cache/upload_cache.json
FIREBASE_TYPE=service_account
FIREBASE_PROJECT_ID=<PROJECT_ID>
FIREBASE_PRIVATE_KEY_ID=<PRIVATE_KEY_ID>
FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n<PRIVATE_KEY>\n-----END PRIVATE KEY-----\n"
FIREBASE_CLIENT_EMAIL=<CLIENT_EMAIL>
FIREBASE_CLIENT_ID=<CLIENT_ID>
FIREBASE_AUTH_URI=https://accounts.google.com/o/oauth2/auth
FIREBASE_TOKEN_URI=https://oauth2.googleapis.com/token
FIREBASE_AUTH_PROVIDER_X509_CERT_URL=https://www.googleapis.com/oauth2/v1/certs
FIREBASE_CLIENT_X509_CERT_URL=<CLIENT_X509_CERT_URL>
FIREBASE_UNIVERSE_DOMAIN=googleapis.com
FIREBASE_PROJECT_NUMBER=project-number
FIREBASE_APP_ID=app-id
DEVICEFARM_REQUEST_TIMEOUT=30
DEVICEFARM_UPLOAD_TIMEOUT=300
LOG_DIR=output
A partir da versão 1.2.0, copie os campos do firebase-automation.json para
as variáveis FIREBASE_ correspondentes no .env (por exemplo, client_email
para FIREBASE_CLIENT_EMAIL). FIREBASE_SERVICE_ACCOUNT_FILE não é mais usado
para autenticação. A biblioteca monta as credenciais em memória.
FIREBASE_CLIENT_EMAIL e FIREBASE_PRIVATE_KEY são obrigatórios. Os endpoints,
type e universe_domain têm os padrões mostrados acima; os demais metadados da
conta são opcionais. FIREBASE_PROJECT_NUMBER e FIREBASE_APP_ID continuam
obrigatórios para consultar as releases; o número do projeto não é o project_id.
Use aspas duplas na chave privada com \n entre as linhas, ou uma chave com
quebras de linha reais. Não versione o .env. Variáveis já definidas no ambiente
têm precedência sobre o arquivo indicado por ENV_FILE.
DEVICEFARM_REQUEST_TIMEOUT controla as chamadas comuns à API. O upload do
APK usa DEVICEFARM_UPLOAD_TIMEOUT separadamente e aceita valores maiores para
redes lentas ou arquivos grandes. Os valores são expressos em segundos.
Também é possível sobrescrever o valor em uma chamada específica:
Garantir Aplicativo Instalado
... device_id=${device_id}
... app_identifier=${PACKAGE}
... version=1.8.4
... build=201
... platform=ANDROID
... upload_timeout=900
Os nomes antigos oauthClientId e oauthClientSecret ainda são aceitos na
versão 1.2.0, mas estão depreciados.
Estrutura interna
devicefarm_app_manager_library.py: fachada pública do Robot Framework.device_farm_library.py: seleção e reserva de dispositivos.upload_app_library.py: consulta, upload e instalação de aplicativos.config.py: leitura e validação centralizada das configurações.client.py: autenticação e sessão HTTP compartilhada.*_service.py: operações HTTP específicas.exceptions.py: erros de domínio apresentados ao consumidor.
Os módulos antigos permanecem disponíveis como adaptadores de compatibilidade, mas não devem ser utilizados por projetos novos.
Compatibilidade
Os imports antigos continuam disponíveis durante a migração:
Library device_farm_library
Library upload_app_library
Library devicefarm_app_manager
Novos projetos devem utilizar apenas devicefarm_app_manager_library.
Desenvolvimento
python -m pip install -e .
python -m pytest -q
python -m build
python -m twine check dist/*
A publicação no PyPI é executada pelo workflow de release quando uma tag
v* é enviada ao GitHub. O workflow valida se a tag corresponde à versão do
pyproject.toml antes da publicação.
Metadata
Release files for devicefarm-app-manager-library 1.2.0
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.2.0.tar.gz | 18.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| devicefarm_app_manager_library-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 39.4 kB
Release files / devicefarm_app_manager_library-1.2.0.tar.gz
| Download URL | devicefarm_app_manager_library-1.2.0.tar.gz |
|---|---|
| Size | 18.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
85b5b3212673f1c9156b9efc8dba984175a40a849c3f1c963551197a627c62a9
|
|
BLAKE2b-256 checksum How to use checksums |
00c732ca687dd85877e67dd7a419edb113e7516bc4f145c023edb9feeb8ced79
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / devicefarm_app_manager_library-1.2.0-py3-none-any.whl
| Download URL | devicefarm_app_manager_library-1.2.0-py3-none-any.whl |
|---|---|
| Size | 20.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
91b203a886a0b44a6f76541c27a45f00f9f13e117130ef801321a9f5804cef1a
|
|
BLAKE2b-256 checksum How to use checksums |
9abe707693bb4d2bf26a126bed5b7f0f4a69128bce754d374eb2cc64a142a1ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|