Veo lo que está sucediendo: Pruebas visuales para tus componentes

Rate this content
Bookmark

Muchos marcos de trabajo web modernos utilizan componentes como sus bloques de construcción.


En esta charla, mostraré las pruebas de componentes utilizando Cypress, y cuando digo "mostrar", lo digo literalmente. Verás el componente ejecutándose dentro de un navegador real, interactuarás con el componente como un usuario real y podrás depurar el componente utilizando las herramientas de desarrollo del navegador real. Por último, repasaré las opciones actuales de código abierto y comerciales para probar visualmente los estilos y la representación del componente.

FAQ

Cypress es un corredor de pruebas de código abierto con licencia MIT. Se utiliza para montar componentes de React directamente y facilitar la escritura de pruebas de componentes, permitiendo interactuar con la aplicación como lo haría un usuario real.

Para probar visualmente un componente en Cypress, se puede utilizar un plugin gratuito llamado captura de imagen de Cypress. Este plugin permite tomar y comparar imágenes del DOM renderizado para asegurar que los componentes se visualicen correctamente tras cambios en el código.

Cypress incluye un mecanismo de reintento y un panel de control para analizar el comportamiento histórico de las pruebas. Además, ofrece la posibilidad de reejecutar pruebas fallidas un número determinado de veces para manejar la inestabilidad.

Cypress se puede configurar para ejecutar pruebas utilizando Docker, asegurando que todos los entornos de prueba sean consistentes. Además, permite publicar una comprobación de estado de GitHub en la captura de pantalla para facilitar la revisión de diferencias visuales en las solicitudes de extracción.

Gleb sugiere usar pruebas visuales donde las computadoras pueden verificar si los componentes se ven 'exactamente igual' píxel por píxel como antes de los cambios. Esto es útil para identificar impactos visuales no intencionados en otros componentes o en la estructura general de la aplicación.

La principal diferencia es que Cypress está específicamente dirigido a pruebas de extremo a extremo con un robusto sistema de depuración y soporte multi-navegador. Puppeteer y Jest pueden requerir combinación de herramientas y no ofrecen un sistema integrado igualmente robusto.

Gleb Bahmutov
Gleb Bahmutov
35 min
18 Jun, 2021

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Gleb Akhmetov explica cómo probar visualmente los componentes de React, enfatizando la importancia de abordar el cambio climático y la colaboración. Discute las pruebas de componentes, el estilo y los desafíos de los cambios de CSS. Gleb destaca el uso de capturas de imagen para las pruebas visuales y la importancia de controlar los datos para obtener resultados precisos. También habla sobre el uso de Docker para pruebas visuales consistentes y el soporte para múltiples navegadores. Cypress se enfoca en pruebas sin fallos y tiene planes de reintento de pruebas y nuevas características en la hoja de ruta.

1. Introducción a las pruebas visuales de componentes de React

Short description:

En esta parte, Gleb Akhmetov, VP de Ingeniería en Cypress Atayo, explica cómo probar visualmente los componentes de React. Enfatiza la importancia de tomar medidas para abordar el cambio climático y fomenta la colaboración. Gleb luego presenta una aplicación de React, específicamente una aplicación de Sudoku, y discute su estructura y componentes.

Hola a todos. Gracias por invitarme. Soy Gleb Akhmetov, VP de Ingeniería en Cypress Atayo, y les voy a contar cómo probar visualmente sus componentes de React. El título de mi charla es, Veo lo que está sucediendo. Y a lo largo de mi presentación, verán lo que está sucediendo.

Antes de comenzar, solo una diapositiva rápida. Nuestro planeta todavía está en peligro inminente a pesar del COVID. Entonces, si no cambiamos nuestra política climática, vamos a extinguirnos. Así que el momento de actuar es realmente ayer. Pueden cambiar sus vidas, pero también deberían unirse a una organización porque no podemos hacerlo solos. Tenemos que trabajar juntos.

Bien, tomemos una aplicación de React. En este caso, es un Sudoku. Realmente me gusta esta aplicación porque se ve bien, se juega bien y tiene un estilo muy bueno. Incluso tiene estilos responsivos para que puedan ver cómo cambia de escritorio a tableta a teléfono. Esta aplicación es una aplicación de React. Y está construida internamente a partir de componentes de React. Entonces, si miramos la aplicación y miramos el código fuente, podemos ver archivos individuales. E incluso por el nombre, podemos darnos cuenta de que, por ejemplo, el footer es el componente footer, el header es el componente header, y así sucesivamente. Si tenemos instaladas las herramientas de desarrollo de React en nuestro navegador, podemos pasar el cursor sobre la lista de componentes a la izquierda y ver cada componente y dónde se presenta en el DOM a la derecha. Podemos ver el código fuente. Es una aplicación típica de React. El archivo index.js tiene un componente app que renderiza. El componente app importa el componente game y lo rodea con un proveedor de contexto donde se almacenan todos los datos. El componente app también importa el archivo CSS de la aplicación con todos los estilos. El componente game es donde se encuentra la mayor parte de la lógica. Importa todos los demás componentes como header y game section status e inicializa el juego. Y luego renderiza el header, la sección del juego, el estado, el footer y para esos componentes hijos, realmente pasa diferentes controladores como props. Esta es una arquitectura de aplicación React muy estándar. Así que veamos los componentes individuales. Toman algunas entradas y producen DOM, reaccionan a eventos del usuario.

2. Pruebas de componentes y montaje en Cypress

Short description:

Veamos qué espera un componente. El componente de números muestra números del uno al nueve en la cuadrícula de Sudoku. Puede resaltar un número específico según el contexto. El componente acepta props, como onClickNumber, para manejar las interacciones del usuario. Podemos pensar en el componente de números como una unidad de código que responde a diferentes propiedades, valores de contexto y eventos del usuario. Para escribir pruebas de componentes, necesitamos instalar Cypress y Cypress React unit test. También debemos configurar Cypress para agrupar las pruebas de componentes. En el archivo de especificaciones de números, montamos el componente de números y usamos los comandos de Cypress para interactuar con él. Sin embargo, los números no se ven correctamente en comparación con una aplicación real.

Veamos qué espera un componente. Voy a hablar sobre este componente de números. Muestra números o dígitos del uno al nueve que puedo ingresar en la cuadrícula de Sudoku. Puedes ver el componente en la esquina inferior derecha. Puedes resaltar un número específico porque ese es el número que estás a punto de ingresar. El número resaltado proviene del contexto. Por lo tanto, no tienes que pasarlo a través de todos los componentes. En cambio, el componente de números simplemente lo obtiene del contexto de Sudoku y lo usa para resaltar un número.

Pero este componente de números también acepta props. Y en este caso, el componente padre pasa la propiedad onClickNumber. Cada vez que un usuario hace clic en un número, esa propiedad se asocia con el número que el usuario selecciona. Por lo tanto, realmente podemos pensar en nuestro componente de números como esta unidad de código donde alimentamos diferentes propiedades, diferentes valores de contexto y eventos de usuario como clics. Y en respuesta, el componente de números genera una vista diferente y realiza llamadas a propiedades de salida. Esta visión de los componentes como simples unidades de código no es solo esta presentación. También he compartido mi filosofía sobre los componentes como unidades en otras charlas que puedes consultar.

Entonces, escribamos pruebas de componentes. Voy a instalar Cypress, que es un corredor de pruebas de código abierto gratuito y con licencia MIT. También voy a instalar Cypress React unit test, que es un adaptador para Cypress que te permite montar componentes de React directamente. Voy a agregar Cypress React unit test al archivo de soporte de Cypress y al archivo de complementos. Esto permitirá que Cypress agrupe las especificaciones de componentes de la misma manera que tu aplicación agrupa su código. Debido a que esta es todavía una función experimental, tendré que configurar en el archivo de configuración de Cypress experimental component testing true y decirle a Cypress que mis pruebas de componentes se encuentran en la carpeta de origen, junto a los archivos de origen.

Aquí hay una especificación de números que probará los números. Importaré una función de montaje de Cypress React unit test y importaré mi componente de números desde el archivo de números. Y aquí es donde sucede la magia. Voy a montar mi componente de números usando mount numbers. Después de que se monte, que es un comando asíncrono, tomaré cada dígito, cada número del uno al nueve, y escribiré un comando Cypress contains porque luego puedo usar cualquier comando Cypress para interactuar con mi aplicación. Y es una aplicación web real completa. El componente de números se monta y se estructura y se ejecuta como una miniaplicación web dentro de Cypress, como puedes ver en esta captura de pantalla. Pero los números no se ven bien. No se parecen en nada al componente en una aplicación real.

QnA

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Depuración Web Moderna
JSNation 2023JSNation 2023
29 min
Depuración Web Moderna
Top Content
Pocos desarrolladores disfrutan depurando, y la depuración puede ser compleja para las aplicaciones web modernas debido a los múltiples marcos, lenguajes y bibliotecas utilizados. Pero, las herramientas de desarrollo han avanzado mucho en facilitar el proceso. En esta charla, Jecelyn profundizará en el estado moderno de la depuración, las mejoras en DevTools y cómo puedes usarlas para depurar tus aplicaciones de manera confiable.
Solicitudes de Red con Cypress
TestJS Summit 2021TestJS Summit 2021
33 min
Solicitudes de Red con Cypress
Top Content
Ya sea que estés probando tu UI o API, Cypress te proporciona todas las herramientas necesarias para trabajar y gestionar solicitudes de red. Esta tarea de nivel intermedio demuestra cómo usar los comandos cy.request y cy.intercept para ejecutar, espiar y simular solicitudes de red mientras pruebas tu aplicación en el navegador. Aprende cómo funcionan los comandos, así como los casos de uso para cada uno, incluyendo las mejores prácticas para probar y simular tus solicitudes de red.
Testing Pyramid Makes Little Sense, What We Can Use Instead
TestJS Summit 2021TestJS Summit 2021
38 min
Testing Pyramid Makes Little Sense, What We Can Use Instead
Top Content
Featured Video
Gleb Bahmutov
Roman Sandler
2 authors
The testing pyramid - the canonical shape of tests that defined what types of tests we need to write to make sure the app works - is ... obsolete. In this presentation, Roman Sandler and Gleb Bahmutov argue what the testing shape works better for today's web applications.
El Futuro de las Herramientas de Rendimiento
JSNation 2022JSNation 2022
21 min
El Futuro de las Herramientas de Rendimiento
Top Content
Nuestra comprensión del rendimiento y la experiencia del usuario ha evolucionado mucho a lo largo de los años. Las herramientas de desarrollo web necesitan evolucionar de manera similar para asegurarse de que sean centradas en el usuario, accionables y contextuales donde se refiere a las experiencias modernas. En esta charla, Addy te guiará a través de cómo Chrome y otros han estado pensando en este problema y qué actualizaciones han estado haciendo a las herramientas de rendimiento para reducir la fricción para construir grandes experiencias en la web.
Pruebas de ciclo completo con Cypress
TestJS Summit 2022TestJS Summit 2022
27 min
Pruebas de ciclo completo con Cypress
Top Content
Cypress ha tomado al mundo por sorpresa al traer una herramienta fácil de usar para pruebas de extremo a extremo. Sus capacidades han demostrado ser útiles para crear pruebas estables para aplicaciones de frontend. Pero las pruebas de extremo a extremo son solo una pequeña parte de los esfuerzos de prueba. ¿Qué pasa con tu API? ¿Qué pasa con tus componentes? Bueno, en mi charla me gustaría mostrarte cómo podemos comenzar con pruebas de extremo a extremo, profundizar con pruebas de componentes y luego subir a probar nuestra API, circ
Desarrollo Efectivo de Pruebas
TestJS Summit 2021TestJS Summit 2021
31 min
Desarrollo Efectivo de Pruebas
Top Content
Los desarrolladores quieren dormir tranquilos sabiendo que no rompieron la producción. Las empresas quieren ser eficientes para satisfacer las necesidades de sus clientes más rápido y obtener una ventaja competitiva antes. TODOS queremos ser coste efectivos... o debería decir... ¡PRUEBA EFECTIVA!¿Pero cómo hacemos eso?¿Nos sirve bien la terminología de "unidad" e "integración"?¿O es hora de un cambio? ¿Cuándo deberíamos usar cada estrategia para maximizar nuestra "efectividad de prueba"?¡En esta charla te mostraré una nueva forma de pensar sobre las pruebas coste efectivas con nuevas estrategias y nuevos términos de prueba!¡Es hora de ir MÁS PROFUNDO!

Workshops on related topic

React, TypeScript y TDD
React Advanced Conference 2021React Advanced Conference 2021
174 min
React, TypeScript y TDD
Top Content
Featured WorkshopFree
Paul Everitt
Paul Everitt
ReactJS es extremadamente popular y, por lo tanto, ampliamente soportado. TypeScript está ganando popularidad y, por lo tanto, cada vez más soportado.

¿Los dos juntos? No tanto. Dado que ambos cambian rápidamente, es difícil encontrar materiales de aprendizaje precisos.

¿React+TypeScript, con los IDEs de JetBrains? Esa combinación de tres partes es el tema de esta serie. Mostraremos un poco sobre mucho. Es decir, los pasos clave para ser productivo, en el IDE, para proyectos de React utilizando TypeScript. En el camino, mostraremos el desarrollo guiado por pruebas y enfatizaremos consejos y trucos en el IDE.
Diseñando Pruebas Efectivas con la Biblioteca de Pruebas de React
React Summit 2023React Summit 2023
151 min
Diseñando Pruebas Efectivas con la Biblioteca de Pruebas de React
Top Content
Featured Workshop
Josh Justice
Josh Justice
La Biblioteca de Pruebas de React es un gran marco para las pruebas de componentes de React porque responde muchas preguntas por ti, por lo que no necesitas preocuparte por esas preguntas. Pero eso no significa que las pruebas sean fáciles. Todavía hay muchas preguntas que tienes que resolver por ti mismo: ¿Cuántas pruebas de componentes debes escribir vs pruebas de extremo a extremo o pruebas de unidad de nivel inferior? ¿Cómo puedes probar una cierta línea de código que es difícil de probar? ¿Y qué se supone que debes hacer con esa persistente advertencia de act()?
En esta masterclass de tres horas, presentaremos la Biblioteca de Pruebas de React junto con un modelo mental de cómo pensar en el diseño de tus pruebas de componentes. Este modelo mental te ayudará a ver cómo probar cada bit de lógica, si debes o no simular dependencias, y ayudará a mejorar el diseño de tus componentes. Te irás con las herramientas, técnicas y principios que necesitas para implementar pruebas de componentes de bajo costo y alto valor.
Tabla de contenidos- Los diferentes tipos de pruebas de aplicaciones de React, y dónde encajan las pruebas de componentes- Un modelo mental para pensar en las entradas y salidas de los componentes que pruebas- Opciones para seleccionar elementos DOM para verificar e interactuar con ellos- El valor de los mocks y por qué no deben evitarse- Los desafíos con la asincronía en las pruebas de RTL y cómo manejarlos
Requisitos previos- Familiaridad con la construcción de aplicaciones con React- Experiencia básica escribiendo pruebas automatizadas con Jest u otro marco de pruebas unitarias- No necesitas ninguna experiencia con la Biblioteca de Pruebas de React- Configuración de la máquina: Node LTS, Yarn
Cómo empezar con Cypress
TestJS Summit 2022TestJS Summit 2022
146 min
Cómo empezar con Cypress
Featured WorkshopFree
Filip Hric
Filip Hric
La web ha evolucionado. Finalmente, también lo ha hecho el testing. Cypress es una herramienta de testing moderna que responde a las necesidades de testing de las aplicaciones web modernas. Ha ganado mucha popularidad en los últimos años, obteniendo reconocimiento a nivel mundial. Si has estado esperando aprender Cypress, ¡no esperes más! Filip Hric te guiará a través de los primeros pasos sobre cómo empezar a usar Cypress y configurar tu propio proyecto. La buena noticia es que aprender Cypress es increíblemente fácil. Escribirás tu primer test en poco tiempo y luego descubrirás cómo escribir un test de extremo a extremo completo para una aplicación web moderna. Aprenderás conceptos fundamentales como la capacidad de reintentar. Descubre cómo trabajar e interactuar con tu aplicación y aprende cómo combinar pruebas de API y de UI. A lo largo de todo este masterclass, escribiremos código y realizaremos ejercicios prácticos. Saldrás con una experiencia práctica que podrás aplicar a tu propio proyecto.
Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
React Summit 2022React Summit 2022
117 min
Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
Top Content
WorkshopFree
Yevheniia Hlovatska
Yevheniia Hlovatska
A diferencia de las pruebas unitarias, las pruebas de extremo a extremo buscan interactuar con su aplicación tal como lo haría un usuario real. Y como todos sabemos, puede ser bastante desafiante. Especialmente cuando hablamos de aplicaciones móviles.
Las pruebas dependen de muchas condiciones y se consideran lentas e inestables. Por otro lado, las pruebas de extremo a extremo pueden dar la mayor confianza de que su aplicación está funcionando. Y si se hace correctamente, puede convertirse en una herramienta increíble para aumentar la velocidad del desarrollador.
Detox es un marco de pruebas de extremo a extremo en caja gris para aplicaciones móviles. Desarrollado por Wix para resolver el problema de la lentitud e inestabilidad y utilizado por React Native en sí como su herramienta de pruebas E2E.
Únete a mí en esta masterclass para aprender cómo hacer que tus pruebas de extremo a extremo móviles con Detox sean excelentes.
Prerrequisitos- iOS/Android: MacOS Catalina o más reciente- Solo Android: Linux- Instalar antes de la masterclass
Masterclass de Pruebas de API con Postman
TestJS Summit 2023TestJS Summit 2023
48 min
Masterclass de Pruebas de API con Postman
Top Content
WorkshopFree
Pooja Mistry
Pooja Mistry
En el panorama siempre en evolución del desarrollo de software, garantizar la fiabilidad y funcionalidad de las API se ha vuelto primordial. "Pruebas de API con Postman" es una masterclass completa diseñada para equipar a los participantes con los conocimientos y habilidades necesarios para sobresalir en las pruebas de API utilizando Postman, una herramienta poderosa ampliamente adoptada por profesionales en el campo. Esta masterclass profundiza en los fundamentos de las pruebas de API, avanza a técnicas de prueba avanzadas y explora la automatización, las pruebas de rendimiento y el soporte multiprotocolo, proporcionando a los asistentes una comprensión holística de las pruebas de API con Postman.
Únete a nosotros para esta masterclass para desbloquear todo el potencial de Postman para las pruebas de API, agilizar tus procesos de prueba y mejorar la calidad y fiabilidad de tu software. Ya seas un principiante o un probador experimentado, esta masterclass te equipará con las habilidades necesarias para sobresalir en las pruebas de API con Postman.
Pruebas de Aplicaciones Web utilizando Cypress
TestJS Summit - January, 2021TestJS Summit - January, 2021
173 min
Pruebas de Aplicaciones Web utilizando Cypress
WorkshopFree
Gleb Bahmutov
Gleb Bahmutov
Este masterclass te enseñará los conceptos básicos de cómo escribir pruebas de extremo a extremo utilizando Cypress Test Runner.
Cubriremos la escritura de pruebas, abarcando todas las características de la aplicación, estructurando las pruebas, interceptando solicitudes de red y configurando los datos del backend.
Cualquier persona que conozca el lenguaje de programación JavaScript y tenga NPM instalado podrá seguir el masterclass.