Quizá No Necesitemos Pruebas de Componentes

This ad is not shown to multipass and full ticket holders
React Summit US
React Summit US 2025
November 18 - 21, 2025
New York, US & Online
The biggest React conference in the US
Learn More
In partnership with Focus Reactive
Upcoming event
React Summit US 2025
React Summit US 2025
November 18 - 21, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

Las pruebas son obligatorias y las pruebas unitarias son la base para construir un buen sistema de pruebas para nuestro proyecto. Pero para proyectos de frontend que involucran componentes, ¿cuántas pruebas unitarias se consideran eficientes y no excesivas? ¿Deberíamos usar bibliotecas adicionales como Testing Library o Vue Test Utils con Vitest para probar un componente, cuando podemos hacer lo mismo solo con Playwright? ¿Realmente es necesario realizar una prueba de componente utilizando un framework de E2E como Playwright? Descubrámoslo en mi charla.

This talk has been presented at Vue.js Live 2024, check out the latest edition of this JavaScript Conference.

Maya Shavin
Maya Shavin
26 min
25 Apr, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Las pruebas de componentes son un área gris entre las pruebas de integración y las pruebas unitarias. La aplicación de demostración se centra en el componente del carrito y en la escritura de casos de prueba para las pruebas de componente de Playwright y VTest. La primera prueba del carrito encuentra un error con el método invisible en View Test.
Available in English: We May Not Need Component Testing

1. Introducción a las pruebas de componentes

Short description:

Hola, ¿cómo estás hoy? Espero que hayas disfrutado de la conferencia hasta ahora. ¿Quizás no necesitemos pruebas de componentes, o sí? Mi nombre es Maia Chavin, una ingeniera de software senior en Microsoft Industrial AI, con más de 10 años de experiencia en desarrollo web y front-end. También soy autora publicada y experta en desarrollo de Google en tecnologías web.

Hola, ¿cómo estás hoy? Espero que hayas disfrutado de la conferencia hasta ahora. Y ahora pasemos a nuestra próxima discusión. Quizás no necesitemos pruebas de componentes, ¿o sí? En primer lugar, mi nombre es Maia Chavin. Soy una ingeniera de software senior en Microsoft Industrial AI. También he estado trabajando en la web y en el stack de front-end durante más de 10 años. Soy autora publicada con mi último libro sobre LearningView, publicado por O'Reilly. Así que si estás interesado en LearningView, ViewTree más TypeScript, echa un vistazo a mi libro. También soy una Embajadora Nativa de la Nube, una organizadora de la comunidad habilitada para Vue.js y una experta en desarrollo de Google en tecnologías web. Puedes consultar mi publicación en el blog en maiachavin.com o seguirme en Maia Chavin en Twitter o LinkedIn.

2. Understanding Component Testing

Short description:

Demos un paso atrás y recapitulemos sobre las pruebas. Tenemos tres capas de pruebas: prueba unitaria, prueba de integración y prueba de extremo a extremo. Las pruebas de componentes se pueden dividir en dos tipos: pruebas de componentes en pequeño (pruebas unitarias) y pruebas de componentes en grande (pruebas de integración o extremo a extremo). Las pruebas de componentes son un área gris entre las pruebas de integración y las pruebas unitarias, dependiendo del escenario y los objetivos de las pruebas. En nuestra aplicación de demostración, compararemos VTest con VueTestUtil y las pruebas de componentes de Playwright.

Y eso es suficiente sobre mí. Demos un paso atrás y recapitulemos sobre las pruebas. Entonces, las pruebas, el parámetro de las pruebas es el parámetro más esencial que utilizaremos para construir cualquier sistema de pruebas y cualquier aplicación, ¿verdad? Entonces, para este parámetro de pruebas, tenemos tres capas: prueba unitaria, prueba de integración y prueba de extremo a extremo. La prueba unitaria se considera la base más sólida para todas nuestras pruebas de aplicación, que incluye todas las lógicas independientes y probables que conforman nuestro sistema, nuestras aplicaciones. Luego, la prueba de integración es probar el flujo de datos entre diferentes módulos de lógica probables cuando los conectas juntos, para asegurarte de que nada se rompa en el medio. Y finalmente, la prueba de extremo a extremo es la más costosa, con muy pocas pruebas. Puedes ver en la parte superior del parámetro. Es costoso, pero también es muy importante simular la experiencia de los usuarios paso a paso sobre cómo interactúan con la aplicación antes de hacer la implementación.

Y así llegamos a la siguiente pregunta. ¿A qué pertenece la prueba de componentes? Hemos estado hablando mucho sobre la prueba de componentes, sobre cómo podemos hacerlo con Playwright, cómo lo hacemos con Cypress. Pero, ¿qué es la prueba de componentes y a qué pertenece? Bueno, la prueba de componentes en muchos aspectos tiene muchos significados diferentes. En el backend, simplemente significa un fragmento de código, un módulo, un bloque de código en el sistema que necesitas probar de forma independiente. Mientras tanto, en el frontend, se vuelve más complejo. Entonces, de hecho, la prueba de componentes se puede dividir en dos tipos. La prueba de componentes en pequeño, que es la prueba modular, o podemos llamarla prueba de unidad. La prueba de componentes en grande significa que estás validando un componente con la ayuda de otros componentes, como una galería, que depende de los componentes de elementos de la galería para renderizar y mostrar la lista completa de elementos. Lo que significa que cuando probamos este elemento de galería, no solo probamos el componente individual aislado del elemento de galería, lo siento, galería. Tenemos que probarlo junto con los elementos de la galería para ver si la entrada y salida de un componente serán necesarios para las pruebas. Otro componente vendrá sin problemas, y también debemos preocuparnos por la interacción del usuario, y así sucesivamente. Por eso, podemos decir que la prueba de componentes se divide en dos tipos. La prueba de componentes en pequeño, prueba de unidad. La prueba de componentes en grande, prueba de integración o prueba de extremo a extremo. En la prueba de extremo a extremo, realmente depende de cómo definas el flujo de tu prueba de componente individual que estás buscando.

Entonces, lo que significa en la pirámide, volvamos a la pregunta que hicimos antes, ¿a qué pertenece la prueba de componentes? En la pirámide de pruebas, es un área gris. De hecho, es un área gris entre la prueba de integración y la prueba de unidad. Realmente depende del escenario y los objetivos de las pruebas para decidir si la prueba de componentes que estás tratando de lograr es una prueba de integración o una prueba de unidad. Y eso nos lleva a nuestra próxima pregunta. ¿Cuándo vamos a escribir una prueba de unidad para el componente y cuándo vamos a escribir una prueba de integración para cada componente, o ambas? ¿Y qué tecnología debemos usar para cada escenario? Para eso, vamos a nuestra aplicación de demostración. Entonces, en nuestra aplicación de demostración, vamos a tener una aplicación muy simple, una tienda de pizzas, que permite a los usuarios agregar al carrito y luego actualizar el carrito, y también buscar y actualizar la URL. Para la aplicación de demostración, vamos a realizar la prueba, la comparación entre dos métodos. El primero es VTest con VueTestUtil, y el segundo es la prueba de componentes de Playwright.

3. Demo App and Cart Component

Short description:

Aquí está el paquete que necesitas instalar en tu aplicación de demostración para las pruebas. Tenemos muchos componentes, pero en esta charla nos centraremos en el componente del carrito y el componente de búsqueda. El componente del carrito es desplegable y te permite eliminar elementos. Escribiremos casos de prueba para las pruebas de componentes de Playwright y VTest, cubriendo escenarios como la visualización del desplegable y las acciones de eliminación. En la demostración, examinamos las implementaciones del componente del carrito, incluyendo el botón de desplegable, el popover y el botón de eliminación. VTest se puede configurar para simulaciones del DOM.

Y aquí está el paquete que necesitas instalar en tu aplicación de demostración para tener el entorno de pruebas funcionando, el entorno de pruebas funcionando. Así que VTest con VTestUtil, JSTORM, para Playwright, tenemos las pruebas de componentes experimentales de Playwright para Vue y el paquete principal de Playwright. Y con eso, estamos listos para nuestra aplicación de demostración.

Así que echemos un vistazo a nuestra aplicación de demostración. Tenemos muchos componentes en la aplicación de demostración. Cada uno de los componentes aquí tendrá componibles relevantes para trabajar, para obtener datos y actualizar datos y transferir datos entre ellos. No vamos a revisar todos estos componentes. No vamos a escribir pruebas para todos estos componentes. Eso es tarea para casa. En esta charla, vamos a ver el componente del carrito y el componente de búsqueda.

Entonces, para el componente del carrito, tenemos varias características. El componente del carrito, como sabrás, es desplegable, lo que significa que se puede colapsar. Cada vez que haces clic en el carrito, mostrará un pequeño popover y te dirá cuántos elementos tienes en el carrito. Y te permite eliminar un elemento de tu carrito o eliminar un elemento. Y los datos que tomará del componible externo pueden usar el carrito.

De acuerdo, así que el caso de prueba que vamos a escribir aquí para cada uno de los métodos, las pruebas de componentes de Playwright y VTest. Vamos a escribir los tres escenarios, visualización del desplegable con o sin elemento y acciones de eliminación. Bien. Ahora vamos a la demostración. Muy bien. Entonces, en esta demostración, echamos un vistazo a las implementaciones del componente del carrito. Así que aquí tenemos un botón de desplegable. Y el botón mostrará si se debe mostrar el popover o no. Así que aquí tenemos el popover. Y dentro del popover, también tenemos otro if y else, que es si mostrar sin elemento o la lista de elementos. Y tenemos un botón para eliminar uno. Muy sencillo. Así que cuando hacemos la prueba con VTest, cuando instalamos VTest, podemos tener una configuración de VTest en el entorno dentro de aquí.

4. Writing the First Cart Test

Short description:

Podemos cambiar el entorno para las simulaciones del DOM y excluir las pruebas de extremo a extremo. Escribamos la primera prueba del carrito montando el componente, alternando la visualización y comprobando si el popover está invisible. Nos encontramos con un error con el método invisible en View Test. A continuación, renderizamos el elemento del carrito simulando los elementos en el carrito y realizando acciones de agregar, eliminar y limpiar.

O podemos cambiar nuestro entorno para las simulaciones del DOM. Y podemos excluir la prueba de extremo a extremo de la lista para que el ejecutor de VTest no la tome, no intente ejecutar la prueba de extremo a extremo por accidente.

De acuerdo. Así que escribamos nuestra primera prueba del carrito. Entonces aquí, puedes ver que escribí, adelante y escribí todos los selectores, también los elementos simulados del carrito. Y también puse algunos espías para el uso del carrito. Y, por supuesto, después tengo que limpiar. Esto me permite cambiar las diferentes implementaciones simuladas para el gancho del uso del carrito dependiendo del escenario que quiero probar.

Para alternar la visualización, lo primero que siempre debemos hacer es montar el componente. Así que hacemos el montaje, y simplemente, muy simple, montamos el carrito. Y luego alternamos la visualización, ¿verdad? Así que vamos a obtener el selector del botón de alternar, ¿de acuerdo? Y luego vamos a - en primer lugar, vamos a comprobar que no va a mostrar nada, que no va a mostrar el popover. Así que vamos a hacer - no a la espera, esperamos que el envoltorio encuentre el selector del carrito como no es para ser - no como es. Debería ser invisible para ser formado. Sí. De acuerdo. Y luego haremos away trigger. Hacemos clic en el botón. Y esperamos que sea verdadero, pero debido a un error aquí con el método invisible en la prueba de vista, esperemos que lo solucionen pronto. Haremos attribute refine style y nos aseguraremos de que se vuelva vacío, porque cuando se muestre, agregará el estilo de display none como estilo en línea al componente donde no se muestra. Y eso es todo. Alternamos la visualización. Ahora pasemos al siguiente paso donde vamos a renderizar el elemento del carrito. Para esto, tenemos que modificar el carrito para tener algún elemento para que podamos ver la lista de elementos agregados. Así que en este, primero vamos a simular los elementos que compra el carrito y vamos a tomar el total de la longitud. Y también tenemos que eliminar no solo, vamos a hacer v, vamos a hacer agregar, también v, v.n. Vamos a limpiar con v.n. Y, por supuesto, actualizar no v.n. Realmente no nos importa esto.

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

Solicitudes de Red con Cypress
TestJS Summit 2021TestJS Summit 2021
33 min
Solicitudes de Red con Cypress
Top Content
Cecilia Martinez, a technical account manager at Cypress, discusses network requests in Cypress and demonstrates commands like cydot request and SCI.INTERCEPT. She also explains dynamic matching and aliasing, network stubbing, and the pros and cons of using real server responses versus stubbing. The talk covers logging request responses, testing front-end and backend API, handling list length and DOM traversal, lazy loading, and provides resources for beginners to learn Cypress.
Pruebas de Aplicaciones Web con Playwright
TestJS Summit 2022TestJS Summit 2022
20 min
Pruebas de Aplicaciones Web con Playwright
Top Content
Testing web applications with Playwright, a reliable end-to-end testing tool. Playwright offers fast execution, powerful tooling, and support for multiple languages. It provides precise selectors, web-first assertions, and code generation for easy testing. Playwright also offers features like live debugging, tracing, and running tests on CI. The future of Playwright aims to make testing easy and fun, with a focus on creating frustration-free web experiences.
Pruebas de ciclo completo con Cypress
TestJS Summit 2022TestJS Summit 2022
27 min
Pruebas de ciclo completo con Cypress
Top Content
Cypress is a powerful tool for end-to-end testing and API testing. It provides instant feedback on test errors and allows tests to be run inside the browser. Cypress enables testing at both the application and network layers, making it easier to reach different edge cases. With features like AppActions and component testing, Cypress allows for comprehensive testing of individual components and the entire application. Join the workshops to learn more about full circle testing with Cypress.
Desarrollo Efectivo de Pruebas
TestJS Summit 2021TestJS Summit 2021
31 min
Desarrollo Efectivo de Pruebas
Top Content
This Talk introduces Test Effective Development, a new approach to testing that aims to make companies more cost-effective. The speaker shares their personal journey of improving code quality and reducing bugs through smarter testing strategies. They discuss the importance of finding a balance between testing confidence and efficiency and introduce the concepts of isolated and integrated testing. The speaker also suggests different testing strategies based on the size of the application and emphasizes the need to choose cost-effective testing approaches based on the specific project requirements.
Playwright Test Runner
TestJS Summit 2021TestJS Summit 2021
25 min
Playwright Test Runner
Top Content
The Playwright Test Runner is a cross-browser web testing framework that allows you to write tests using just a few lines of code. It supports features like parallel test execution, device emulation, and different reporters for customized output. Code-Gen is a new feature that generates code to interact with web pages. Playwright Tracing provides a powerful tool for debugging and analyzing test actions, with the ability to explore trace files using TraceViewer. Overall, Playwright Test offers installation, test authoring, debugging, and post-mortem debugging capabilities.

Workshops on related topic

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
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
Workshop
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.
Monitoreo 101 para Desarrolladores de React
React Summit US 2023React Summit US 2023
107 min
Monitoreo 101 para Desarrolladores de React
Top Content
WorkshopFree
Lazar Nikolov
Sarah Guthals
2 authors
Si encontrar errores en tu proyecto frontend es como buscar una aguja en un pajar de código, entonces el monitoreo de errores de Sentry puede ser tu detector de metales. Aprende los conceptos básicos del monitoreo de errores con Sentry. Ya sea que estés ejecutando un proyecto de React, Angular, Vue, o simplemente JavaScript “vainilla”, mira cómo Sentry puede ayudarte a encontrar el quién, qué, cuándo y dónde detrás de los errores en tu proyecto frontend.
Nivel de la masterclass: Intermedio
Testing Web Applications Using Cypress
TestJS Summit - January, 2021TestJS Summit - January, 2021
173 min
Testing Web Applications Using Cypress
Top Content
Workshop
Gleb Bahmutov
Gleb Bahmutov
Esta masterclass te enseñará los conceptos básicos para escribir pruebas end-to-end útiles utilizando Cypress Test Runner.
Cubriremos la escritura de pruebas, cubriendo cada característica de la aplicación, estructurando pruebas, interceptando solicitudes de red y configurando los datos del backend.
Cualquiera que conozca el lenguaje de programación JavaScript y tenga NPM instalado podrá seguir adelante.
Mejores Prácticas para Escribir y Depurar Pruebas de Cypress
TestJS Summit 2023TestJS Summit 2023
148 min
Mejores Prácticas para Escribir y Depurar Pruebas de Cypress
Top Content
Workshop
Filip Hric
Filip Hric
Probablemente conozcas la historia. Has creado un par de pruebas y, como estás utilizando Cypress, lo has hecho bastante rápido. Parece que nada te detiene, pero luego - prueba fallida. No fue la aplicación, no fue un error, la prueba fue... ¿inestable? Bueno sí. El diseño de la prueba es importante sin importar la herramienta que utilices, incluyendo Cypress. La buena noticia es que Cypress tiene un par de herramientas bajo su cinturón que pueden ayudarte. Únete a mí en mi masterclass, donde te guiaré lejos del valle de los anti-patrones hacia los campos de pruebas estables y siempre verdes. Hablaremos sobre los errores comunes al escribir tu prueba, así como depurar y revelar problemas subyacentes. Todo con el objetivo de evitar la inestabilidad y diseñar pruebas estables.