Essa habilidade ajuda a traduzir configurações e fluxos de trabalho de execução de testes legados
(do Flank ou gcloud firebase test) para a superfície moderna da CLI gcloud
beta device-run orientada a recursos.
Mapeamento de estrutura de comando e recurso
A CLI Device Run organiza os comandos por recurso: devices, software-versions e sessions:
1. Catálogo de dispositivos (devices)
- Listar dispositivos:
- Legado:
gcloud firebase test android/ios models list - Novo:
gcloud beta device-run devices list [--filter="..."] - Exemplo:
gcloud beta device-run devices list --filter="platform:android"
- Legado:
- Descrever dispositivo:
- Legado:
gcloud firebase test android/ios models describe {MODEL} - Novo:
gcloud beta device-run devices describe {DEVICE} - Exemplo:
gcloud beta device-run devices describe redfin-30
- Legado:
- Verificar capacidades do dispositivo e disponibilidade da frota:
- Legado:
gcloud firebase test android/ios list-device-capacities - Novo: incorporado diretamente no recurso "Dispositivo" (
availability.capacityeavailability.available). Inspecione usandogcloud beta device-run devices describe {DEVICE}ou filtre diretamente comgcloud beta device-run devices list --filter="availability.capacity=CAPACITY_HIGH".
- Legado:
2. Versões de software (software-versions)
- Listar versões de software compatíveis (Xcode e Android Test Orchestrator):
- Legado:
gcloud firebase test ios xcode-versions list - Novo:
gcloud beta device-run software-versions list
- Legado:
- Descrever a versão do software:
- Novo:
gcloud beta device-run software-versions describe {SOFTWARE_VERSION} - Exemplo:
gcloud beta device-run software-versions describe xcode-16-4
- Novo:
3. Sessões de automação (sessions)
- Enviar instrumentação do Android:
- Legado:
gcloud firebase test android run --type=instrumentation ... - Novo:
gcloud beta device-run sessions submit instrumentation ...
- Legado:
- Enviar XCTest do iOS:
- Legado:
gcloud firebase test ios run --type=xctest ... - Novo:
gcloud beta device-run sessions submit xctest ...
- Legado:
- Aguardar a conclusão da sessão:
- Legado: bloqueio síncrono da CLI apenas
- Novo:
gcloud beta device-run sessions wait {SESSION}
- Descrever / inspecionar sessão:
- Legado: ver o link da Web no console do Firebase / resultados da ferramenta do Cloud
- Novo:
gcloud beta device-run sessions describe {SESSION} [--full]
- Listar sessões anteriores:
- Legado: ver o histórico da matriz no console da Web
- Novo:
gcloud beta device-run sessions list
- Cancelar sessão:
- Legado: somente console da Web (sem comando da CLI)
- Novo:
gcloud beta device-run sessions cancel {SESSION}
Tabela de referência de mapeamento de flags
A tabela a seguir mapeia parâmetros do Firebase Test Lab e do Flank legados para
os equivalentes compatíveis em gcloud beta device-run:
| Tipo de teste | Grupo de atributos | Parâmetro legado (firebase/Flank) | Parâmetro de meta (device-run)
|
Formato / lógica de conversão |
|---|---|---|---|---|
| Comum (Android e iOS) | Parâmetros e recursos principais | Flanco --project
|
--project
|
Flag global padrão Google Cloud (--project=PROJECT_ID) ou configuração ativa da Google Cloud CLI. |
| Comum (Android e iOS) | Parâmetros e recursos principais | --client-details
|
--labels
|
Dicionário de pares chave=valor. |
| Comum (Android e iOS) | Configuração e segmentação por dispositivo | --device
model={M},version={V}
|
--device={M}-{V}
|
Mapeia o modelo e a versão do SO para a string de ID --device. Aceita uma lista separada por vírgulas de vários dispositivos em uma única flag (por exemplo,
--device=mediumphone-arm-32,shiba-36). |
| Comum (Android e iOS) | Controle de execução e instabilidade | --async
|
--async
|
Maps 1:1. O comando permanece síncrono por
padrão. Transmita isso para retornar
imediatamente. Monitore ou aguarde com
gcloud beta device-run sessions wait
<SESSION_ID>. |
| Comum (Android e iOS) | Controle de execução e instabilidade | --num-flaky-test-attempts
{R}
|
--flaky-test-attempts {A}
|
Número inteiro. Converta a contagem de novas tentativas $R$ no limite total de tentativas: $A = R + 1$ (o padrão é 1). |
| Comum (Android e iOS) | Controle de execução e instabilidade | N/A | --flaky-test-parallel-retry
|
Boolean. Se as falhas de teste serão repetidas em paralelo (o padrão é sequencial). |
| Comum (Android e iOS) | Controle de execução e instabilidade | N/A | --flaky-test-retry-level
|
String. Nível de nova tentativa: shard ou
test (o padrão é shard).
|
| Comum (Android e iOS) | Saída e armazenamento | --results-bucket
|
--bucket-name
|
Bucket em que os artefatos de saída do teste são enviados por upload (o padrão é gs://[PROJECT_ID]-devicerun). |
| Comum (Android e iOS) | Saída e armazenamento | --results-dir
|
Gerenciada automaticamente | Não é possível definir subdiretórios personalizados. Todos os artefatos de teste são organizados automaticamente em automation/sessions/{session_id}/ no bucket especificado por --bucket-name. |
| Comum (Android e iOS) | Saída e armazenamento | --record-video
|
--video
|
Valores válidos: always ou on-failure.
|
| Comum (Android e iOS) | Saída e armazenamento | --directories-to-pull
|
--paths-to-pull
|
Lista de caminhos a serem extraídos do dispositivo após a execução. |
| Android comum | Parâmetros e recursos principais | --app
|
--apps
|
Lista. Se vários APKs/AABs de aplicativos forem fornecidos, transmita todos eles para --apps. |
| Android comum | Parâmetros e recursos principais | --additional-apks
|
--apps
|
Lista. Mesclar outros valores de lista diretamente na lista principal --apps.
|
| Android comum | Parâmetros e recursos principais | --obb-files
|
--other-files-to-push
|
Dicionário no formato SOURCE=DEST.
Envie arquivos OBB diretamente para o caminho do dispositivo
(/sdcard/Android/obb/{package_name}/). |
| Android comum | Parâmetros e recursos principais | --other-files
|
--other-files-to-push
|
Dicionário no formato SOURCE=DEST.
|
| Android comum | Configuração e segmentação por dispositivo | --device locale={L}
|
--locale={L}
|
Mapeia a localidade do dispositivo para a flag de nível superior
--locale (language-region, por exemplo,
--locale=en-US. |
| Android comum | Configuração e segmentação por dispositivo | --device orientation={O}
|
--orientation={O}
|
Mapeia a orientação do dispositivo para a flag de nível superior
--orientation (portrait ou
landscape). |
| Android comum | Configuração e segmentação por dispositivo | N/A | --coordinates
|
Coordenadas de local fictício
(latitude,longitude, por exemplo,
37.4220,-122.0841). |
| Android comum | Controle de execução e instabilidade | --grant-permissions
|
Padrão automatizado | Automatizada. As permissões de ambiente de execução são
concedidas automaticamente por padrão
(equivalente a --grant-permissions=all).| |
| Android comum | Saída e armazenamento | N/A | --dumpsys
|
Coletar dumpsys do dispositivo (always ou
on-failure). |
| Android comum | Saída e armazenamento | N/A | --bugreport
|
Colete um relatório do bug do dispositivo (always
ou on-failure). |
| Android Instrumentation | Parâmetros e recursos principais | --type=instrumentation
|
sessions submit instrumentation
|
A estrutura do subcomando determina o tipo de teste em vez de uma flag --type.
|
| Android Instrumentation | Parâmetros e recursos principais | --test
|
--test
|
Caminho para o arquivo binário que contém testes de instrumentação. |
| Android Instrumentation | Controle de execução e instabilidade | --timeout
|
--instrumentation-timeout
|
Duração (por exemplo, 10m, 20s, 1h). Intervalo válido: 1m a 3h (padrão: 5m). |
| Android Instrumentation | Controle de execução e instabilidade | --num-uniform-shards {N}
|
--sharding-option=uniform--uniform-sharding-count={N}
|
A configuração de flag ativa a estratégia de fragmentação uniforme (intervalo de contagem válido: 1 a 20 físicos, 1 a 200 virtuais). |
| Android Instrumentation | Controle de execução e instabilidade | Flanco --shard-time {S}
|
--sharding-option=smart--smart-sharding-target-duration={S}
|
Ativa o sharding inteligente com o tempo de execução de destino (por exemplo, 2m, 10m, 1h). Intervalo válido: 2m a 1h. |
| Android Instrumentation | Controle de execução e instabilidade | Flanco
--smart-flank-gcs-path
|
--smart-sharding-record-name={name}--bucket-name={bucket}
|
Nome do YAML de registro de fragmentação (exclua a extensão) em --bucket-name em automation/smart-sharding/. |
| Android Instrumentation | Controle de execução e instabilidade | Flanco --max-test-shards
{N}
|
--smart-sharding-max-shard-count={N}
|
Mapeia para um limite máximo de fragmento quando o fragmentação inteligente está ativada (0 a 20 físicos, 0 a 200 virtuais). |
| Android Instrumentation | Executador de testes e destinos | --test-runner-class
|
--test-runner-class
|
Classe de executor totalmente qualificada. |
| Android Instrumentation | Executador de testes e destinos | --test-targets
|
--test-targets
|
Dicionário com suporte a chaves como
package, notPackage, class,
notClass, annotation,
notAnnotation e size. Formatos como testfile ou notTestfile não serão aceitos. |
| Android Instrumentation | Executador de testes e destinos | --use-orchestrator
|
--orchestrator-version
|
Usa auto (orquestrador padrão) ou
uma string de versão específica (por exemplo, 1.6). |
| Android Instrumentation | Executador de testes e destinos | --environment-variables
|
--additional-test-options
|
Dicionário de opções transmitidas para o
executor de testes. Não é permitido usar formatos compatíveis com --test-targets. |
| iOS comum | Parâmetros e recursos principais | --additional-ipas
|
--additional-apps
|
Lista de arquivos .ipa a serem instalados no dispositivo antes da execução do teste.
|
| iOS comum | Parâmetros e recursos principais | --other-files
|
--other-files-to-push
|
Dicionário no formato SOURCE=BUNDLE_ID:DEVICE_PATH.
|
| iOS comum | Saída e armazenamento | --directories-to-pull
|
--paths-to-pull
|
Lista de arquivos ou diretórios a serem extraídos
após o teste no formato
BUNDLE_ID:DEVICE_PATH. |
| Somente XCTest do iOS | Parâmetros e recursos principais | --type=xctest
|
sessions submit xctest
|
A estrutura do subcomando determina o tipo de teste em vez de uma flag --type.
|
| Somente XCTest do iOS | Parâmetros e recursos principais | --test
|
--test
|
O caminho para o arquivo ZIP que contém o app iOS e os arquivos XCTest. |
| Somente XCTest do iOS | Controle de execução e instabilidade | --timeout
|
--xctest-timeout
|
Duração máxima permitida para a execução do XCTest (intervalo válido: 1m a 1h, padrão: 5m). |
| Somente XCTest do iOS | Executador de testes e destinos | --xctestrun-file
|
--xctestrun-file
|
O caminho para o arquivo .xctestrun personalizado. |
| Somente XCTest do iOS | Executador de testes e destinos | --xcode-version
|
--xcode-version
|
ID do catálogo ou string de versão do Xcode a ser usada (por exemplo, xcode-16-4 ou 16.4). Consulte usando software-versions list. |
Orientações práticas de tradução
Siga estas diretrizes para traduzir as configurações do Firebase Test Lab e do Flank para execução no dispositivo:
1. Especificações do dispositivo
Em gcloud beta device-run, --device aceita uma lista separada por vírgulas de strings de ID do modelo e da versão. Ao contrário do Firebase, que exigia uma flag --device por
dispositivo, a execução no dispositivo permite especificar vários dispositivos em uma flag. A localidade, a orientação e as coordenadas simuladas do dispositivo são especificadas usando flags de nível superior separadas:
- ❌
--device model=MediumPhone.arm,version=32,locale=en,orientation=portrait - ✅
--device=mediumphone-arm-32 --locale=en-US --orientation=portrait
2. Dicionários e listas
Converta flags separadas por vírgulas em listas (--apps, --paths-to-pull) ou
dicionários de chave-valor (--other-files-to-push, --additional-test-options):
- ❌
--other-files /sdcard/file1.txt=local/file1.txt,/sdcard/file2.txt=local/file2.txt - ✅
--other-files-to-push local/file1.txt=/sdcard/file1.txt,local/file2.txt=/sdcard/file2.txt
3. Estratégias de fragmentação
- Fragmentação uniforme:
- Defina
--sharding-option=uniform. - Defina
--uniform-sharding-count={count}(1 a 20 para físico, 1 a 200 para virtual).
- Defina
- Fragmentação inteligente:
- Defina
--sharding-option=smart. - Defina
--smart-sharding-target-duration={duration}(por exemplo,2m,10m,1h; intervalo válido:2ma1h). - Defina
--smart-sharding-record-name={record_name}(aponta para o registro de rastreamento YAML em--bucket-nameemautomation/smart-sharding/). - Defina
--smart-sharding-max-shard-count={max_count}(limite máximo opcional: 0 a 20 para físico, 0 a 200 para virtual).
- Defina
4. Execução assíncrona
- Assíncrono e aguardando: quando
--asyncé especificado, a CLI retorna imediatamente com o ID da sessão criada. É possível aguardar a conclusão da sessão em fluxos de trabalho de CI/CD usando:gcloud beta device-run sessions wait <SESSION_ID>
5. Configuração declarativa do YAML (--flags-file)
Para configurações complexas ou equipes que preferem manter arquivos
com controle de versões em vez de comandos longos do terminal, o gcloud oferece um pré-processador de argumentos
--flags-file universal (consulte $ gcloud topic flags-file):
gcloud beta device-run sessions submit instrumentation --flags-file=device-run-flags.yaml
!NOTE Por que as chaves exigem
--:gcloudinjeta chaves YAML diretamente no analisador da CLI como flags de linha de comando. Todas as chaves no arquivo YAML precisam ter o prefixo--(por exemplo,--device:,--apps:). Sem--,gcloudos rejeita como argumentos posicionais não reconhecidos.
Confira um exemplo que demonstra flags de lista e dicionário com vários valores:
# device-run-flags.yaml
--device:
- mediumphone-arm-32
- shiba-36
--apps:
- app-debug.apk
- test-helper.apk
--test: app-debug-androidTest.apk
--bucket-name: my-bucket
--sharding-option: smart
--smart-sharding-target-duration: 2m
--smart-sharding-record-name: timing-record
--paths-to-pull:
- /sdcard/screenshots
- /sdcard/coverage.ec
--additional-test-options:
coverage: "true"
clearPackageData: "true"
Exemplos de tradução
Use estes exemplos para traduzir suas configurações atuais do Firebase Test Lab e do Flank para execução no dispositivo.
Do Firebase Test Lab para a execução no dispositivo
firebase cmd:
gcloud firebase test android run \
--app=app-debug.apk \
--test=app-debug-androidTest.apk \
--device model=shiba,version=36 \
--timeout=5m \
--num-flaky-test-attempts=2 \
--directories-to-pull=/sdcard/screenshots \
--environment-variables coverage=true
É traduzido como:
gcloud beta device-run sessions submit instrumentation \
--device=shiba-36 \
--apps=app-debug.apk \
--test=app-debug-androidTest.apk \
--instrumentation-timeout=5m \
--flaky-test-attempts=3 \
--paths-to-pull=/sdcard/screenshots \
--additional-test-options coverage=true
Configurações de flank para execução no dispositivo
flank options (flank.yml):
gcloud:
app: app-debug.apk
test: app-debug-androidTest.apk
device:
- model: mediumphone-arm
version: 32
shard-time: 120
smart-flank-gcs-path: gs://my-bucket/automation/smart-sharding/timing-record.yaml
Isso significa:
Opção 1: invocação direta da CLI (recomendado)
Traduza diretamente para o comando da CLI moderna:
gcloud beta device-run sessions submit instrumentation \
--device=mediumphone-arm-32 \
--apps=app-debug.apk \
--test=app-debug-androidTest.apk \
--bucket-name=my-bucket \
--sharding-option=smart \
--smart-sharding-target-duration=2m \
--smart-sharding-record-name=timing-record
Opção 2: arquivo de flags YAML declarativo (--flags-file)
Se você preferir manter as configurações em um arquivo YAML com controle de versões
em vez de strings de script de shell, use o recurso --flags-file
integrado do gcloud:
# device-run-flags.yaml
# Note: gcloud requires keys to start with '--'
--device:
- mediumphone-arm-32
--apps:
- app-debug.apk
--test: app-debug-androidTest.apk
--bucket-name: my-bucket
--sharding-option: smart
--smart-sharding-target-duration: 2m
--smart-sharding-record-name: timing-record
Enviar com a CLI:
gcloud beta device-run sessions submit instrumentation --flags-file=device-run-flags.yaml
Também é possível anexar ou substituir flags na linha de comando, como adicionar
--async.
Descoberta do catálogo de dispositivos
listing & inspecting devices:
# List all available Android devices
gcloud beta device-run devices list --filter="platform:android"
# Filter devices with high fleet capacity (replaces legacy list-device-capacities)
gcloud beta device-run devices list --filter="availability.capacity=CAPACITY_HIGH"
# Describe a specific device (OS versions, form factors, orientation, locales, capacity)
gcloud beta device-run devices describe redfin-30
Ciclo de vida da sessão de ponta a ponta em CI/CD
submitting, waiting, and inspecting sessions:
# 1. Submit asynchronously and capture session ID
SESSION_ID=$(gcloud beta device-run sessions submit instrumentation \
--apps=app-debug.apk \
--test=app-debug-androidTest.apk \
--device=mediumphone-arm-32 \
--async \
--format="value(name)")
# 2. Wait for session completion in CI/CD pipeline
gcloud beta device-run sessions wait "$SESSION_ID"
# 3. Describe session summary (or pass --full for complete details)
gcloud beta device-run sessions describe "$SESSION_ID"
# 4. Cancel a running session if aborted
gcloud beta device-run sessions cancel "$SESSION_ID"