Tests de un componente React con Vitest y Testing Library
Pega un componente React y obtén un plan de pruebas, el archivo de tests con consultas por rol, user-event y mocks de red con MSW, más la configuración necesaria. Pensado para ChatGPT, Claude, Gemini y Microsoft Copilot. Incluye 4 variables personalizables y se copia gratis en un clic.
Intermedio · Código · Pendiente de revisión editorial
Prompt
Actúa como ingeniero de calidad frontend experto en Testing Library y en tests que prueban comportamiento, no detalles de implementación.
Contexto:
- Código del componente: {{codigo_componente}}
- Comportamiento que debe quedar cubierto: {{comportamiento}}
- Herramientas: {{herramientas}}
- Llamadas de red: {{red}}
Si el componente depende de contextos, rutas o providers que no aparecen en el código, pregúntame cómo se montan antes de escribir los tests.
Entregables:
1. Plan de pruebas en tabla: caso, tipo (renderizado, interacción, error, accesibilidad), prioridad.
2. El archivo de tests completo: consultas por rol y nombre accesible primero (`getByRole`), `userEvent` en lugar de `fireEvent`, `findBy` para lo asíncrono y aserciones sobre lo que ve el usuario.
3. Mocks de red según {{red}}, con un caso de éxito, uno de error y uno de carga lenta si aplica.
4. Un helper `renderWithProviders` si hacen falta providers.
5. La configuración mínima si no existe: entorno jsdom o happy-dom, archivo de setup con los matchers de jest-dom y los scripts de package.json.
6. Huecos de cobertura que quedan y por qué no merece la pena cubrirlos con tests unitarios (por ejemplo, porque son de un test end-to-end).
Restricciones:
- No hagas tests de snapshot salvo que lo justifiques.
- No accedas a estado interno, clases CSS ni `data-testid` si existe una consulta accesible.
- Si al escribir los tests detectas un error o un problema de accesibilidad en el componente, avísame aparte; no lo corrijas en silencio.
- No inventes props ni textos que no estén en el código; usa [COMPLETAR] si falta algo.
Formato: plan, código en bloques con nombre de archivo y una lista de comandos para ejecutarlo.Cómo usarlo
- Pega el componente completo y, si los tiene, sus hooks o servicios. 2. Describe en lenguaje llano qué debe hacer desde el punto de vista del usuario. 3. Ejecuta los tests y, si alguno falla, pega el error para iterar.
Ejemplo de uso
Componente: CarritoResumen.tsx (lista de productos, cambio de cantidad y botón de pagar) · Comportamiento: recalcula el total y muestra error si falla el pago · Herramientas: Vitest + RTL · Red: MSW.
Resultado de ejemplo
Plan de pruebas
| Caso | Tipo | Prioridad |
|---|---|---|
| Cambiar la cantidad recalcula el total | Interacción | Alta |
| Pagar se deshabilita mientras se procesa | Interacción | Alta |
| Error visible si la API falla | Error | Alta |
CarritoResumen.test.tsx
import { afterAll, afterEach, beforeAll, expect, it } from 'vitest';
import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { http, HttpResponse, delay } from 'msw';
import { setupServer } from 'msw/node';
import { CarritoResumen } from './CarritoResumen';
const server = setupServer(http.post('/api/pago', () => HttpResponse.json({ ok: true }))); // [COMPLETAR: endpoint real]
beforeAll(() => server.listen());
afterEach(() => server.resetHandlers());
afterAll(() => server.close());
it('recalcula el total al cambiar la cantidad', async () => {
const user = userEvent.setup();
render(<CarritoResumen />);
const cantidad = screen.getByRole('spinbutton', { name: /cantidad/i });
await user.clear(cantidad);
await user.type(cantidad, '3');
expect(screen.getByText(/total/i)).toHaveTextContent('[COMPLETAR: total esperado]');
});
it('deshabilita Pagar y muestra un error si la API falla', async () => {
server.use(http.post('/api/pago', async () => { await delay(100); return new HttpResponse(null, { status: 500 }); }));
const user = userEvent.setup();
render(<CarritoResumen />);
const pagar = screen.getByRole('button', { name: /pagar/i });
await user.click(pagar);
expect(pagar).toBeDisabled();
expect(await screen.findByRole('alert')).toBeInTheDocument();
});
Las consultas por rol fallarán si el input no tiene etiqueta accesible: si ocurre, es un problema del componente, no del test…
Datos clave
- Categoría
- Programación y desarrollo · React
- Tipo de resultado
- Código
- Nivel
- Intermedio
- Pensado para
- ChatGPT, Claude, Gemini y Microsoft Copilot
- Verificado en
- Pendiente de verificación editorial
- Variables
- Código del componente, Comportamiento a cubrir, Herramientas y Llamadas de red
- Idioma
- Español
- Precio
- Gratis, sin registro
- Actualizado
- 07/11/2026
Preguntas frecuentes
¿Por qué consultar por rol en lugar de por data-testid?
Porque así el test usa la página como un usuario real o una tecnología de apoyo. Si el test no encuentra un botón por su rol y nombre, probablemente tampoco lo encontrará un lector de pantalla.
¿Qué es MSW y por qué usarlo?
Mock Service Worker intercepta las peticiones de red en los tests. Te permite probar el componente con respuestas realistas sin simular fetch a mano en cada test.
¿Para qué sirve este prompt?
Pega un componente React y obtén un plan de pruebas, el archivo de tests con consultas por rol, user-event y mocks de red con MSW, más la configuración necesaria.
¿Con qué herramientas de IA funciona?
Está pensado para ChatGPT, Claude, Gemini y Microsoft Copilot. Todavía no lo hemos verificado en estas herramientas, por lo que los resultados pueden variar entre ellas.
¿Cómo personalizo el prompt?
Pulsa «Personalizar» y rellena las variables (Código del componente, Comportamiento a cubrir, Herramientas y Llamadas de red). El texto se actualiza al instante y después puedes copiarlo con un clic. Los valores se guardan solo en tu navegador.
¿Necesito experiencia para usarlo?
Es de nivel intermedio: conviene que conozcas el tema para aportar buen contexto y revisar el resultado con criterio.
¿Este prompt es gratis?
Sí. Todos los prompts de HomeCasa Prompts son gratuitos, sin registro ni suscripción. Puedes usarlos también en proyectos profesionales.
¿Puedo fiarme del resultado de la IA?
Úsalo como un borrador de calidad: revisa siempre datos, cifras y afirmaciones importantes antes de publicarlos o tomar decisiones.