En este módulo, aprenderás cómo Playwright te permite interceptar y simular solicitudes de red. Esta funcionalidad es crucial para probar cómo tu aplicación maneja diferentes escenarios de red, como respuestas lentas, errores del servidor o datos específicos que deseas simular.
Conceptos Clave
- Intercepción de Solicitudes de Red: Permite capturar y modificar solicitudes y respuestas de red durante la ejecución de tus pruebas.
- Simulación de Respuestas: Puedes simular diferentes tipos de respuestas de servidor para probar cómo tu aplicación maneja estas situaciones.
- Manipulación de Datos de Red: Cambiar datos en las solicitudes o respuestas para probar diferentes escenarios.
Interceptando Solicitudes de Red
Playwright proporciona una API para interceptar solicitudes de red. Puedes usarla para modificar las solicitudes antes de que se envíen o las respuestas antes de que lleguen a tu aplicación.
Ejemplo de Intercepción de Solicitudes
import { chromium } from 'playwright'; (async () => { const browser = await chromium.launch(); const page = await browser.newPage(); // Interceptar solicitudes await page.route('**/*', (route) => { const request = route.request(); console.log(`Intercepted request: ${request.url()}`); route.continue(); }); await page.goto('https://example.com'); await browser.close(); })();
Explicación del Código:
page.route('**/*', callback)
: Intercepta todas las solicitudes de red. El patrón'**/*'
indica que se interceptarán todas las solicitudes.route.request()
: Obtiene la solicitud que está siendo interceptada.route.continue()
: Permite que la solicitud continúe sin modificaciones.
Simulación de Respuestas
Puedes simular respuestas de red para probar cómo tu aplicación maneja diferentes escenarios.
Ejemplo de Simulación de Respuestas
import { chromium } from 'playwright'; (async () => { const browser = await chromium.launch(); const page = await browser.newPage(); // Simular una respuesta await page.route('https://example.com/api/data', (route) => { route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify({ data: 'Simulated data' }), }); }); await page.goto('https://example.com'); // Aquí podrías verificar cómo tu aplicación maneja la respuesta simulada await browser.close(); })();
Explicación del Código:
route.fulfill()
: Responde a la solicitud con datos simulados.status
: Código de estado HTTP de la respuesta simulada.contentType
: Tipo de contenido de la respuesta.body
: Cuerpo de la respuesta simulada.
Ejercicios Prácticos
Ejercicio 1: Interceptar y Modificar una Solicitud
Objetivo: Interceptar una solicitud a una API y modificar su encabezado antes de que se envíe.
Instrucciones:
- Intercepta una solicitud a
https://example.com/api/data
. - Modifica el encabezado
Authorization
para incluir un token ficticio. - Permite que la solicitud continúe.
Solución:
await page.route('https://example.com/api/data', (route) => { const headers = { ...route.request().headers(), 'Authorization': 'Bearer fake-token', }; route.continue({ headers }); });
Ejercicio 2: Simular un Error del Servidor
Objetivo: Simular un error 500 del servidor para una solicitud específica.
Instrucciones:
- Intercepta una solicitud a
https://example.com/api/data
. - Responde con un error 500 y un mensaje de error.
Solución:
await page.route('https://example.com/api/data', (route) => { route.fulfill({ status: 500, contentType: 'application/json', body: JSON.stringify({ error: 'Internal Server Error' }), }); });
Errores Comunes y Consejos
- Error al Interceptar: Asegúrate de que el patrón de la URL en
page.route()
coincida con la solicitud que deseas interceptar. - Simulación Incorrecta: Verifica que el
contentType
y elbody
de la respuesta simulada sean correctos para evitar errores en la aplicación.
Conclusión
La intercepción de red y la simulación son herramientas poderosas en Playwright que te permiten probar cómo tu aplicación maneja diferentes escenarios de red. Practicar con estas técnicas te ayudará a crear pruebas más robustas y confiables. En el próximo módulo, exploraremos cómo trabajar con múltiples páginas y marcos en Playwright.
Playwright con TypeScript: De Principiante a Avanzado
Módulo 1: Introducción a Playwright y TypeScript
- ¿Qué es Playwright?
- Configuración de tu Entorno de Desarrollo
- Introducción a TypeScript
- Sintaxis Básica de TypeScript
Módulo 2: Comenzando con Playwright
- Instalando Playwright
- Creando tu Primer Script de Playwright
- Entendiendo los Conceptos Básicos de Playwright
- Ejecutando Pruebas de Playwright
Módulo 3: Fundamentos de Playwright y TypeScript
- Escribiendo Pruebas en TypeScript
- Usando Interfaces y Tipos de TypeScript
- Depurando Pruebas de Playwright
- Manejando Código Asíncrono
Módulo 4: Funciones Avanzadas de Playwright
- Trabajando con Selectores
- Manejando Múltiples Páginas y Marcos
- Intercepción de Red y Simulación
- Emulación de Dispositivos y Geolocalización
Módulo 5: Estrategias de Automatización de Pruebas
- Organización de Pruebas y Suites de Pruebas
- Uso de Fixtures y Hooks
- Ejecución Paralela de Pruebas
- Integración Continua con Playwright
Módulo 6: Técnicas Avanzadas de TypeScript
- Genéricos en TypeScript
- Tipos Avanzados de TypeScript
- Decoradores de TypeScript
- Mejores Prácticas de TypeScript y Playwright
Módulo 7: Aplicaciones Reales de Playwright
- Pruebas de Extremo a Extremo con Playwright
- Pruebas Visuales con Playwright
- Pruebas de Rendimiento con Playwright
- Estudio de Caso: Implementación de Playwright en un Proyecto