Frontend testing

Paqui

Adevinta (prev. Schibsted)

pcalabriarubio@gmail.com

@zurribulle

Opiniones personales

  • Los tests están para romperse
  • El % de cobertura de código es mentira
  • No todo el código necesita tests
  • Los tests son una herramienta para el desarrollador
  • Los tests mal hechos (flaky, falsos positivos, no testean lo que dicen) son peores que no tener tests

Tipos de tests

Unitarios

  • Un archivo = una unidad de código
  • Rápidos de ejecutar, lentos de escribir
  • ¿Es correcta la lógica interna?

Integración

  • Complejidad muy variable
  • ¿Las piezas encajan?

E2E

  • Lentos de ejecutar
  • Difíciles de debugar
  • Muy parecidos al testing manual
  • Cross browser testing!
  • ¿Mi app funciona como debe?

Componente

  • Pueden ser unitarios o de integración, no necesito saberlo
  • Blackbox test por definición
  • Misma intención que los E2E, por partes

Visual tests

  • Comprobación pixel a pixel
  • Frágiles
  • ¿El diseño es correcto?

Snapshot testing

  • Forma de ejecución, no un tipo de test
  • Rápidos de escribir
  • Falsa seguridad

Librerías

Jest

  • Motor de tests
  • Aserciones y matchers
  • Gestión de asincronismos
  • Cobertura de código
  • Sin configuración (funciona "out of the box")

Optimizada para tests unitarios, de componente e integración.

Testing library

  • Manejo del DOM: Selección e interacción
  • Gestión del ciclo de vida de componentes de forma transparente
  • Fomenta buenas prácticas de accesiblidad

Tests unitarios, de componente e integración.

React test renderer

  • Librería oficial de react
  • Montaje de componentes en entorno de test
  • Control interno detallado de class components

Tests unitarios, de componente e integración.

Nightwatch

  • Wrapper sobre WebDriver API (selenium)
  • Soporta todos los navegadores (aunque hay algún bug)
  • Integración son Saucelabs para crossbrowser testing

End to end tests

Alternativas:

Jest + puppeteer

Cypress

Percy

  • Sencilla de manejar
  • Soporte múltiples librerías, i/ web estáticas
  • Integración con Github y CI

Visual regression testing

Links

Frontent testing

By Paqui Calabria

Frontent testing

  • 990