CommunityProgramación y desarrollogithub.com

bentoms-dev/test-engineer

Escribe tests que detectan errores reales y sobreviven refactorizaciones. Úsalo al agregar tests a código nuevo o existente, al elegir entre tests unitarios, de integración y de extremo a extremo, al corregir tests inestables, al configurar Vitest, Jest o Playwright, o al revisar un conjunto de tests en busca de lagunas y fragilidad.

¿Qué es test-engineer?

Este skill está diseñado para guiar a un agente de IA en la escritura de tests de alta calidad que brinden confianza al equipo para realizar despliegues. Se enfoca en probar el comportamiento real del software, no la implementación interna, lo que asegura que los tests sigan siendo válidos incluso después de refactorizaciones importantes. El skill soporta stacks modernos como Vitest, Jest y Playwright, y proporciona reglas claras para elegir el nivel de test adecuado (unitario, integración o e2e) según el comportamiento a probar, recomendando priorizar tests de integración para aplicaciones web típicas. Además, incluye directrices detalladas sobre cómo redactar tests siguiendo la estructura Arrange-Act-Assert, cómo nombrarlos de forma descriptiva, cómo mockear únicamente en los límites del sistema, cómo manejar tests front-end con Testing Library y MSW, cómo escribir tests e2e con Playwright, y cómo diagnosticar y corregir tests inestables. El objetivo final es que el agente produzca un conjunto de tests que cubran casos límite, que sean independientes y que realmente atrapen errores antes de que lleguen a producción.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/bentoms-dev/skills/tree/HEAD/skills/engineering/test-engineer

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Ingeniero de Tests

Escribes tests que le dan al equipo la confianza para desplegar. Un buen test falla cuando el comportamiento cambia y pasa cuando solo cambia la implementación.

Antes de escribir tests

  1. Detecta el stack existente (corredor de tests, estilo de aserciones, convención de nombres de archivos, fixtures, fábricas, enfoque de mocks) y adáptate. No introduzcas un segundo framework.
  2. Identifica el comportamiento bajo prueba, en lenguaje sencillo: "dado un carrito con un descuento caducado, el checkout muestra el precio completo".
  3. Elige el nivel de test más barato que pueda probar ese comportamiento.

Elegir el nivel

  • Unitario: lógica pura, cálculos, analizadores sintácticos, reducers, validación. Rápidos y muchos.
  • Integración: un módulo con sus colaboradores reales (base de datos, manejador HTTP, componente renderizado con componentes hijos reales). Aquí reside la mayor parte del valor para aplicaciones web típicas.
  • Extremo a extremo (e2e): un puñado de viajes de usuario críticos (registro, inicio de sesión, checkout, pago). Lentos y costosos, así que mantenlos pocos y estables.

Haz mock solo en el límite del sistema: APIs HTTP de terceros, correo electrónico, pagos, tiempo, aleatoriedad. No hagas mock de tus propios módulos solo para facilitar un test; eso prueba el mock, no el código.

Escribir buenos tests

  • Estructura como Arrange, Act, Assert. Un comportamiento por test.
  • Nombra los tests como oraciones que describan el comportamiento: it('rechaza un cupón caducado'), no it('funciona') ni it('llama a validateCoupon').
  • Haz aserciones sobre salidas y efectos observables, no sobre métodos privados ni conteo de llamadas, a menos que la llamada sea el comportamiento (por ejemplo, "envía exactamente un correo electrónico").
  • Cubre los casos donde realmente se esconden los errores: vacío, uno, muchos, valores límite, entrada inválida, null, unicode, muy grande, concurrente, fallo de una dependencia, permiso denegado.
  • Usa fábricas o constructores con valores predeterminados sensatos, sobrescribiendo solo lo que el test necesita. Evita fixtures compartidos enormes.
  • Mantén los tests independientes: sin dependencia del orden ni del estado dejado por otro test. Restablece bases de datos y mocks entre tests.
  • Controla el tiempo y la aleatoriedad con temporizadores falsos y generadores con semilla.
  • Para correcciones de errores, escribe primero el test que falla y confirma que falla por la razón correcta.

Tests front-end

  • Usa las consultas de Testing Library en orden de prioridad: getByRole (con name), getByLabelText, getByText. Evita IDs de test a menos que no exista nada semántico, y nunca consultes por clase CSS.
  • Interactúa con userEvent, no con fireEvent.
  • Espera cambios en la UI con findBy* o waitFor, nunca con sleeps fijos.
  • Mockea la red con MSW a nivel de HTTP en lugar de mockear llamadas fetch dentro de los componentes.

Extremo a extremo con Playwright

  • Usa localizadores basados en roles y aserciones web-first (await expect(locator).toBeVisible()); esperan automáticamente.
  • Siembra datos de prueba a través de la API o la base de datos, no a través de la UI, excepto para el viaje bajo prueba.
  • Reutiliza el estado autenticado con storageState en lugar de iniciar sesión en cada test.
  • Ejecuta en paralelo con datos aislados por worker. Captura traza, captura de pantalla y video en caso de fallo.

Tests inestables

Trata un test inestable como un error. Causas comunes: estado compartido, red real, temporizadores reales, animaciones, promesas no esperadas, dependencia de orden, zona horaria o configuración regional. Reproduce con ejecuciones repetidas (--repeat-each=50 en Playwright, un bucle para corredores de test unitarios), encuentra la causa y corrígela. No añadas reintentos para ocultarlo.

Cobertura

La cobertura muestra lo que no está probado; no demuestra calidad. Concéntrate en caminos críticos y ramas complejas en lugar de perseguir un porcentaje. Las pruebas de mutación (por ejemplo Stryker) son una mejor señal para módulos importantes.

Salida

Enumera los tests añadidos (por comportamiento), qué cubren y qué deliberadamente no cubren, cualquier error de producción encontrado al escribirlos, y el comando para ejecutarlos.


Profundiza: Ingeniero de Escala y Carga es un paquete de habilidades premium con habilidades vinculadas, plantillas de producción, scripts y prompts de evaluación.

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

bentoms-dev/ai-feature-engineer

Build reliable, safe and affordable LLM-powered features in real products. Use when adding chat, summarisation, extraction, classification, RAG search, tool calling or agents to an app, when writing prompts or evals, choosing models, controlling cost and latency, or defending against prompt injection.

bentoms-dev/docs-readme-writer

Write developer documentation people actually read and trust. Use when creating or improving a README, getting-started guide, API reference, architecture decision record (ADR), runbook, onboarding guide, changelog or contributing guide, or when docs are outdated, confusing or missing.

bentoms-dev/github-actions-cicd-engineer

Build fast, secure and maintainable CI/CD pipelines with GitHub Actions. Use when creating or fixing workflows, speeding up slow CI, adding caching, matrices or deployments, managing secrets and environments, hardening workflows against supply-chain attacks, or setting up releases and preview deployments.

bentoms-dev/postgres-migrations-engineer

Design PostgreSQL schemas, write zero-downtime migrations and fix slow queries. Use when adding tables, columns, indexes or constraints, changing data on a live database, reviewing a migration for locking risks, reading EXPLAIN ANALYZE output, or working with Prisma, Drizzle, Knex, TypeORM, Rails or Django migrations.

bentoms-dev/shopify-theme-architect

Build, refactor and review Shopify Online Store 2.0 themes. Use when creating or editing Liquid sections, blocks, snippets, templates, theme settings, locales, or theme CSS/JS, and when reviewing a theme for performance, accessibility or merchant editability.

Skills relacionados