Refrescando los apuntes de testing automático en SAPUI5 (Parte 5) – Husky

Llegamos al final de esta serie, vamos a recapitular.

Primero preparamos el servidor local y sus datos para poder ejecutar sin necesidad de un backend.

En la segunda entrada vimos como preparar los test unitarios para comparar los metadatos del servidor local vs el backend.

Tercera entrada, vimos como crear los test integrados y como ejecutar estos test con el servidor local.

Para finalizar la automatización, en la cuarta parte vimos como configurar Karma para simular el navegador en fondo y así poder ejecutar los test sin necesidad de abrir nuestro navegador.

La entrada de hoy es un complemento a las anteriores ya que no es tanto una automatización, sino un control para forzar a que ante determinadas acciones en GIT se realicen ciertas acciones «obligatorias».

Pero… ¿qué es Husky? Husky es una herramienta que nos permite ejecutar Git Hooks (commandos de sistema) de forma sencilla y como si fuera una especie de workflow.

Preparación del proyecto

Como en los pasos anteriores, requeriremos de unos sencillos pasos para preparar nuestro entorno.

Lo primero sera instalar Husky, para ello, vamos a ejecutar el comando:

npm install husky

Aunque con esto seria suficiente, ya que solo nos quedaría añadir los ficheros de configuración, vamos a añadir de manera automática esta configuración:

npx husky install

Pero ojo, podríamos tener un error:

Esto es debido a que no hemos iniciado git en nuestro repositorio. Si ya tienes git en tu proyecto, puedes saltarte este paso, sino… Ejecutamos este comando:

Ahora volvemos a ejecutar » npx husky install » y obtenemos el siguiente resultado:

Si nos fijamos en el proyecto, veremos que se ha creado una nueva carpeta llamada .husky:

Ya tenemos todo apunto, solo nos queda añadir la configuración.

Configurando husky

Husky incorpora unos scripts rápidos para añadir instrucciones sin tener que estar modificando los ficheros:

npx husky add .husky/pre-commit "npm test-auto"

Un apunte importante, si os fijáis añadimos el script «test-auto» que creamos en la entrada anterior. Aun así este comando no es 100% correcto, pero esto lo veremos en los resultados.

Una vez ejecutado el comando anterior veremos lo siguiente, en consola nos avisa que se ha creado el pre-commit

A nivel de proyecto tendremos un fichero nuevo que contendrá la ejecución del scrpit:

Si lo abrimos, tendremos el siguiente contenido:

El resultado

Ahora que ya esta todo configurado vamos a ver como funciona.

Para ello, ya que hemos indicado que queremos que la acción de iniciar los test se inicie antes de hacer un commit vamos a simular un commit:

Como veis ha fallado, esto es porque el comando que hemos puesto es incorrecto, por lo que el commit tampoco sse ha realizado. Como veis en el proyecto, los cambios todavía están en el area de stage:

Añadiendo «run» al fichero pre-commit lo tendremos solucionado:

Volvemos a ejecutar el commit y ahora si, vemos como se inician los test con Karma:


Y hasta aquí la nueva serie de testing integrado en nuestras aplicaciones. Os tengo que reconocer que cuando empecé con esta serie era un poco reacio a darle peso a esta automatización ya que en muchas ocasiones los márgenes que nos dejan para poder implementar estas soluciones son muy cortos. Aun así he visto que no requiere tanto esfuerzo como pensaba.

Recapitulando un poco en estas últimas entradas hemos visto lo siguiente:

  • No depender de datos de backend, sino tener nuestros propios datos en un servidor local
  • Ejecutar test unitarios ya sea de backend o de frontend, con datos locales o de servidor
  • Ejecutar test integrados de manera gráfica y también escogiendo si queremos datos locales o de servidor
  • Usar Karma para poder ejecutar los test sin necesidad de «un navegador»
  • Configurar Husky para lanzar de manera automática los test antes de, por ejemplo, un commit.

Como siempre suscribete, dale a la campanita de notificaciones y comparte en redes ayudarme a llegar a más personas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.