Maestro & Expo: Creando el Futuro de Pruebas e2e Eficientes

Rate this content
Bookmark

Si nunca has oído hablar de Maestro, te mostraré por qué creo que es la mejor herramienta de pruebas e2e.

Y si ya lo conoces, compartiré algunos consejos para una integración efectiva en tu flujo de trabajo.

Esta es una charla educativa sobre Maestro donde cubriré cuándo, qué y cómo probar. A menudo veo a personas reconstruyendo para cada ejecución. Así que también profundizaré en algunas especificidades de Expo (como eas update & build:list) que te permitirán optimizar tiempo y costo y lograr un CI/CD de última generación con Maestro.

This talk has been presented at React Advanced 2024, check out the latest edition of this React Conference.

Mathieu Fedrigo
Mathieu Fedrigo
20 min
28 Oct, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Las pruebas de extremo a extremo son importantes para detectar errores difíciles de encontrar, pero pueden ser complejas y llevar mucho tiempo. El orador comparte su experiencia en YOLO apps y cómo abordaron estos problemas utilizando Maestro, una herramienta de pruebas más nueva. Maestro permite la interacción con todos los aspectos de la aplicación y ofrece una interfaz web para construir pruebas. También proporciona características como reintento automático y videos de pruebas para la resolución de problemas. El orador también discute la automatización de CI/CD usando Expo y EAS, lo que simplificó el proceso de construcción y distribución de la aplicación. Demuestran cómo EAS y MySQL Cloud se pueden usar para informes e investigación. Se muestra el poder de las pruebas de extremo a extremo, con un tiempo de CI/CD rápido y pruebas gratuitas y actualizaciones de EAS. Maestro tiene algunas limitaciones, pero ofrece una escritura de pruebas fácil y 100 pruebas gratuitas por mes, con pruebas adicionales disponibles a un costo.

1. Introduction to End-to-End Testing

Short description:

Las pruebas end-to-end son como una prueba de manejo para tu aplicación, examinándola en su totalidad y detectando errores difíciles de encontrar. Sin embargo, configurar y usar pruebas end-to-end puede ser complejo, poco confiable y llevar mucho tiempo. Mi charla de hoy compartirá mi experiencia en YOLO apps y cómo abordé estos problemas para lograr la configuración perfecta de pruebas end-to-end.

Hola, espero que estés bien. Soy Mathieu y es un placer estar aquí hoy. Voy a hablar sobre las pruebas end-to-end. Así que piensa en tu aplicación como un coche deportivo de alto rendimiento. No solo probarías el motor o los frenos o la dirección de forma aislada. Querrías sacarlo a dar una vuelta, ver cómo se desempeña en pistas en condiciones reales. Bueno, esa es la esencia de las pruebas end-to-end. Es como tu prueba de manejo. Examina tu aplicación en su totalidad, detectando esos errores difíciles de encontrar, especialmente en el código nativo, que las pruebas unitarias o de interacción podrían pasar por alto.

Tal vez hayas oído hablar de la pirámide de pruebas o el trofeo de pruebas. Siempre mencionan las pruebas end-to-end, pero la realidad es que he trabajado con diferentes clientes en YOLO apps y rara vez vi una buena configuración de pruebas end-to-end. Y la mayoría de las veces no hay pruebas end-to-end en absoluto. Y creo que eso se debe a que hay muchos puntos problemáticos.

Así que, en primer lugar, las pruebas end-to-end para mí siguen siendo complejas de configurar y usar. Me tomó más de una semana configurarlo con algunas herramientas. Las pruebas pueden ser poco confiables y va a ser molesto configurarlo correctamente en CI-CD porque tienes que construir la aplicación, iniciar los simuladores, tener el entorno adecuado. Y por último, pero no menos importante, casi siempre es lento y costoso ejecutarlas regularmente. Así que, mi charla de hoy es sobre mi experiencia en YOLO apps y cómo intenté solucionar todos esos problemas para tener la configuración perfecta de pruebas end-to-end.

2. Explorando Appium, Detox y Maestro

Short description:

Probé Appium, una poderosa herramienta de pruebas end-to-end de caja negra. Sin embargo, tiene documentación compleja, una curva de aprendizaje pronunciada y no tiene soporte CI-CD. Luego, exploré Detox, una herramienta de pruebas de React Native más simple pero menos poderosa. Ninguna de estas herramientas abordó los puntos problemáticos que mencioné anteriormente. Finalmente, descubrí Maestro, una herramienta más nueva con una comunidad genial y documentación útil. Voy a demostrar cómo funciona Maestro usando una aplicación simple y Maestro Studio, una interfaz web para construir pruebas.

Primero, probé Appium. Es una herramienta de pruebas end-to-end de caja negra. No hay necesidad de empaquetar o instalar nada dentro de tu aplicación. Simplemente le das la app, el APK. Y creo que es la herramienta más establecida y también la más poderosa. Appium puede replicar casi cualquier cosa que un usuario real pueda hacer.

Pero para mí también hay muchos inconvenientes. Es realmente complejo entender la documentación, configurarlo correctamente. Pasé mucho tiempo para tener mi primera prueba en funcionamiento. Hay una gran curva de aprendizaje y tampoco hay soporte CI-CD. Así que, tendrás que manejar los simuladores, la construcción, y así sucesivamente.

Luego probé Detox, que es una herramienta de pruebas end-to-end para React Native. Personalmente creo que son bastante similares. Quiero decir, Detox es un poco más simple y fácil de usar en general, pero por otro lado es menos poderosa. Y después de usar esas dos herramientas, me di cuenta de que todavía no es algo que vería a mi equipo y a mí usar todos los días. No abordan el punto problemático que mencioné anteriormente. Así que tuve que seguir investigando y finalmente descubrí Maestro. Maestro es una herramienta más nueva. Funciona en React Native y en todas las demás plataformas móviles. Creo que hay una comunidad realmente genial a su alrededor. Tienen un Slack donde responden preguntas muy rápidamente, por ejemplo. Pero la documentación es muy buena y en lugar de hablar de ello, voy a mostrarte cómo funciona.

Así que, aquí tengo una aplicación simple. Tengo un botón de información que abre el modal y puedo deslizar este modal hacia abajo y esta es la prueba que voy a intentar hacer con Maestro. Este tipo de pruebas es realmente difícil de hacer sin una herramienta de pruebas end-to-end. Con una herramienta de pruebas de integración regular como React Native Testing Library, usualmente tienes que registrar la navegación. Pero verás cómo lo hago. Lo primero que vamos a hacer es usar Maestro Studio. Es una herramienta que viene incluida con Maestro y es básicamente una interfaz web donde tu simulador está incrustado y puedo pasar el cursor sobre mi simulador y algunas zonas y algunos textos serán resaltados. Esta herramienta está aquí para ayudarme a construir, para ayudarme a crear mis pruebas.

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 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.
Todos pueden escribir pruebas fácilmente
TestJS Summit 2023TestJS Summit 2023
21 min
Todos pueden escribir pruebas fácilmente
Playwright is a reliable end-to-end testing tool for modern web apps that provides one API, full isolation, fast execution, and supports multiple languages. It offers features like auto-weighting, retrying assertions, seamless testing of iframes and shadow DOM, test isolation, parallelism, and scalability. Playwright provides tools like VS Code extension, UiMode, and Trace Viewer for writing, debugging, and running tests. Effective tests prioritize user-facing attributes, use playwright locators and assertions, and avoid testing third-party dependencies. Playwright simplifies testing by generating tests, providing code generation and UI mode, and allows for easy running and debugging of tests. It helps in fixing failed tests and analyzing DOM changes, fixing locator mismatches, and scaling tests. Playwright is open source, free, and continuously growing.

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
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.
Presentando FlashList: Construyamos juntos una lista performante en React Native
React Advanced 2022React Advanced 2022
81 min
Presentando FlashList: Construyamos juntos una lista performante en React Native
Top Content
WorkshopFree
David Cortés Fulla
Marek Fořt
Talha Naqvi
3 authors
En esta masterclass aprenderás por qué creamos FlashList en Shopify y cómo puedes usarlo en tu código hoy. Te mostraremos cómo tomar una lista que no es performante en FlatList y hacerla performante usando FlashList con mínimo esfuerzo. Usaremos herramientas como Flipper, nuestro propio código de benchmarking, y te enseñaremos cómo la API de FlashList puede cubrir casos de uso más complejos y aún así mantener un rendimiento de primera categoría.Sabrás:- Breve presentación sobre qué es FlashList, por qué lo construimos, etc.- Migrando de FlatList a FlashList- Enseñando cómo escribir una lista performante- Utilizando las herramientas proporcionadas por la biblioteca FlashList (principalmente el hook useBenchmark)- Usando los plugins de Flipper (gráfico de llamas, nuestro perfilador de listas, perfilador de UI & JS FPS, etc.)- Optimizando el rendimiento de FlashList utilizando props más avanzados como `getType`- 5-6 tareas de muestra donde descubriremos y solucionaremos problemas juntos- Preguntas y respuestas con el equipo de Shopify
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.
Cómo construir una animación interactiva de “Rueda de la Fortuna” con React Native
React Summit Remote Edition 2021React Summit Remote Edition 2021
60 min
Cómo construir una animación interactiva de “Rueda de la Fortuna” con React Native
Top Content
Workshop
Oli Bates
Oli Bates
- Introducción - Cleo & nuestra misión- Lo que queremos construir, cómo encaja en nuestro producto & propósito, revisar los diseños- Comenzando con la configuración del entorno & “hola mundo”- Introducción a la animación de React Native- Paso 1: Hacer girar la rueda al presionar un botón- Paso 2: Arrastrar la rueda para darle velocidad- Paso 3: Agregar fricción a la rueda para frenarla- Paso 4 (extra): Agregar hápticos para una sensación inmersiva