Automatizar tus tests con WinAppDriver con Azure DevOps

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.

Azure DevOps – Project Settings – Agent pools – Download agent

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.

Azure DevOps – Builds – 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.

Azure DevOps – Build definition – .NET Desktop template

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.

Tareas de la plantilla .NET Desktop

Ahora vamos a hacer algunas modificaciones en la definición:

1. Cambia el Agent pool por defecto:

Azure DevOps – Builds – WinAppDriver Test CI – Agent Pool

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:

Azure DevOps – Builds – WinAppDriver Test CI – Tasks – PowerShell Script

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.

WinAppDriver Tests CI – Triggers – Enable continuous integration

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:

Resultado de los test ejecutados en Azure DevOps

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.

Detalle del test fallido

¡Saludos!