HeadlinesBriefing HeadlinesBriefing.com

E2exe: automatización de escritorio Windows a escala

Hacker News •
×

Probar aplicaciones de escritorio de Windows ha sido durante mucho tiempo una de las funciones más solicitadas por los clientes, porque nadie tenía la infraestructura para ejecutar miles de estas pruebas en paralelo cada mes. Las pruebas web son comparativamente sencillas: un navegador sin interfaz se inicia en un contenedor Linux en segundos, cuesta una fracción de centavo y se descarta cuando termina la prueba. Las pruebas de escritorio de Windows no tienen un equivalente. Cada prueba necesita una máquina virtual completa, ya que los contenedores de Windows carecen de un escritorio gráfico. Una máquina virtual de Windows en frío tarda de 2 a 3 minutos en arrancar, y alguien debe haber iniciado sesión, porque la automatización de la interfaz de Windows solo funciona dentro de una sesión de escritorio activa. Además, las máquinas conservan entre ejecuciones los archivos instalados, las claves del registro, los perfiles de usuario y los inicios de sesión guardados, mientras que cada aplicación trae sus propios instaladores, solicitudes de administrador y diálogos de primer uso. Las máquinas Windows remotas no ofrecen trazas, registros ni capturas de pantalla integrados, y la mayoría de la infraestructura de pruebas se diseñó en torno a Linux.

La respuesta del equipo fue tratar las máquinas Windows como teléfonos: un dispositivo que una prueba reserva, usa una vez y desecha. La arquitectura toma prestado de su infraestructura de pruebas móviles. Un planificador de dispositivos personalizado en Kubernetes asigna una máquina virtual Windows en Google Compute Engine mediante una reclamación de dispositivo (Device Claim), y la prueba la controla de forma remota con WebdriverIO y Appium. Se necesitaron dos extensiones del modelo de dispositivos: los dispositivos pueden estar fuera del clúster, y las reclamaciones pueden devolver direcciones de conexión de escritorio, incluido CDP para navegadores.

El sistema tiene tres partes: un controlador que mantiene un grupo precalentado de máquinas virtuales Windows, un pod de ejecución Linux que ejecuta el código de prueba, y la propia máquina virtual Windows, que ejecuta la aplicación bajo prueba y un pequeño agente de escritorio. El ejecutor se conecta mediante CDP de Playwright para el contenido del navegador, Appium para las aplicaciones nativas y un flujo WebRTC que permite ver las pruebas en vivo y revisar las grabaciones después.

Cada máquina virtual es desechable. Nadie inicia sesión en ella, la parchea ni la mantiene en funcionamiento durante semanas, y tras su uso la reemplaza una máquina nueva.

Fuente: Hacker News · Resumido por HeadlinesBriefing