Al trabajar con componentes de UI avanzados, puede ser un desafío simular APIs y crear un DOM falso que simule con precisión un navegador. Las pruebas en un navegador real son esenciales para garantizar una representación adecuada, funcionalidad CSS y pruebas de interacción. Con los años, han surgido varias herramientas para apoyar la automatización del navegador, incluyendo Selenium, WebDriver.io, Puppeteer, Cypress y PlayWrite. Las pruebas en un navegador real y la eficiencia son dos objetivos clave en las pruebas de componentes.
Y especialmente cuando estamos trabajando con componentes de UI advanced, componentes de UI que tienen cosas como medios advanced, que tienen lienzos y gráficos que se están animando. Y tenemos muchas microinteracciones y también tenemos muchos gestos que necesitamos soportar, como arrastrar y soltar o hacer zoom y así sucesivamente. Aquí es donde la simulación de las APIs se queda realmente corta. Y a veces es muy difícil y estás intentando hacer que tu DOM falso, navegador falso funcione como un navegador y inviertes mucho tiempo y es realmente frustrante en la prueba. Porque al final del día, es muy simple. Cuando tenemos componentes de UI, queremos probarlos en un navegador real. Y esto significa que realmente renderizará nuestro componente. No solo vamos a probar que tenemos la clase CSS correcta, sino que también queremos probar que el CSS está construyendo nuestro componente correctamente y que se visualiza correctamente. Queremos hablar sobre la llamada a la red que a veces es diferente cuando estamos trabajando con el navegador. Queremos probar la interacción, todos los gestos que mencioné, y también el tiempo adecuado. Cuando estamos trabajando con un mock, normalmente no se ajusta al tiempo que realmente tiene el navegador, o al evento pseudo y así sucesivamente. Si hay efectos secundarios, de nuevo, el evento pseudo es un ejemplo, como el cambio de entrada y así sucesivamente, queremos asegurarnos de que se dispara correctamente, y no nosotros disparándolo manualmente, y al final del día podríamos querer mirar realmente el componente y hacer una captura de pantalla y hacer una prueba de regresión visual y asegurarnos de que se vea exactamente como esperábamos que se viera. Y a lo largo de los años, hay muchas herramientas que apoyan este tipo de automation del navegador. Normalmente son sinónimo de pruebas de extremo a extremo, de nuevo desde este enfoque, se dice que la UI solo se prueba en pruebas de extremo a extremo. Tenemos Selenium desde hace 20 años, tenemos WebDriver.io que es muy popular. Estos no son los únicos. Y recientemente, en los últimos años, tenemos herramientas más modernas como Puppeteer y Cypress, y probablemente la última y mejor adición es PlayWrite junto con la versión más nueva de Selenium. Y discutiremos cómo son diferentes. Entonces, para lograr nuestro segundo punto final, queremos asegurarnos de que probamos en un navegador real. El tercer punto para hacer esta testing zen y divertida, queremos que sea eficiente. Queremos asegurarnos de que escribimos la prueba y que se ejecutan rápido y fácil de cambiar y fácil de hacer todas las cosas que necesitamos encima de ellas. Y para entender cómo podemos lograr la eficiencia, vamos a acercarnos un poco al navegador. Esto es lo que conocemos como el navegador, pero en realidad es el proceso de renderizado del navegador. Esto es lo que vemos en la pantalla. Tiene JavaScript, y ahora también tiene workers. Pero bajo el capó, el navegador tiene muchos otros procesos como los que ves aquí. Tenemos el proceso del service worker. Tenemos el proceso de red. Tenemos todos los procesos del navegador, cosas que controlan la security, la ubicación, las entradas, obteniendo la entrada del sistema operativo y enviándola al navegador, y muchas otras partes. La primera generación, o lo que era común para probar los procesos,
Comments