TestCafe: tu aliado ideal para pruebas automatizadas
Autores: José Peñaherrera & Carolina Mieles
Hoy en día las pruebas automatizadas están en auge, y ¿cómo no? Si nos otorgan varias ventajas en nuestros proyectos, entre ellas una de las más importantes: la reducción de tiempo y costos. Las pruebas automatizadas pueden ser aplicadas para pruebas de regresión, E2E (end-to-end), integración, entre otras. Estamos seguras de que has escuchado mucho sobre las pruebas E2E que, como su nombre lo indica, son pruebas que van de un punto de inicio a un punto final. El término suena sencillo ¿Verdad? Pero, ¿Cómo podemos crear o ejecutar este tipo de pruebas de forma automatizada? Existen en el mercado múltiples herramientas que nos permiten realizarlo, entre ellas se encuentran Selenium, Cypress y TestCafe. En esta ocasión te contaremos acerca de TestCafe y cómo esta herramienta puede ser una gran alternativa a considerar para que empieces a incluirla desde ahora en tus proyectos.

Partimos de la premisa de que TestCafe es una herramienta OpenSource, la misma que cuenta con ciertas características particulares, por ejemplo:
- Es flexible y extensible.
- Utiliza JavaScript o TypeScript como lenguaje de programación para las pruebas, haciéndolo entendible por humanos.
- Al ser escrito en JavaScript o TypeScript puede tomar ventaja de las librerías y preprocesadores de terceros.
- No depende de ningún otro software para poder ser ejecutado, es independiente, únicamente es cuestión de instalarlo a través de Node.js y será ejecutado en los navegadores que tengas instalados.
- Tiene la habilidad de hacer Mock de solicitudes HTTP.
- Utiliza un proxy inverso interno.
- Es posible ejecutar pruebas con múltiples ventanas del mismo navegador.
- Es posible ejecutar pruebas en paralelo.
Podríamos extendernos en los beneficios que nos ofrece TestCafe para la ejecución de nuestras pruebas automáticas. Sin embargo, a nuestra manera de verlo, esta herramienta tiene varias ventajas que la destaca contra su competencia, y estas se resumen en las siguientes 6 características claves:
- No requiere de un Web Driver para la creación de las pruebas.
- Elimina automáticamente los tiempos de espera para los elementos del Document Object Model (DOM), con esto, podemos evitar el típico “timeout” que podemos obtener por un elemento que se demora en cargar y que puede botar toda nuestra prueba .
- Utiliza el método de Hooks, es decir, puede ejecutar tareas antes de cada prueba o después de cada prueba.
- Cuenta con assertions propias de la herramienta.
- Cuenta con asistencia para realizar “debug” de las pruebas, es decir, es posible parar las pruebas y revisar los estados de la misma.
- Permite la ejecución de las pruebas en diferentes navegadores de manera simultánea.
Ahora que tenemos una mejor idea qué es TestCafe y el alcance que puede llegar a tener dentro de nuestro proyecto, empezamos con un ejemplo sencillo de cómo ejecutarlo. Para esto primero debemos instalarlo desde nuestra terminal:

La estructura de esta herramienta es muy sencilla:
- Inicialmente, importamos el módulo ‘Selector’ desde Testcafe.
- Seguido de ello debemos crear un ‘fixture’ (grupo de pruebas que contengan la misma url) en la que definiremos una cadena de texto con el nombre del conjunto de pruebas junto con el método ‘page’ (url de inicio de pruebas).

Una vez hecho esto, vamos a crear nuestra primera prueba, misma que posee dos argumentos: una cadena de texto con el nombre de la prueba y una función asincrónica con los pasos de la prueba a realizar. Dentro de esta función podemos utilizar las distintas acciones según se requiera, en algunos casos se necesitará detallar el elemento (selector) mediante su id o xpath. Podemos ver la lista de acciones disponibles en Interact with the page — TestCafe. Además, nos brinda la opción de utilizar “assertions” propios de la herramienta (comprueba el estado de la página para determinar si coincide con el estado esperado) basado en BDD. La lista de afirmaciones disponibles las puedes revisar en Assert — TestCafe.

Finalmente nos queda correr un sencillo comando para empezar a probar nuestra aplicación, especificando el navegador de destino (chrome, opera, safari…) y la ruta del archivo de prueba.

Una vez ejecutado el comando se abrirá el navegador seleccionado, en donde podremos ver en tiempo real la ejecución de la prueba, pero no te preocupes, de igual manera veremos el resultado de las pruebas en la consola.
- Pruebas exitosas

- Pruebas fallidas

Como puedes ver en la anterior imagen, encontramos una prueba fallida y, con el método — debug-mode, podremos ver exactamente en qué parte está fallando la prueba. Además, en este modo se pausa la ejecución de la prueba antes de la primera acción, por ende puede invocar las herramientas de desarrollador y luego depurar.
El pie de página muestra la barra de estado donde puede reanudar la ejecución de la prueba o pasar a la siguiente acción asimismo, al utilizar la opción Unlock Page, se desbloqueará la página probada y se podrá interactuar con sus elementos.

Nosotras te recomendamos TestCafe porque, al ser una herramienta de fácil configuración con una curva de aprendizaje muy rápida y versátil, te permite adentrarte en las pruebas E2E en solo unos minutos. Tuvimos una experiencia interesante y gratificante con TestCafe y te invitamos a que lo descubras por tu cuenta, estamos seguras de que va a llamar tu atención y creará esta intriga de qué más puedes alcanzar con esta herramienta y tal vez te haga preguntarte ¿Qué pasaría si aumento esta herramienta en mi proyecto?
Enlaces de interés:
Disclaimer: las declaraciones y opiniones expresadas en este artículo son las de l@s autor@s y no reflejan necesariamente las posiciones de Thoughtworks.
¿Quieres formar parte de ThoughtWorks Ecuador? Aplica a nuestras vacantes en nuestra página web https://thght.works/3F3T4JA