Como iniciar e parar a projeção automotiva em testes do Appium

Controle quando seu teste entra e sai do modo automotivo — sem precisar recomeçar.

Testar um aplicativo automotivo não se resume apenas a testar a tela projetada. Trata-se de testar a experiência completa. 

Quando um aplicativo móvel é testado por meio de sua interface projetada no carro, algo estruturalmente diferente acontece em comparação com os testes móveis padrão. O dispositivo entra em um estado de projeção — uma conexão persistente com uma unidade principal virtual que, essencialmente, transfere o controle da tela para o sistema de exibição do carro.

Isso cria um problema de teste que não existe na automação móvel padrão. 

A maioria dos aplicativos automotivos exige que o usuário já esteja conectado, que o aplicativo esteja em um estado conhecido ou que condições específicas de dados estejam em vigor antes do início da projeção. Mas se o dispositivo entrar no modo de projeção no início da sessão, não há janela para fazer essa configuração primeiro. 

E quando um teste termina com o dispositivo ainda no modo de projeção — o que acontece com frequência em ambientes automatizados — o próximo teste herda esse estado.  

As soluções alternativas que as equipes têm usado não são escaláveis ​​em CI/CD. Elas introduzem etapas manuais, comportamento inconsistente e uma infraestrutura de teste mais difícil de manter. 

O que realmente precisa mudar? 

O requisito fundamental é simples: as equipes precisam controlar quando a projeção começa e termina durante uma sessão de teste — e não apenas se ela está ligada ou desligada durante toda a sessão. 

Isso desbloqueia duas coisas: 

Condições prévias à projeção.  Execute a redefinição do aplicativo, o login e a configuração de dados no contexto normal do dispositivo. Em seguida, inicie a projeção quando o aplicativo estiver no estado correto. 

Limpar o estado do dispositivo após a projeção.  Interrompa explicitamente a projeção ao final do teste, para que o próximo teste — em qualquer dispositivo do conjunto — comece a partir de uma linha de base previsível. 

Esses não são requisitos avançados. São as mesmas premissas que todo pipeline de CI/CD faz para qualquer outro tipo de teste. O problema é que as ferramentas de projeção automotiva não as suportavam. 

Como resultado, estamos agora introduzindo dois comandos compatíveis com Appium — automotive.start e automotive.stop — que oferecem às equipes controle programático sobre o estado de projeção do Android Auto e do iOS CarPlay a qualquer momento durante uma sessão de teste em execução. 

O que os comandos fazem 

Os comandos `automotive.start` e `automotive.stop` são chamados diretamente no seu script de teste Appium. `automotive.start` ativa a projeção na tela do carro conectada, enquanto `automotive.stop` encerra o estado de projeção, retornando a sessão ao contexto padrão do dispositivo. Ambos os comandos são compatíveis com Android Auto e iOS CarPlay. 

Agora, um teste pode ter a seguinte aparência: 

  1. Abra o aplicativo no dispositivo.
  2. Faça login, defina as condições de dados e navegue até a tela correta.
  3. Iniciar projeção (automotive.start)
  4. Execute etapas automatizadas na tela do carro.
  5. Projeção de parada (automotive.stop)
  6. Validar comportamentos não automotivos

Eis como isso poderia ser feito programaticamente: 


# Pre-condition: launch app in standard device context
driver.activate_app('com.example.automotiveapp')
login(driver)                        # run login flow normally
navigate_to_map_screen(driver)       # set expected app state


# Enter automotive projection (Android Auto / CarPlay)
driver.execute_script('automotive.start')

# Interact with in-car display
driver.find_element(By.ID, 'com.example:id/nav_button').click()
assert_route_displayed(driver)

# Exit projection — device returns to standard context
driver.execute_script('automotive.stop')

# Continue validating non-automotive behavior
assert_app_state_preserved(driver)

Cada segmento de projeção gera seu próprio vídeo e é carregado como anexo no relatório de teste. Vários ciclos de início/parada em um único teste são suportados — cada um com sua própria gravação. 

O resultado é uma cobertura de testes automotivos que se encaixa em um pipeline CI/CD padrão sem exigir manuseio especial de dispositivos, ambientes isolados ou intervenção manual entre as execuções.

O que isso desbloqueia 

Liberdade pré-condicionada.  Qualquer configuração de aplicativo que precise ser feita antes da projeção agora pode ser feita antes da projeção — na mesma sessão, sem soluções alternativas. 

Confiabilidade CI/CD.  Cada teste gerencia seu próprio estado de projeção. Não há dependências do que o teste anterior deixou para trás. Funciona de forma consistente em pools de dispositivos compartilhados e em nuvem. 

Vídeo por segmento.  Cada ciclo de início/parada gera sua própria gravação de vídeo, que é enviada como anexo ao relatório de teste. Se um teste executar vários ciclos de projeção, cada um terá sua própria gravação para revisão. 

Sessões de múltiplos ciclos.  Um único teste pode entrar e sair do modo de projeção automotiva várias vezes — útil para testar o comportamento em diferentes contextos. 

Tanto o Android Auto quanto o iOS CarPlay são compatíveis. Os comandos funcionam da mesma forma em ambas as plataformas a partir de um único script de teste Appium. 

Para equipes que já investem em testes automatizados para aplicativos de carros conectados, o automotive.start e o automotive.stop preenchem a última lacuna: o estado de projeção sempre foi gerenciado fora do teste. Agora, ele é gerenciado dentro dele — como tudo o mais em seu pipeline. 

Pronto para explorar testes automotivos 

Também recomendamos