Testar aplicativos de desktop Windows tem sido, por muito tempo, um dos recursos mais solicitados pelos clientes, porque ninguém tinha infraestrutura para executar milhares desses testes em paralelo todo mês. Testes para web são relativamente simples: um navegador headless inicia em um contêiner Linux em segundos, custa uma fração de centavo e é descartado quando o teste termina. Para testes de desktop Windows não existe equivalente. Cada teste precisa de uma máquina virtual completa, já que os contêineres Windows não incluem uma área de trabalho gráfica. Uma VM Windows iniciada a frio leva de 2 a 3 minutos para inicializar, e alguém precisa estar com a sessão logada, pois a automação de interface do Windows só funciona dentro de uma sessão de desktop ativa. As máquinas também mantêm entre execuções arquivos instalados, chaves do registro, perfis de usuário e logins salvos, enquanto cada aplicativo traz seus próprios instaladores, solicitações de administrador e caixas de diálogo de primeira execução. Máquinas Windows remotas não oferecem rastreamentos, logs ou capturas de tela integrados, e a maior parte da infraestrutura de testes foi projetada em torno do Linux.
A resposta da equipe foi tratar as máquinas Windows como celulares: um dispositivo que um teste reserva, usa uma vez e descarta. A arquitetura se inspira na infraestrutura de testes mobile da empresa. Um escalonador de dispositivos personalizado no Kubernetes entrega uma VM Windows no Google Compute Engine por meio de uma reserva de dispositivo (Device Claim), e o teste a controla remotamente com WebdriverIO e Appium. Foram necessárias duas extensões no modelo de dispositivos: os dispositivos podem estar fora do cluster, e as reservas podem retornar endereços de conexão de desktop, incluindo o CDP para navegadores.
O sistema tem três partes: um controlador que mantém um pool aquecido de VMs Windows, um pod de execução Linux que roda o código do teste, e a própria VM Windows, que executa o aplicativo testado e um pequeno agente de desktop. O executor se conecta pelo CDP do Playwright para o conteúdo do navegador, pelo Appium para aplicativos nativos e por um fluxo WebRTC que permite assistir aos testes ao vivo e revisar as gravações depois.
Cada VM é descartável. Ninguém faz login nela, aplica patches ou a mantém em funcionamento por semanas, e uma máquina nova substitui cada uma após o uso.
Fonte: Hacker News · Resumido por HeadlinesBriefing