Introducción: este artículo resume los errores más comunes y sus soluciones que encontré al usar Jest para probar una aplicacion de learning log desarrollada con React, TypeScript, Chakra UI y Supabase. También incluye recomendaciones prácticas y cómo evitarlos en futuros proyectos de desarrollo de software a medida.

1. Error supabaseUrl is required: Situación: durante las pruebas llamé por error al cliente real de un servicio externo (Supabase, Firebase, etc.) y faltaba el archivo .env, provocando un error. Causa: se estaba usando el cliente real cuando se ejecutó Jest, el mock no se aplicó. Solución: crear un mock en src/mocks/supabase.ts para simular las respuestas de la API. Por ejemplo export const supabase = { from: () => ({ select: async () => ({ data: [], error: null }), insert: async () => ({ error: null }), delete: async () => ({ error: null }), update: async () => ({ error: null }) }) } y además configurar moduleNameMapper en jest.config.js para apuntar al mock. Esto evita llamadas externas y hace las pruebas deterministas.

2. Advertencia Received NaN for the value attribute: Situación: apareció una advertencia al pasar NaN a NumberInput de Chakra UI. Causa: la conexión entre Controller de React Hook Form y el input numerico estaba incompleta, rompiendo la conversión de string a numero. Solución: en el Controller usar valueAsNumber: true para forzar el valor a numero y siempre establecer defaultValue a 0 o 1 para definir un valor inicial válido. Con esto desaparecen los warnings y las pruebas son más estables.

3. Unable to find element by text: Situación: las pruebas fallaban porque no encontraban texto. Causa: el texto esperado en el test no coincidía exactamente con el de la interfaz (por ejemplo la implementacion mostraba Study Record y el test buscaba Study Record App) o los mensajes de validacion eran distintos. Solución: ajustar los tests para que coincidan con la UI real, por ejemplo usar expect(await screen.findByText(/Study Record/i)).toBeInTheDocument() y comprobar los mensajes de error exactos que muestra la aplicacion. Mantener sincronizados tests y textos evita falsos negativos.

4. Test Suites 0 of 1 total stuck on RUNS: Situación: la ejecucion de tests se quedaba en RUNS indefinidamente. Causa: el cliente real de Supabase era invocado repetidamente, generando un bucle infinito porque el mock no se aplicó. Solución: asegurarse de incluir jest.mock(../utils/supabase) al inicio del archivo de pruebas y preparar src/mocks/supabase.ts con las respuestas simuladas. Siempre utilizar mocks para servicios externos en los tests unitarios y de integración.

Resumen: la mayor parte de estos problemas se solucionan aplicando mocks correctos, sincronizando los textos de la UI con los tests y manejando correctamente la conversion de tipos en formularios. Implementar buenas practicas de testing reduce tiempo de depuracion y mejora la calidad del software.

Sobre Q2BSTUDIO: en Q2BSTUDIO somos una empresa de desarrollo de software especializada en aplicaciones a medida y software a medida para empresas de todos los tamaños. Ofrecemos servicios que van desde desarrollo de aplicaciones multiplataforma hasta soluciones avanzadas de inteligencia artificial, ciberseguridad y servicios cloud AWS y Azure. Si buscas crear una aplicacion a medida robusta y escalable podemos ayudarte, conoce mas sobre nuestro enfoque en desarrollo buscando soluciones de software a medida y aplicaciones a medida. Tambien trabajamos proyectos de inteligencia artificial para empresas, agentes IA y automatizacion con enfoque en negocio, descubre nuestras capacidades en inteligencia artificial y ia para empresas.

Palabras clave: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi. Si necesitas apoyo en testing, integracion continua, o en asegurar que tus pruebas no dependan de servicios externos, contacta con el equipo de Q2BSTUDIO y optimiza tus procesos de desarrollo y despliegue.