Ayer te conté que estuve probando WinAppDriver y Appium para testear aplicaciones de escritorio de Windows, pero nos falta una parte muy importante: cómo automatizar esta ejecución. En este artículo vamos a ver cómo integrar tus tests con Azure DevOps para lograr nuestro objetivo.
Agente de Azure DevOps
Para poder ejecutar estos test, los requisitos mínimos son un Windows 10 y tener instalado WinAppDriver. Azure DevOps trae consigo un pool de máquinas que te permiten compilar, desplegar y lanzar test en tus pipelines, pero también es posible poner tus propias máquinas para estas tareas, donde tienes el control de las mismas. Lo único que necesitas es descargar un agente e instalarlo en la máquina que cumpla los requisitos para este caso (puede ser virtual claro). Para conseguir el agente accede a la sección Project Settings > Agent pools y desde allí haz clic en el botón Download agent y sigue los pasos para su instalación. Para que el proceso sea más sencillo me he creado un pool propio llamado WinAppDriver pool, para diferenciar estas máquinas de las demás.

Definición de la build para lanzar los tests
Ahora que ya tienes un agente que es capaz de ejecutar tus tests con WinAppDriver, sólo necesitas crear una defición de build que los lance 🙂 En el apartado Builds haz clic en New > New build pipeline y elige la opción use the visual designer.
En mi caso, mi código fuente está alojado en GitHub, pero tienes diferentes opciones a elegir. Una vez localizado pulsa sobre el botón Continue. Por último, Azure DevOps pone a nuestra disposición numerosas plantillas para distintos tipos de proyectos. Para este ejemplo nos viene fenomenal utilizar aquella que se llama .NET Desktop.
La plantilla creará una serie de tareas, típicas de un proyecto .NET. Podemos deshabilitar/eliminar las tres últimas, ya que sólo estamos utilizando esta build para lanzar los test, a modo de ejemplo.
Ahora vamos a hacer algunas modificaciones en la definición:
1. Cambia el Agent pool por defecto:

2. Añade una nueva tarea del tipo PowerShell
Antes de poder ejecutar los tests necesitas lanzar WinAppDriver, como hicimos en el artículo anterior. Puedes hacerlo a través de PowerShell con el siguiente comando:
Start-Process -FilePath "C:\Program Files (x86)\Windows Application Driver\WinAppDriver.exe"
Esta tarea debe estar ubicada antes de que VSTest se ejecute:

Si quisieras trabajar con Appium debes lanzar este en lugar de WinAppDriver.
3. Habilita el check Enable Continuous Integration
Para que estos test se lancen cada vez que realice un commit en mi código fuente, puedes marcar el check que habilita la integración continua, en el apartado Triggers.
Ahora ya puedes ejecutar tus tests desde Azure DevOps de manera automatizada. Además, cuando finalicen, podrás ver el informe con aquellos que han pasado y los que han fallado:
De hecho, desde Azure DevOps puedes ver el assert que no se ha cumplido, e incluso el Stack trace de aquellos tests que no han logrado finalizar satisfactoriamente.
¡Saludos!