CEVIU Logo
Voltar
Como a Expensify utiliza IA e agent-device para automação de testes e profiling mobile

Como a Expensify utiliza IA e agent-device para automação de testes e profiling mobile

Aprofundamento CEVIU

Aprofundamento

O App da Expensify, um aplicativo mobile multiplataforma em TypeScript com arquitetura React Native, agora usa agent-device como camada de execução para agentes de IA, não como ferramenta isolada, mas como interface unificada entre LLMs e dispositivos reais. Em vez de depender de screenshots ou de scripts frágeis baseados em coordenadas, o agente lê a tela como uma árvore de acessibilidade estruturada via API única, reduzindo o consumo de tokens em mais de 50% comparado ao método anterior artigo original. Isso permite comandos determinísticos como press, fill e find por rótulo, papel ou texto, sem adivinhação. A integração com Sentry e React DevTools vai além da coleta: o agente inicia e para o profiler no momento exato, gera .ad scripts executáveis a partir de passos manuais, e produz relatórios de renderização com nomes reais de componentes e contagem de renders, não apenas listas genéricas de boas práticas.

A infraestrutura real do App depende de servidores Mac mini locais que expõem simuladores via RPC, permitindo que agentes rodem fluxos em iOS e Android simultaneamente, mas essa escalabilidade tem limite prático: cada nó precisa ter os SDKs, certificados e permissões nativas instalados e atualizados. O agente não substitui o engenheiro; ele elimina repetição mecânica, como gravar vídeos de 'antes/depois' para PRs ou anotar manualmente durações de spans no Sentry, deixando o time focado em julgamento técnico, não em operação manual.

O que mudou

Em abril de 2026, a CEVIU já havia reportado a otimização do agent-device pela Callstack, com foco na redução de tokens e na troca de screenshots por snapshots estruturados [[LINK:ceviu-web-dev/como-otimizamos-o-agent-device-para-automacao-de-aplicativos-moveis|como otimizamos o agent-device]]. Agora, em julho de 2026, a Expensify não só adota essa base técnica, mas a estende com três implementações concretas e em produção: (1) o agent-device-evidence, que transforma relatos de bugs em scripts .ad reutilizáveis para evidência automática em PRs; (2) medição programática de spans no Sentry com warm-up + múltiplas execuções para eliminar outliers; e (3) profiling React nativo com início/parada programática do React DevTools, tudo acionado por prompt único. O que era conceito virou pipeline integrado ao fluxo diário do App.

Por que isso importa

Isso muda a economia de tempo em equipes móveis: coletar provas visuais para um bug em três plataformas deixou de custar 15 minutos manuais por PR para ser feita em segundos, com saída padronizada (MP4, stills, manifest). Mais importante: a métrica de performance deixou de ser uma média subjetiva de duas ou três tentativas manuais para um conjunto estruturado de cinco runs com mediana calculada, o que evita decisões erradas baseadas em outliers frios. Para desenvolvedores de React Native, isso significa que o agente não só detecta um componente lento, mas aponta *qual instância* de ReportListItem renderizou 7 vezes em vez de 1, e faz isso repetidamente, em cada branch, sem esforço humano extra.

Repositório oficial: Expensify/App

Linha do tempo

  1. CEVIU publica cobertura sobre otimização do agent-device pela Callstack, com redução >50% no uso de tokens

  2. Expensify lança uso em produção do agent-device no App para automação de testes, profiling React Native e medição de spans no Sentry

Perguntas frequentes

O agent-device funciona em dispositivos físicos ou só em simulators?

Funciona nos três ambientes: simuladores (iOS), emuladores (Android) e dispositivos físicos reais. A chave está na abstração das APIs nativas, adb para Android, simctl e XCUITest para iOS, todas orquestradas sob uma única interface CLI. No App da Expensify, o uso em dispositivos físicos é crítico para reproduzir bugs específicos de hardware, como falhas de câmera ou GPS.

Preciso modificar meu código-fonte para usar o agent-device?

Não é obrigatório, mas fortemente recomendado. O agente depende da árvore de acessibilidade para localizar elementos. Se seus componentes React Native não têm labels, roles ou accessibility props configurados, o snapshot fica vazio ou incompleto. O App da Expensify já segue boas práticas de acessibilidade, o que torna o agent-device eficaz desde o primeiro uso.

Posso usar o agent-device com outros frameworks além do React Native?

Sim, desde que a aplicação exponha uma árvore de acessibilidade válida. O agent-device é framework-agnóstico: já foi testado com Flutter (usando SemanticsNode), Kotlin Native (com AccessibilityNodeInfo) e até apps híbridos WebView. A limitação não está no framework, mas na qualidade da implementação de acessibilidade do app-alvo.

O que acontece se um elemento mudar de posição ou sumir da tela durante o script .ad?

O agente falha com erro claro, por exemplo, 'element not found: label="Settings"'. Não há tentativa de recuperação mágica. Isso é intencional: o script .ad é um contrato determinístico. Se o layout muda, o script deve ser regenerado. Isso força a equipe a manter os testes alinhados com a UI real, evitando falsos positivos.

Fontes

Avalie este artigo:
Compartilhar:
Categoria
CEVIU Web Dev
Publicado
03 de julho de 2026
Editoria
CEVIU Web Dev

Quer receber mais sobre CEVIU Web Dev?

Conteúdo curado diariamente, direto no seu e-mail.

Conteúdo curado diariamenteDiversas categoriasCancele quando quiser