Skip to main content

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 Uso
  • Download APK Firebase
  • Upload Aplicativo para o devicefarm
  • Instalar Aplicativo em dispositivo reservado
  • Consultar Aplicativo Instalado
  • Garantir Aplicativo Instalado
  • Retorna 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)

Source distribution for devicefarm-app-manager-library 1.2.0
File Size Uploaded
devicefarm_app_manager_library-1.2.0.tar.gz 18.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for devicefarm-app-manager-library 1.2.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page