Creando un entorno de desarrollo colaborativo Node JS y potenciándolo con herramientas online (parte 3)

Test de cobertura con nyc y coveralls

Diego Pérez Molinero
4 min readOct 29, 2017

En esta tercera parte, vamos a introducir en nuestro proyecto los test de cobertura del código, que nos permitirán verificar el porcentaje de código que tenemos cubierto con los tests. Es una buena forma de saber si tenemos partes importantes del código que no están cubiertas por los tests.

Para introducir los test de cobertura en nuestro código, vamos a usar la librería nyc de npm.

Para instalarla:

$ npm install nyc --save-dev

Y añadimos la línea correspondiente a nyc al package.json en la zona de scripts:

“scripts”: {
“test”: “mocha”,
"coverage": "nyc --reporter=text --reporter=lcov npm test",
},
Ejecutamos por tanto los test de cobertura:$ npm run cover

Obteniendo el siguiente resultado:

Como vemos, se han ejecutado los tests, y a continuación obtenemos el resultado del porcentaje de cobertura de nuestros tests.

Si subimos nuestro código a GitHub, dejamos de Travis CI haga su trabajo y vamos al proyecto en SonarCloud, veremos que no aparecen por ningún lado estos resultados de cobertura todavía.

Para que nos aparezcan estos resultados, tenemos que añadir en la raíz de nuestro proyecto el siguiente fichero sonar-project.properties:

sonar.projectKey=CalculatorNodeJS
sonar.projectName=CalculatorNodeJS
sonar.projectVersion=0.0.1-SNAPSHOT
sonar.sources=./app
sonar.exclusions=.properties, Dockerfile, *.md, node_modules/**, test/**, coverage/**,*.sh, configuration.js
sonar.tests=test/
sonar.javascript.jstest.reportsPath=coverage
sonar.javascript.lcov.reportPath=coverage/lcov.info
sonar.sourceEncoding=UTF-8

Y en el el fichero .travis.yml, añadimos la ejecución de los tests antes de llamar a sonar.

language: node_js
node_js: 12.13.0
jdk:
— oraclejdk8
addons:
sonarcloud: true
script:
— npm run cover
— sonar-scanner -Dsonar.login=$SONAR_TOKEN -Dsonar.organization=diegopm2000-github -Dsonar.projectKey=CalculatorNodeJS -Dsonar.sources=’./app’ -X

Subimos el proyecto a GitHub, esperamos a que Travis CI haga su trabajo y…

Ya podemos ver en Sonarcloud el reporte de cobertura de los tests. Nos faltaría añadir en el fichero README.md una línea para mostrar el distintivo de cobertura de los tests.

[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=CalculatorNodeJS&metric=coverage)](https://sonarcloud.io/dashboard?id=CalculatorNodeJS)

Los test de cobertura, también pueden visualizarse en la plataforma Coveralls.

Esta plataforma nos permite, al igual que Sonarcloud, visualizar online el resultado de nuestros test de cobertura.

Entrando en la plataforma, asociamos nuestra cuenta de GitHub, y asociamos nuestro proyecto.

En el fichero .travis.yml añadimos la siguiente línea, justo al final, después de llamar a sonar:

after_success:
— npm run coveralls

Y también tenemos que instalar el paquete en nuestro proyecto, ejecutando:

$ npm install coveralls --save-dev

Además de añadir al fichero package.json, una línea para coveralls dentro de la zona de scripts:

“scripts”: {
“test”: “mocha”,
"cover": "nyc --reporter=text --reporter=lcov npm test",
"coveralls": "nyc npm test && nyc report --reporter=text-lcov | coveralls"
},

Seguimos las instrucciones de Coveralls, para integrar la cobertura con la ejecución de TravisCI

Y además, añadimos el siguiente fichero .coveralls.yml a la carpeta raíz de nuestro proyecto, ya que TravisCI lo necesita:

service_name: travis-prorepo_token: mW7V1a7WZpPS7CSNoiYuOJSfjlt0F3GsY

Subimos el proyecto a GitHub y si entramos en Coveralls, veremos el resultado

Aprovechamos y obtenemos el distintivo de coveralls, que añadiremos a nuestro proyecto (otra medallita más).

Para concluir esta parte del artículo, vamos a asociar el proyecto también a Snyk, una plataforma que nos va a servir también para detectar posibles vulnerabilidades de seguridad en el código, incluyendo las librerías asociadas.

Entramos en Snyk y procedemos a asociar nuestra cuenta de GitHub a la plataforma, y el proyecto.

Pulsando en el botón de View report, accedemos a los resultados:

Y desde aquí también podemos obtener el distintivo para Snyk

[![Known Vulnerabilities](https://snyk.io/test/github/diegopm2000-medium/CalculatorNodeJS/badge.svg?targetFile=package.json)](https://snyk.io/test/github/diegopm2000-medium/CalculatorNodeJS?targetFile=package.json)

Que añadiremos al README.md del proyecto.

Resumen

Aquí finalizamos esta tercera y última parte del artículo, donde hemos aprendido a crear test unitarios y de cobertura, y a asociar a nuestro repositorio de código en GitHub las herramientas de Travis CI, Sonarcloud, Coveralls y Snyk.

Podéis acceder al repositorio de código fuente en GitHub aquí:

--

--

Diego Pérez Molinero

Software Architect & defender of clean architecture and domain driven design. Supporter of infrastructure & devops as code into the projects.