Pruebas de ciclo completo con Cypress

Rate this content
Bookmark

Cypress ha causado sensación al brindar una herramienta fácil de usar para pruebas de extremo a extremo. Sus capacidades han demostrado ser útiles para crear pruebas estables para aplicaciones 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 pasar a probar nuestra API, circ

27 min
03 Nov, 2022

Video Summary and Transcription

Cypress es una poderosa herramienta para pruebas de extremo a extremo y pruebas de API. Proporciona comentarios instantáneos sobre errores de prueba y permite ejecutar pruebas dentro del navegador. Cypress permite realizar pruebas tanto en la capa de aplicación como en la capa de red, lo que facilita llegar a diferentes casos límite. Con características como AppActions y pruebas de componentes, Cypress permite realizar pruebas exhaustivas de componentes individuales y de toda la aplicación. Únete a los masterclass para aprender más sobre las pruebas de ciclo completo con Cypress.

Available in English

1. Introducción a las pruebas de ciclo completo con Cypress

Short description:

Hola a todos, soy un tester con algunas habilidades de desarrollo o un desarrollador con habilidades de testing. También soy un Embajador de Cypress y hoy hablaré sobre las pruebas de ciclo completo con Cypress. Veamos qué significa eso. Cypress brilla en las pruebas de extremo a extremo y si nunca lo has usado, te recomiendo que eches un vistazo al masterclass. También habrá un masterclass en la cumbre test.js. Sumergámonos en Cypress y cómo escribir una prueba con él.

Mi nombre es Filip y soy un tester con algunas habilidades de desarrollo o un desarrollador con habilidades de testing. No lo sé. Depende de cómo lo veas. También soy un Embajador de Cypress, lo que significa que me gusta hablar sobre Cypress y me encanta enseñar a las personas cómo usar esta increíble herramienta. Así que eso es lo que haré hoy.

El tema de la charla de hoy es las pruebas de ciclo completo con Cypress. Entonces, ¿qué significa eso? Bueno, es un término completamente inventado. Lo inventé para hacer esta charla un poco interesante y espero que le eches un vistazo. Pero tengo una idea detrás de esto que me gustaría compartir contigo. Así que déjame dibujar un círculo o un anillo. Pero no te preocupes, no te vas a morir cuando lo veas, espero. Pero espero que aprendas algo nuevo. Y sí, echemos un vistazo.

Como sabes, hay algo que se llama pirámide de testing, que no voy a dibujar aquí porque todos saben qué es. También contiene algo que podría estar en la parte superior de la pirámide, y eso es algo con lo que voy a comenzar la charla de hoy. Y eso es las pruebas de extremo a extremo. Así que al hablar de Cypress, aquí es donde Cypress brilla más y por lo que es más conocido. Así que si nunca has usado Cypress, te recomiendo que eches un vistazo al masterclass. Tengo un enlace en la parte inferior de esta diapositiva. Pero también habrá un masterclass en la cumbre test.js en solo un par de días. Así que asegúrate de echarle un vistazo si aún puedes, espero que puedas. Y nos podemos encontrar allí y puedes aprender a trabajar con Cypress conmigo. Si no puedes asistir a ese, asegúrate de visitar mi sitio web, y encontrarás uno a finales de noviembre.

Así que echemos un vistazo a Cypress y cómo puedes escribir una prueba con Cypress. En el lado derecho tengo mi Cypress ejecutándose en modo de interfaz gráfica, así que eso sería el que ejecutas con npx-cypress-open en tu terminal. Y a la izquierda, tengo una prueba que te mostraré más adelante. Quiero mostrarte esta ahora mismo, la prueba de extremo a extremo. Así que, dentro de esta prueba, estoy realizando un flujo simple.

2. Pruebas de ciclo completo y pruebas de API en Cypress

Short description:

Estoy visitando una aplicación y realizando diversas acciones como seleccionar elementos, escribir e interactuar con la página. El flujo automatiza ir a la página de inicio, crear un nuevo tablero, lista y tarjeta. Cypress proporciona comentarios instantáneos sobre errores de prueba y nos permite ejecutar pruebas dentro del navegador, aprovechando las funciones del navegador como la consola. También podemos examinar la aplicación tal como apareció durante la ejecución de la prueba, lo que facilita encontrar elementos difíciles de localizar. Cypress fomenta las pruebas de API utilizando el comando 'request'.

Estoy visitando una aplicación y luego selecciono un elemento, escribo en él, presiono enter y luego realizo algunas acciones nuevamente. Obtengo un elemento, hago clic, escribo, interactúo con mi página. Básicamente, lo que quiero hacer es ir a mi página de inicio, crear un nuevo tablero, luego crear una nueva lista y dentro de ella, crear una nueva tarjeta. Y esto es lo que el flujo automatiza.

Entonces, cada vez que cometo un error, por ejemplo, cambio mi selector para que no se encuentre y cuando guardo mi prueba, se ejecutará automáticamente. Si cometo un error durante mi prueba, obtengo este error de aserción muy claro que me explica qué sucedió realmente. En este caso, lo que sucedió realmente es que no pudo encontrar el selector porque cometí un error tipográfico y no se encontraba en ninguna parte. Cypress en realidad volverá a intentar buscar ese selector durante 4,000 milisegundos, es decir, cuatro segundos.

Esto significa que Cypress funciona muy bien para las aplicaciones que se vuelven a representar todo el tiempo y realizan algún tipo de obtención de API, etc., como hacen las aplicaciones modernas. Entonces, cuando estás probando, obtienes esta retroalimentación instantánea sobre lo que ha hecho tu prueba. Pero también, lo importante aquí es que estamos ejecutando dentro del navegador. Mientras hacemos eso, obtenemos todas las ventajas que el navegador nos proporcionará. Por ejemplo, podemos abrir una consola y ver qué está sucediendo dentro de la consola. Estoy obteniendo un par de advertencias aquí, pero no son tan importantes. Cypress aprovecha al máximo la consola y el hecho de que estamos ejecutando dentro del navegador. Entonces, cuando hago clic en alguno de mis comandos, por ejemplo, este comando de visita, Cypress imprimirá información en la consola con los detalles de ese comando. También imprimirá información para cada solicitud HTTP que se realiza con la aplicación. Así que tal vez arreglemos la prueba, la guardemos para que pase. Y también, lo que Cypress nos permite, como puedes ver, es retroceder en el tiempo y examinar la aplicación tal como se veía mientras se ejecutaba la prueba. Esto es bastante bueno, te da una idea, especialmente si estás buscando un selector que es difícil de encontrar porque el elemento aparece y luego desaparece. Esta es una herramienta realmente útil. Puedes ver diferentes llamadas a la API y Cypress te invita a ingresar a la aplicación y examinarla para conocer sus entresijos. Un área excelente para comenzar a examinar un poco más tu aplicación es realizar pruebas de API, y esta es en realidad la segunda parte de nuestro ciclo de pruebas.

Cuando realizamos pruebas de API en Cypress, podemos usar un comando llamado 'request', déjame mostrarte eso. Y cambiémoslo porque voy a mostrarte el comando de API en solo un segundo. Así que guardemos mi prueba y abrámosla en mi ejecutor de Cypress. Ups, lo siento, esa no era la prueba correcta. Queremos ejecutar las pruebas de API. Ahora lo tenemos.

3. Pruebas de API con Cypress

Short description:

Estoy utilizando el comando request para enviar una solicitud POST a la URL de la API boards. Verifico el estado de la respuesta para asegurarme de que sea 201. Creé un complemento inspirado en la comunidad de código abierto que agrega un nuevo comando a la biblioteca de Cypress llamado API. Imprime información sobre la solicitud en el navegador, incluyendo el método, la URL, el estado, el cuerpo de la solicitud y el cuerpo de la respuesta. Cypress es una excelente herramienta tanto para pruebas de ciclo completo como para pruebas de API. Podemos combinar estos dos mundos y llamar a cualquier API que deseemos.

Entonces, dentro de aquí, lo que estoy haciendo es utilizar el comando request para enviar una solicitud POST a la URL de la API boards. Como puedes ver, la sintaxis de mi prueba es bastante simple. Estoy utilizando el objeto global CY que está disponible en todo el conjunto de pruebas y estoy utilizando el comando request para enviar solicitudes API. Por supuesto, lo que estoy haciendo es enviar la API POST y aquí está el cuerpo que estoy enviando al servidor.

Ahora, cuando recibo una respuesta, utilizo el comando its y tomo el estado para asegurarme de que sea 201. ¿Cómo sé qué buscar en el estado y en el contenido de la respuesta? Bueno, la primera forma en que puedo ver eso es haciendo clic en mi comando y, como te mostré hace unos segundos, abrir la consola y examinar lo que el comando ha producido. Con mi comando its, en realidad he extraído el estado y luego verificado si el número de ese estado es 201, lo cual es cierto y mi prueba está pasando.

Esto es realmente genial, ¿verdad? Pero veo un pequeño problema aquí. Tal vez tú también lo veas. Tenemos ese gran espacio en blanco aquí que no se utiliza para nada. Eso no es muy bueno, ¿verdad? Así que lo que hice con eso es que me inspiré en la comunidad de código abierto, y en particular en Clep Bakhmuto, quien ha creado un complemento para mostrar la API en el navegador. Y he creado mi propia versión de eso. Tengo esto instalado en mi repositorio y lo que hace este complemento es agregar un nuevo comando a la biblioteca de Cypress. Se llama API y funciona exactamente igual que CY-request. Así que cuando guardo mi prueba, imprimirá la información sobre la solicitud en el navegador. Puedo ver el método, la URL, el estado e incluso el cuerpo de la solicitud y el cuerpo de la respuesta, y toda esa información. Incluso puedo copiar el contenido del cuerpo de la respuesta al portapapeles y tal vez pueda intentar escribir una prueba, así que vamos con su cuerpo y hagamos deep.equal y pegaré mi objeto aquí. Creo que eso debería funcionar. Déjame guardar eso y sí, estamos bien. Estamos probando la API con nuestro comando shoot y con la retroalimentación visual que tenemos aquí. Como dije, Cypress es conocido por las pruebas de ciclo completo y, como puedes ver, es una excelente herramienta incluso para las pruebas de API. Así que lo que podemos hacer es combinar estos dos mundos juntos. Podemos hacer pruebas de ciclo completo y pruebas de API. Y dado que todas las solicitudes que Cypress envía en realidad se envían desde Node, no desde el navegador, lo que podemos hacer es llamar a cualquier API que deseemos. De hecho, tengo una prueba aquí, déjame mostrarte esa, donde estoy probando un correo electrónico. Así que déjame abrir eso y explicarte qué está sucediendo aquí. Voy a recorrer la línea de tiempo para poder retroceder en el tiempo y guiarte a través de lo que está sucediendo. Estoy visitando una página de registro y luego lleno el correo electrónico y la contraseña y marco esta pequeña casilla de verificación. Permíteme mostrártelo.

4. Pruebas de la Capa de Aplicación con Cypress

Short description:

Esta aplicación permite a los usuarios recibir un correo electrónico de bienvenida al marcar una casilla. Con Cypress y el comando intercept, puedo probar si la aplicación está enviando los datos adecuados al servidor. También puedo manipular la respuesta del servidor, como cambiar el cuerpo, el estado y el tiempo de respuesta. Al probar las capas de red y aplicación, Cypress nos permite alcanzar diferentes casos límite. Por ejemplo, utilizando App Actions, puedo acceder al estado de la aplicación e invocar funciones que mutan el almacenamiento. Sin embargo, puede ser necesario recargar la aplicación para activar ciertas llamadas de API nuevamente.

Y esto dice envíame un correo electrónico de bienvenida. Así que lo que esta aplicación hará es enviarte un correo electrónico si marcas esa casilla de verificación. Y lo que puedo hacer, en realidad puedo probar si la aplicación está haciendo lo que debería hacer y si está enviando los datos adecuados al servidor, lo cual es genial porque ahora, para las pruebas de API, no estoy utilizando las solicitudes directas que sé cómo preparar, sino que en realidad estoy probando si la aplicación está enviando los datos adecuados al servidor y verificando si no está enviando datos corruptos o si no maneja correctamente las entradas como lo hace aquí.

Entonces, lo que Cypress y el comando intercept me permiten hacer también es verificar diferentes casos límite. No solo puedo observar una solicitud de API que ocurre, sino que también puedo cortar la respuesta del servidor y proporcionar la mía propia. Así que lo que puedo hacer, puedo cambiar el cuerpo, puedo cambiar el estado de respuesta. Incluso puedo cambiar el tiempo de respuesta, que es exactamente lo que estoy haciendo aquí. Tengo un callback y estoy manejando la respuesta para que se retrase 10 segundos. Entonces, cuando ahora guardo mi prueba, puedes ver que la solicitud de API boards está tomando tiempo y tengo este botón de recarga que se muestra en la aplicación, lo cual normalmente sería un lugar muy difícil de alcanzar y probar. Pero con Intercept, podemos mostrar eso y ver si se comporta correctamente, si aparece después de tres segundos, como debería, y si funciona correctamente. Así que podemos hacer clic en él y asegurarnos de que nuestra aplicación se recargue.

Entonces, con las pruebas de la capa de red, podemos llegar a diferentes casos límite difíciles de alcanzar. Y uno de los grandes ejemplos de cómo podemos llegar a diferentes casos límite es probando la capa de aplicación. Eso es lo que Cypress también te permite hacer, y eso es lo que quiero mostrarte. En este ejemplo, estoy utilizando algo que se llama App Actions. Así que permíteme cambiar un poco esta prueba, guardarla ahora y ejecutarla. Muy bien, lo tengo. Entonces, Cypress aprovecha al máximo el hecho de que se ejecuta en el navegador. Ya te he mostrado un par de cosas, como imprimir cosas en la consola, observar lo que la aplicación está haciendo en la red, pero también puedes echar un vistazo directamente al estado de la aplicación. Permíteme mostrarte en la aplicación que tengo este store.ts, que esta aplicación utiliza PNIA. Está escrita en Vue y para la gestión del almacenamiento utiliza este paquete pnia y utiliza este use store. Dentro de aquí tengo todo el estado o todo el estado predeterminado definido y también he definido algunas de las acciones que mutan este estado. Ahora, lo que he hecho con mi aplicación para hacerla más testeable es que siempre que estamos probando, siempre que haya Cypress en el contexto de la ventana, exponemos el use store, es decir, todo el estado de la aplicación, a la variable store en el objeto window. Entonces, lo que esto me permite hacer es acceder a las propiedades del store e incluso a las funciones que mutan el store directamente desde el contexto de la ventana. Así que en Cypress tengo este comando cyWindow que accede al objeto window y luego puedo invocar diferentes funciones. Aquí estoy invocando el store y luego invoco la función getBoardList que en realidad activa la llamada de API para obtener todos los tableros de la base de datos. Dentro de aquí también tengo una función de pausa, por lo que tal vez incluso si estás utilizando Cypress no hayas oído hablar de esa, pero es muy útil cuando estoy demostrando algo. Dentro de aquí puedo ir paso a paso y pasar al siguiente comando que es la llamada de API. Así que estoy creando un nuevo tablero, pero como puedes ver, no aparece en nuestra aplicación y esto se debe a que no tenemos algún tipo de conexión WebSocket a la base de datos o con el servidor que actualice el contenido de nuestra aplicación. Así que básicamente tendríamos que recargar la aplicación para que se active esa llamada getAPIBoards nuevamente.

5. AppActions y Pruebas de Componentes en Cypress

Short description:

Con AppActions, podemos acceder a partes ocultas de la aplicación y manipularlas para alcanzar casos límite difíciles de alcanzar. Cypress también ofrece pruebas de componentes, lo que nos permite probar diferentes estados de componentes individuales. Podemos renderizar componentes en un navegador real, interactuar con ellos y utilizar las API de Cypress para probar diferentes estados. Este enfoque nos permite lograr pruebas completas combinando pruebas de componentes con pruebas de extremo a extremo. ¡Únete a mis masterclass para aprender más!

Pero con AppActions, en realidad no tenemos que hacer eso porque invocaremos el store y luego llamaremos a la acción getBoardList que se encarga de obtener todos esos data del servidor y que es la función que se llama cada vez que abrimos la aplicación. Así que pasemos al siguiente paso. Obtenemos la ventana, obtenemos el store y ahora llamamos a getBoardList que desencadenará esta llamada a la API y nuestro tablero ahora está cargado. Así que con AppActions, podemos acceder a todo tipo de cosas. Incluso podemos acceder a las cosas que están ocultas en la aplicación. Así que permíteme comentar esto y mostrarte esto. Porque tengo algunas herramientas de API ocultas que hice para esta aplicación y ahora básicamente llamo a toggleTools para que aparezcan y tengo estas herramientas de API disponibles para mí aquí y sí, accedí a esto usando el invoke y usando el store interno. Esta es una gran ventaja en comparación con tal vez diferentes herramientas de automatización de pruebas porque, dado que se ejecuta en el navegador, tenemos acceso directo a la aplicación, a diferencia de las herramientas que controlan el navegador y acceden al navegador desde el exterior para automatizar acciones en el navegador. Ahora, por supuesto, esto tiene algunas ventajas y algunas desventajas, pero lo veo como una gran ventaja para Cypress cuando básicamente puede acceder a cualquier parte de su aplicación a la que le dé autoridad y manipularla de una manera que le ayude a alcanzar tal vez un caso límite difícil de alcanzar o alguna parte de su aplicación que podría ser difícil de configurar debido a los data o debido a otros factores. Ahora, por supuesto, Cypress es una gran herramienta para ingresar a la aplicación y probar diferentes estados y hacer que la aplicación haga cosas para que podamos probarla de una mejor manera, pero podemos ir aún más profundo y descomponer nuestra aplicación en fragmentos más pequeños. Así que Cypress ha lanzado esta increíble función llamada pruebas de componentes. Así que recientemente salió de beta, ha estado aquí durante bastante tiempo, pero con la versión de Cypress 10 llegó a toda la multitud. Así que quiero mostrarte esto porque nuestra aplicación está construida a partir de diferentes componentes pequeños que conforman nuestra aplicación. Me gusta pensar en ello como bloques de Lego que se utilizan para construir la aplicación. Así que aquí estoy usando la función cyMount que va a renderizar mi componente y estoy pasando diferentes propiedades aquí. Entonces, si escribo `hello world`, mi botón aquí va a renderizar `hello world`. Si escribo `hello test.js`, va a renderizar esto. Así que puedo probar diferentes estados de mi componente y no tiene que ser un botón, podemos ir a algo más complicado. Por ejemplo, podemos probar diferentes estados de nuestra notificación aquí, probar un mensaje de información o un mensaje de error, o podemos ir a nuestra barra de navegación, hacer clic en este ícono de inicio y ver si se comporta de manera diferente cuando estamos en la página de inicio o cuando estamos en alguna otra subpágina. Incluso podemos renderizar subcomponentes, por lo que estos elementos desplegables contienen algunos componentes de ranuras en ellos y puedes ir básicamente a cualquier parte con esto. La mayor ventaja de esto es que podemos renderizar nuestros componentes dentro de un navegador real. Así es exactamente cómo se renderizarían nuestros componentes dentro de un navegador. Podemos interactuar con ellos, podemos probarlos como puedes ver, y tenemos todas las API de Cypress habilitadas para nosotros, por lo que podemos probar diferentes estados. Si el componente llama a una API, podemos usar intercept para cambiar el estado. Podemos enviar solicitudes, podemos cambiar el estado de la aplicación utilizando la acción de la aplicación que acabo de mostrarte. O podemos simplemente renderizar múltiples componentes y ver cómo interactúan entre sí. Pero si haces eso, has alcanzado el ciclo completo y vuelves a las pruebas de extremo a extremo. Así que puedes dar vueltas tantas veces como quieras y espero que obtengas una buena cobertura de tu aplicación. Esto ha sido muy divertido. Así que muchas gracias por escuchar hasta aquí. Estaré muy emocionado de encontrarte en una de mis masterclass, ya sea en la cumbre de test.js o en noviembre en mi otro taller. Puedes encontrar el enlace en la parte inferior de esta presentación. Y ahora estaré muy atento para escuchar tus preguntas. Nos vemos en un momento.

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

TestJS Summit 2021TestJS Summit 2021
33 min
Network Requests with Cypress
Top Content
Whether you're testing your UI or API, Cypress gives you all the tools needed to work with and manage network requests. This intermediate-level task demonstrates how to use the cy.request and cy.intercept commands to execute, spy on, and stub network requests while testing your application in the browser. Learn how the commands work as well as use cases for each, including best practices for testing and mocking your network requests.
TestJS Summit 2021TestJS Summit 2021
38 min
Testing Pyramid Makes Little Sense, What We Can Use Instead
Top Content
Featured Video
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.
TestJS Summit 2022TestJS Summit 2022
20 min
Testing Web Applications with Playwright
Top Content
Testing is hard, testing takes time to learn and to write, and time is money. As developers we want to test. We know we should but we don't have time. So how can we get more developers to do testing? We can create better tools.Let me introduce you to Playwright - Reliable end-to-end cross browser testing for modern web apps, by Microsoft and fully open source. Playwright's codegen generates tests for you in JavaScript, TypeScript, Dot Net, Java or Python. Now you really have no excuses. It's time to play your tests wright.
TestJS Summit 2021TestJS Summit 2021
31 min
Test Effective Development
Top Content
Developers want to sleep tight knowing they didn't break production. Companies want to be efficient in order to meet their customer needs faster and to gain competitive advantage sooner. We ALL want to be cost effective... or shall I say... TEST EFFECTIVE!But how do we do that?Are the "unit" and "integration" terminology serves us right?Or is it time for a change? When should we use either strategy to maximize our "test effectiveness"?In this talk I'll show you a brand new way to think about cost effective testing with new strategies and new testing terms!It’s time to go DEEPER!
TestJS Summit 2023TestJS Summit 2023
21 min
Everyone Can Easily Write Tests
Let’s take a look at how Playwright can help you get your end to end tests written with tools like Codegen that generate tests on user interaction. Let’s explore UI mode for a better developer experience and then go over some tips to make sure you don’t have flakey tests. Then let’s talk about how to get your tests up and running on CI, debugging on CI and scaling using shards.

Workshops on related topic

React Summit 2023React Summit 2023
151 min
Designing Effective Tests With React Testing Library
Featured Workshop
React Testing Library is a great framework for React component tests because there are a lot of questions it answers for you, so you don’t need to worry about those questions. But that doesn’t mean testing is easy. There are still a lot of questions you have to figure out for yourself: How many component tests should you write vs end-to-end tests or lower-level unit tests? How can you test a certain line of code that is tricky to test? And what in the world are you supposed to do about that persistent act() warning?
In this three-hour workshop we’ll introduce React Testing Library along with a mental model for how to think about designing your component tests. This mental model will help you see how to test each bit of logic, whether or not to mock dependencies, and will help improve the design of your components. You’ll walk away with the tools, techniques, and principles you need to implement low-cost, high-value component tests.
Table of contents- The different kinds of React application tests, and where component tests fit in- A mental model for thinking about the inputs and outputs of the components you test- Options for selecting DOM elements to verify and interact with them- The value of mocks and why they shouldn’t be avoided- The challenges with asynchrony in RTL tests and how to handle them
Prerequisites- Familiarity with building applications with React- Basic experience writing automated tests with Jest or another unit testing framework- You do not need any experience with React Testing Library- Machine setup: Node LTS, Yarn
TestJS Summit 2022TestJS Summit 2022
146 min
How to Start With Cypress
Featured WorkshopFree
The web has evolved. Finally, testing has also. Cypress is a modern testing tool that answers the testing needs of modern web applications. It has been gaining a lot of traction in the last couple of years, gaining worldwide popularity. If you have been waiting to learn Cypress, wait no more! Filip Hric will guide you through the first steps on how to start using Cypress and set up a project on your own. The good news is, learning Cypress is incredibly easy. You'll write your first test in no time, and then you'll discover how to write a full end-to-end test for a modern web application. You'll learn the core concepts like retry-ability. Discover how to work and interact with your application and learn how to combine API and UI tests. Throughout this whole workshop, we will write code and do practical exercises. You will leave with a hands-on experience that you can translate to your own project.
React Summit 2022React Summit 2022
117 min
Detox 101: How to write stable end-to-end tests for your React Native application
Top Content
WorkshopFree
Compared to unit testing, end-to-end testing aims to interact with your application just like a real user. And as we all know it can be pretty challenging. Especially when we talk about Mobile applications.
Tests rely on many conditions and are considered to be slow and flaky. On the other hand - end-to-end tests can give the greatest confidence that your app is working. And if done right - can become an amazing tool for boosting developer velocity.
Detox is a gray-box end-to-end testing framework for mobile apps. Developed by Wix to solve the problem of slowness and flakiness and used by React Native itself as its E2E testing tool.
Join me on this workshop to learn how to make your mobile end-to-end tests with Detox rock.
Prerequisites- iOS/Android: MacOS Catalina or newer- Android only: Linux- Install before the workshop
TestJS Summit 2023TestJS Summit 2023
48 min
API Testing with Postman Workshop
WorkshopFree
In the ever-evolving landscape of software development, ensuring the reliability and functionality of APIs has become paramount. "API Testing with Postman" is a comprehensive workshop designed to equip participants with the knowledge and skills needed to excel in API testing using Postman, a powerful tool widely adopted by professionals in the field. This workshop delves into the fundamentals of API testing, progresses to advanced testing techniques, and explores automation, performance testing, and multi-protocol support, providing attendees with a holistic understanding of API testing with Postman.
1. Welcome to Postman- Explaining the Postman User Interface (UI)2. Workspace and Collections Collaboration- Understanding Workspaces and their role in collaboration- Exploring the concept of Collections for organizing and executing API requests3. Introduction to API Testing- Covering the basics of API testing and its significance4. Variable Management- Managing environment, global, and collection variables- Utilizing scripting snippets for dynamic data5. Building Testing Workflows- Creating effective testing workflows for comprehensive testing- Utilizing the Collection Runner for test execution- Introduction to Postbot for automated testing6. Advanced Testing- Contract Testing for ensuring API contracts- Using Mock Servers for effective testing- Maximizing productivity with Collection/Workspace templates- Integration Testing and Regression Testing strategies7. Automation with Postman- Leveraging the Postman CLI for automation- Scheduled Runs for regular testing- Integrating Postman into CI/CD pipelines8. Performance Testing- Demonstrating performance testing capabilities (showing the desktop client)- Synchronizing tests with VS Code for streamlined development9. Exploring Advanced Features - Working with Multiple Protocols: GraphQL, gRPC, and more
Join us for this workshop to unlock the full potential of Postman for API testing, streamline your testing processes, and enhance the quality and reliability of your software. Whether you're a beginner or an experienced tester, this workshop will equip you with the skills needed to excel in API testing with Postman.
TestJS Summit - January, 2021TestJS Summit - January, 2021
173 min
Testing Web Applications Using Cypress
WorkshopFree
This workshop will teach you the basics of writing useful end-to-end tests using Cypress Test Runner.
We will cover writing tests, covering every application feature, structuring tests, intercepting network requests, and setting up the backend data.
Anyone who knows JavaScript programming language and has NPM installed would be able to follow along.
TestJS Summit 2023TestJS Summit 2023
148 min
Best Practices for Writing and Debugging Cypress Tests
Workshop
You probably know the story. You’ve created a couple of tests, and since you are using Cypress, you’ve done this pretty quickly. Seems like nothing is stopping you, but then – failed test. It wasn’t the app, wasn’t an error, the test was… flaky? Well yes. Test design is important no matter what tool you will use, Cypress included. The good news is that Cypress has a couple of tools behind its belt that can help you out. Join me on my workshop, where I’ll guide you away from the valley of anti-patterns into the fields of evergreen, stable tests. We’ll talk about common mistakes when writing your test as well as debug and unveil underlying problems. All with the goal of avoiding flakiness, and designing stable test.