Running Lighthouse for every PR with Travis CI
May 15, 2018Read the post in: english, spanishHace unas semanas anunciamos el nuevo sitio de NodeConf Argentina y mientras estaba ayudando con algunas cosas del sitio se me ocurrió probar correr Lighthouse desde las Chrome Developer Tools
Open the Developer Tools and select the Audits tab to run Lighthouse
En ese momento la accesibilidad del sitio no era tan buena (59/100) y supe que era importante mejorarla. Empecé a pensar en formas de automatizar el reporte y poder de esa forma mejorar progresivamente. No solo serviría para el caso de accesibilidad, sino también podría informar sobre mejoras en performance, SEO y otras métricas relevantes.
Disparando un build por cada Pull Request
Quería hacer un build únicamente cuando los features están “completos” y eso en general sucede cuando se decide abrir un PR. También hay una restricción en la herramienta que utilicé que no permitirá ser ejecutada por branchs en Travis CI.
Después de unos 20 minutos de prueba y error con la configuración de Travis logré obtener el comportamiento que estaba buscando. Esta fue la configuración final:
Y necesité agregar estas líneas al archivo .travis.yml
(tal vez quisieras cambiar el branch a “master”):
1 | branches: |
lighthouse-ci
lighthouse-ci es un paquete genial que te permite ejecutar Lighthouse desde la terminal y puede reportar los resultados directamente a GitHub. Su documentación está muy buena. En resumen: tenés que obtener una API key, configurar esa key en Travis CI, agregar el paquete cómo una de tus dev dependencies y finalmente ejecutar npm run lh https://tugenialsitio.com
Después de que el build finalice deberías ver un comentario en tu PR cómo el siguiente:
Encontré algunas inconsistencias con los reportes de Lighthouse versus los reportes de Lighthouse desde la terminal, por ejemplo obteniendo diferente valor de performance, pero no encontré nada hasta ahora que lo pueda estar provocando. Tal vez crearé un issue para seguir el problema en el repositorio.
Si querés conocer acerca de cómo configuré el deployment con Surge.sh en Travis CI podés leer este blog post.