Cómo crear un entorno de desarrollo más seguro y eficiente con Playwright Visual Comparisons
(blog.lemonbase.team)Contexto y planteamiento del problema
- Las pruebas de frontend presentan muchas dificultades debido a los cambios en la UI y a entradas de usuario impredecibles.
- Las pruebas verificadas manualmente tienen limitaciones, por lo que se consideró introducir pruebas automatizadas.
- Las pruebas E2E existentes basadas en grabación (TestProject, Playwright) tienen un alto costo de mantenimiento y son vulnerables a los cambios en la UI.
Introducción de Playwright Visual Comparisons
- Se aplicó un enfoque de pruebas de regresión visual para detectar cambios en la UI.
- Se guarda una captura de pantalla de referencia y, después de cambios en el código, se compara para detectar modificaciones.
- Es posible comparar imágenes con los métodos 2-up, Swipe, Highlight y Onion Skin.
Principales problemas encontrados durante la implementación y sus soluciones
-
Falsos fallos provocados por diferencias mínimas (0.01%)
Problema: se producen diferencias en el renderizado de fuentes según el entorno de ejecución de las pruebas (SO, navegador, configuración de pantalla, etc.).
Solución: usar contenedores Docker para ejecutar todas las pruebas en el mismo entorno. -
Necesidad de tomar la captura después de que termine la carga de datos
Problema: si se toma la captura antes de que la página termine de cargar por completo, puede incluir la UI de carga.
Solución: usar una función utilitaria congetByText+toBeVisiblepara esperar hasta que aparezca una cadena específica. -
Diferencias en las capturas causadas por elementos animados
Problema: los elementos de CSS animation, Canvas, SVG y WebGL se capturan en momentos distintos cada vez, lo que vuelve las pruebas flaky.
Solución: aplicar distintos mecanismos para desactivar animaciones y optimizar adicionalmente la eficiencia de ejecución de las pruebas. -
Detección innecesaria de cambios por plugins de terceros (iframe, etc.)
Problema: plugins de terceros como feedback de clientes, encuestas y chatbots se cargan medianteiframey generan cambios visuales.
Solución: al generar capturas, aplicar CSS común para ocultariframey elementos de plugins específicos. -
Fallo al verificar elementos inferiores en páginas con scroll
Problema:toHaveScreenshotcaptura por defecto solo la parte visible de la pantalla, por lo que se requiere manejo relacionado con el scroll.
Solución: aplicar la opciónfullPage: truepara capturar una captura de toda la página.
Conclusión
- Las pruebas de regresión visual permiten automatizar eficazmente la detección de cambios en la UI.
- Aunque no es una solución perfecta, mejora tanto la productividad de desarrollo como la estabilidad de las pruebas.
- Se necesitan mejoras continuas y optimización del entorno de pruebas.
Aún no hay comentarios.