Recién casados: Joomla! y Jasmine
El conjunto de bibliotecas de JavaScript personalizadas en Joomla! actualmente no tiene pruebas escritas. Este verano, como un proyecto realizado bajo Google Summer of Code 2016, más del 90% de la cobertura de los test se logrará a través de las bibliotecas y este artículo cuenta la historia de lo que está sucediendo.
Tal como lo dice el meme, las pruebas son un requisito importante en cualquier sistema de software. Mi trabajo para este verano con Joomla! como un estudiante de Google Summer of Code fue escribir las pruebas de JavaScript. Joomla utiliza una colección de bibliotecas Javascript personalizadas Pretendo introducir pruebas de dichas bibliotecas dirigidas a una prueba de cobertura de más del 90 %. Lograr esto proporciona una base sólida para futuras mejoras en estas bibliotecas. Estoy utilizando Jasmine como framework de pruebas y Karma para ejecutar la prueba. Así que en este artículo voy a compartir con ustedes la historia de Joomla! y Jasmine.
Con gran entusiasmo escribo este primer artículo sobre mi proyecto GSoC con Joomla!, voy a comenzar contándoles algo sobre mi, antes de hablar del proyecto.
Soy Thanuditha Ruchiranga Wickramasinghe, actualmente soy estudiante de último año en el Departamento de Ciencias de la Computación e Ingeniería de la Universidad de Moratuwa, Sri Lanka. Esta es mi segunda vez como estudiante GSoC, el año pasado este programa me ayudó a aprender muchas cosas nuevas a las que nunca había sido expuesto y estoy seguro que va a ser una experiencia aún mejor esta vez con mis mentores, Ashan Fernando e Yves Hoppe.
Antes de quedar seleccionado para el GSoC, hice unas investigaciones preliminares sobre algunos frameworks para posibles pruebas de JavaScript. Comparé las ventajas y desventajas de ellos con relación a los requisitos del proyecto. Discutiendo con mis mentores sobre las observaciones realizadas, escogimos a Jasmine como el complemento perfecto para Joomla!, lo siguiente fue buscar en que ejecutar la prueba y Karma fue la elección obvia.
La ventaja de utilizar Karma es que le ahorra trabajo al desarrollador al configurar un entorno de pruebas Joomla! utiliza el servicio de integración continua de Travis para ejecutar pruebas en GitHub. Cada push PR hecho al repositorio desencadena todas las pruebas que desee ejecutar. ¡Travis te está mirando!
Dependiendo de los resultados de las pruebas de Travis, GitHub indica si en los cambios realizados se rompió la funcionalidad existente o no. Karma hace la configuración de todo esto una tarea muy sencilla. Así que finalmente, Karma se convirtió en el casamentero entre Joomla! y Jasmine. Lo Siguiente es un diagrama simple que explica la idea del flujo de ejecución de prueba.
Entrando un poco en detalle en los aspectos de implementación, la primera y probablemente la tarea más difícil en la ejecución del proyecto, fue poner las bases y configuración del entorno de prueba con el primer par de casos de prueba para trabajar sobre ello. Decidimos utilizar RequireJS al lado del Karma por lo que es posible cargar dinámicamente el código JavaScript necesario como módulos donde quiera que sea necesario. La configuración de las pruebas a ejecutar en Travis no fue tan difícil ya que Karma estaba allí para el rescate.
La Jasmine-jquery Librery también fue utilizada para hacer la prueba de escritura más simple, ya que proporciona un amplio conjunto de dispositivos de comparación personalizadas para el framework jQuery. Un par de otros plugins como reportero de la cobertura de Karma, reportero detallado Karma y RequireJS texto plugin fueron utilizados en la adición de un toque de profesionalidad al trabajo y sus resultados. Tenemos un PR esperando que se combinarán en el repositorio de gsoc16_js-unit-tests con un conjunto completo de casos de prueba escrita para la primera biblioteca de JavaScript solicitada, 'JCaption'.
La siguiente es una captura de pantalla del registro de compilación de Travis con todos los casos de prueba para la biblioteca de JCaption pasando junto con un resumen de cobertura de la prueba sobre el conjunto de bibliotecas hasta el momento.
A continuación se muestra un extracto del código SPEC de especificaciones de este conjunto de casos de prueba. La configuración de DOM ocurre en un archivo separado que se carga dinámicamente como una dependencia aquí.
Este artículo que básicamente se describe acerca de cómo el entorno de prueba de JavaScript fue construido desde cero. En mi próximo artículo voy a compartir con ustedes, algunos de los desafíos que surgieron al escribir las pruebas de Javascript para diferentes bibliotecas y cómo fueron superados. ¡Así que nos vemos hasta la próxima vez!
PD: Un agradecimiento especial a Elisa Foltyn por ayudarme con la imagen de portada del artículo. :)
Escrito por Ruchiranga Wickramasinghe
Some articles published on the Joomla Community Magazine represent the personal opinion or experience of the Author on the specific topic and might not be aligned to the official position of the Joomla Project
By accepting you will be accessing a service provided by a third-party external to https://magazine.joomla.org/
Comentarios