Entonces, básicamente la pregunta es ¿qué sucede si mi sitio web aún se está cargando? ¿Qué sucede si mi elemento aún no ha dejado de renderizarse, o si mi interfaz de usuario aún está cambiando? ¿Realmente estoy tomando la captura de pantalla correcta en el momento adecuado? Realmente necesitamos asegurarnos de hacer exactamente eso. Así que asegurémonos de que nuestra aplicación esté lista para ser capturada, porque de lo contrario podría causar inestabilidad.
Y la solución es bastante simple, porque es la misma solución que usarías para las pruebas también. Utiliza tus afirmaciones conscientemente y úsalas de forma dinámica y no con tiempos de espera fijos. Espera capturas de pantalla consistentes. Espera a que se completen todos los tiempos de carga, que se hayan realizado todos los cambios de renderizado o interfaz de usuario adecuados antes de crear la captura de pantalla. Y sé que soy muy molesto al respecto, pero debería ser una práctica recomendada general no utilizar tiempos de espera fijos, sino esperar hasta que todo esté correctamente hecho.
Otro punto, último pero no menos importante, son los falsos negativos. Y creo que son peligrosos, porque hacen que parezca que tu prueba está fallando porque algo está roto, pero tu prueba falla sin que haya errores presentes. Esto puede ser especialmente el caso de cambios naturales, que no son erróneos, y cambios que no se pueden prevenir. Ya sea, nuevamente, especificaciones de tiempo si tienes un tiempo de solo lectura, que no puedes influir por el cliente. O, mi ejemplo favorito, que me causó algunas pesadillas antes. Es este. Es una imagen en una pantalla de inicio de sesión, tomada de la interfaz de administración de Shopper6, que es básicamente para una tienda en línea. Supongo que todavía es cierto en este momento. Parece bastante inofensivo, pero esta imagen aquí depende del tiempo. Entonces habrá una imagen diferente dependiendo de la hora del día, y se elige al azar de un conjunto de imágenes. Entonces, incluso en el mismo momento, podría ser una imagen diferente, y esto causa todas esas notificaciones de que algo cambió en la aplicación. Y sabemos que es natural, pero no queremos recibir notificaciones nuevamente, falsos negativos.
La solución para esto sería hacer que la prueba ignore los cambios, tal vez usando un umbral de píxeles si se trata de diferencias de renderizado, desenfocándolo o incluso ignorando áreas o elementos. Entonces puedes configurarlo en el servicio de Visual Regression Tracker o en el código si el Visual Regression Tracker no es suficiente para ayudarte allí. Yo uso para esto, uso comandos personalizados propios, donde en realidad tomo la imagen y la establezco en otra imagen de fondo fija que siempre es la misma. Pero debemos tener mucho cuidado cuando se trata de esas interferencias porque esto es en realidad lo que hacemos, interferimos con la aplicación a través de la prueba. Entonces, si haces esto, escribe una prueba separada propia para asegurarte de que, por ejemplo, la imagen o el proceso de selección de imágenes realmente funcione, para no ocultar un error solo porque interfieres con la aplicación en la prueba y documentarlo para que otros desarrolladores en la prueba lo sepan.
Ok, esto se trata básicamente de las mejores prácticas para las pruebas visuales, o las dificultades que encontré. Pero si quieres aprender más sobre las mejores prácticas no solo limitadas a las pruebas visuales, por favor echa un vistazo a la charla de Marco sobre cómo escribir buenas pruebas para aplicaciones UBI porque es un área general y no solo de pruebas visuales. Y si no has tenido la oportunidad de ver esta charla aún, por favor revisa la grabación más tarde, realmente vale la pena. Y junto con esta charla y mi charla, podremos tener pruebas maravillosas. Entonces nuestras pruebas ahora son detectives en este sentido, tal vez Cypress o podría ser cualquier otra cosa, Sherlock Cypress, Sherlock Playwright, Sherlock Selenium o Red Driver, lo que uses porque los hacemos ser un poco más como nosotros, los humanos, haciendo pruebas. Entonces no solo echando un vistazo a las cosas que describimos, sino también fuera del concepto, escribiendo o mirando un poco y esto realmente puede ser un salvavidas porque evita errores causados por efectos secundarios de los que quizás no estés consciente.
Comments