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
CEVIU publica cobertura sobre otimização do agent-device pela Callstack, com redução >50% no uso de tokens
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.
Links relacionados
Fontes
- callstack.comfonte original
- Categoria
- CEVIU Web Dev
- Publicado
- 03 de julho de 2026
- Editoria
- CEVIU Web Dev

