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
Authorizationpara 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
contentTypey elbodyde 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
