paint-brush
Playwright vs Cypress para pruebas automatizadas de API REST: ¿Quién gana?por@bormando
8,617 lecturas
8,617 lecturas

Playwright vs Cypress para pruebas automatizadas de API REST: ¿Quién gana?

por Dmitrii Bormotov3m2023/09/05
Read on Terminal Reader

Demasiado Largo; Para Leer

Cypress es un marco de automatización de pruebas con doble propósito: cobertura de pruebas de UI y API. Playwright tiene el mismo propósito, pero no viene con ningún navegador listo para usar; debe instalarlos con un comando separado (si lo desea). Cuando se trata de una herramienta liviana y más rápida, seguramente será Playwright, ya que lleva menos tiempo instalarla y no consume recursos adicionales para la ejecución de los navegadores, ya que no es necesario realizar pruebas de API.
featured image - Playwright vs Cypress para pruebas automatizadas de API REST: ¿Quién gana?
Dmitrii Bormotov HackerNoon profile picture

¡Hola a todos!


Siempre miré con escepticismo los marcos de automatización de pruebas con un doble propósito: cobertura de pruebas de UI y API. Por lo general, ejecutará diferentes capas de pruebas en diferentes ejecuciones de prueba (o proyectos de eventos), ya que cada una de ellas probablemente tenga su propia dependencias , configuración, y Variables de entorno .


Recientemente, eché un vistazo a lo que Playwright tiene para ofrecer en términos de pruebas de API y lo comparé con mi experiencia con Cypress , así que esto es lo que tengo para compartir con todos ustedes...

Ciprés

Cypress hizo posible las pruebas de API hace un tiempo. Puede encontrar un artículo en el portal de aprendizaje sobre lo excelente que es esta herramienta en términos de pruebas de API con ejemplos.

Rendimiento de la instalación

Para ejecutar pruebas, necesita instalar las dependencias de su proyecto, ¿correcto? Bueno, Cypress viene con un navegador electrónico , y su instalación puede ser bastante redundante (y llevar mucho tiempo) si desea ejecutar pruebas de API exclusivamente (digamos, tiene trabajos separados en CI para ejecuciones de pruebas de UI y API, que suele ser el caso).


Tiempo de instalación de Cypress Clean


No se ve bien, ¿eh? ☝️


Además, cuando ejecuta pruebas de API , de todos modos inicia un navegador.


Cypress ejecuta una sesión de navegador según las especificaciones de API


Registro de especificaciones de pruebas API en el navegador.

Ejemplo de prueba

Una prueba de API sencilla con Cypress se vería así:


 it('Sign in with valid credentials', () => { cy.request('POST', '/auth', { login: Cypress.env('username'), password: Cypress.env('password'), }).should(response => { expect(response.body.token).to.be.a('string') expect(response.status).to.eq(200) }) })


Se ve hermosa

Dramaturgo

Al igual que Cypress , Playwright es un marco de automatización de pruebas: puede utilizar solo una herramienta de automatización del navegador exclusivamente o todo el marco (ejecutor de pruebas, biblioteca de aserciones, herramienta de automatización del navegador, cliente HTTP, reportero, etc.).

Rendimiento de la instalación

La diferencia aquí es que Playwright no viene con ningún navegador listo para usar; debe instalarlos con un comando separado (si lo desea).


Tiempo de instalación limpia del dramaturgo.


Aquí hace una gran diferencia, ya que en términos de ejecutar pruebas API exclusivamente, no ejecutará ningún navegador ni ninguna otra aplicación de escritorio y ahorrará tiempo de ejecución y recursos en su máquina.

Ejemplo de prueba

Una prueba API sencilla con Playwright se vería así:


 import {test, expect} from '@playwright/test' test('Sign in with valid credentials', async ({request}) => { const response = await request.post('/auth', { data: { login: process.env.USERNAME, password: process.env.PASSWORD, }, }) expect(response.status()).toEqual(200) expect(await response.json()).toEqual({ token: expect.any(String), }) })


Me gustaría resaltar una sintaxis similar a Jest para afirmar objetos:


 expect(await response.json()).toEqual({ token: expect.any(String), })


Esta sintaxis le permite verificar toda la estructura del objeto con una sola llamada expect ☝️

Conclusión

Se supone que las pruebas API son pequeñas y livianas, ya que no requieren demasiado para ejecutarse.


Resumamos el material anterior...

Rendimiento de la instalación

Dramaturgo gana con una instalación limpia 13 veces más rápida desde el primer momento.


ℹ️ Puede reducir el tiempo de instalación de Cypress en CI si usa una imagen con dependencias preinstaladas o las almacena en caché en su almacenamiento de CI .

Ejecutar rendimiento

Playwright gana porque no requiere un navegador para ejecutar pruebas de API, por lo que va directo al grano.


ℹ️ No hay forma de "no ejecutar" el navegador en las pruebas de API, ya que es parte de la lógica del marco.

Sintaxis de prueba

No puedo elegir un ganador aquí, ya que no hay ventaja objetiva ni para Cypress ni para Playwright .


Ambos obtuvieron una sintaxis bastante sencilla con ligeras diferencias. Yo diría que es decisión del evaluador elegir lo que le gusta aquí.

En general

Definitivamente puedo decir que es lo suficientemente seguro usar Playwright para la automatización de pruebas API debido a su rendimiento. Sería una solución justa si ya tienes pruebas de UI con este marco.


Mi consejo para aquellos que usan Cypress para pruebas de UI y quieren cubrir la capa API : mejor usen algo más ( Jest + Axios , pueden ver un ejemplo allí ).