Pruebas similares a producción en CI/CD con Testcontainers y Node.js

This ad is not shown to multipass and full ticket holders
JS Nation
JSNation 2026
June 11 - 15, 2026
Amsterdam & Online
The main JavaScript conference of the year
Upcoming event
JSNation 2026
JSNation 2026
June 11 - 15, 2026. Amsterdam & Online
Learn more
Bookmark
Rate this content
Sentry
Promoted
Code breaks, fix it faster

Crashes, slowdowns, regressions in prod. Seer by Sentry unifies traces, replays, errors, profiles to find root causes fast.

Has estado allí: las pruebas de Node.js pasan tanto localmente como en CI. Despliegas con confianza. Luego, el entorno de staging revela la verdad: errores que solo aparecen con colaciones reales de Postgres 16, límites de conexión reales de Redis o el comportamiento de partición de Kafka que tus mocks en memoria nunca capturaron.

La solución son Testcontainers.

Testcontainers es una biblioteca de pruebas que proporciona APIs fáciles y ligeras para iniciar pruebas de integración con servicios reales envueltos en contenedores Docker. Usando Testcontainers, puedes escribir pruebas que hablen con el mismo tipo de servicios que usas en producción sin mocks o servicios en memoria. Inícialos, ejecuta migraciones, ejecuta tu servicio Node.js contra ellos, verifica resultados, limpieza automática.

En esta charla, te mostraremos cómo usar Testcontainers con AWS CDK y AWS Lambda Node.js APIs para enviar código más rápido, con pruebas más sólidas y un pipeline de CI/CD más confiable.

This talk has been presented at Node Congress 2026, check out the latest edition of this JavaScript Conference.

John Nguyen
John Nguyen
17 min
26 Mar, 2026

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Bienvenido a una charla sobre pruebas de aplicaciones Node.js en producción usando Test Container. Desarrollar características, pasar pruebas unitarias y desplegar puede ser fluido. Los problemas después del despliegue debido a brechas de integración son comunes. La biblioteca Test Container facilita las pruebas de integración en el mundo real encapsulando servicios en contenedores Docker. Mejorar Docker Compose con Test Containers agiliza la gestión de contenedores. Ejecutar pruebas con la imagen Docker de Redis y probar con Walkie Container demuestran un fácil intercambio de servicios. Consideraciones de asignación dinámica de puertos y carga de imágenes para infraestructura aislada.

1. Node.js Application Testing Challenges

Short description:

Bienvenido a una charla sobre pruebas de aplicaciones Node.js en producción usando Test Container. Desarrollar características, pasar pruebas unitarias y desplegar puede ser fluido. Sin embargo, los problemas después del despliegue debido a brechas de integración son comunes. A medida que nos movemos hacia microservicios, descuidar las pruebas de integración se convierte en un riesgo. Conectarse a servicios externos requiere más que solo simulaciones, destacando la importancia de pruebas exhaustivas.

Hola, y bienvenidos a mi charla donde aprenderán cómo probar una aplicación Node.js en un entorno similar a producción usando Test Container. Así que, imagina esto. Estás desarrollando una característica. Escribes una prueba unitaria. Todo salió en verde. Lo subes a GitHub. Nos parece bien, y está listo para el mundo. Así que presionas el botón de despliegue, y está en vivo.

Contactas a tu gerente y dices, Oye, todo salió en verde. Desplegué esto. Pero de repente, recibes mensajes de Slack diciendo, Oye, algo pasó después de que desplegaste algo. La base de datos se cayó o está ocurriendo algún error. Así que estás en problemas tratando de encontrar qué está pasando. Entonces, miras los registros, y lo que ves es que tu servicio no se conectó a un servicio externo.

Así que, el problema aquí la mayoría de las veces es que nosotros, como ingenieros de software, ya no estamos escribiendo monolitos. Estamos escribiendo, la mayoría de las veces, microservicios o sistemas distribuidos, y somos solo una pequeña rueda dentada en un panorama mucho más grande, un sistema mucho más grande. Así que, por eso estos servicios que estamos escribiendo necesitan hablar con un servicio diferente o a través de una API o similar. Y eso a menudo, nosotros incluidos, resulta en que estamos descuidando las pruebas de integración. Sí, lo estamos probando usando pruebas unitarias, pero el panorama más grande, lo estamos descuidando. Así que, simular en este caso no es suficiente, porque, como dije, necesitamos hablar con diferentes servicios. Y, sí, eso nos ha pasado a todos. Y también me ha pasado a mí.

2. Test Container for Integration Testing

Short description:

John, un ingeniero de software en EON, discute los desafíos de las pruebas de integración y la solución ofrecida por la biblioteca Test Container. Test Container facilita las pruebas de integración en el mundo real encapsulando servicios en contenedores Docker, permitiendo pruebas contra bases de datos, brokers de mensajes como Kafka y servicios en la nube. Optimiza el proceso de pruebas, mejorando la confianza en el despliegue de aplicaciones.

Entonces, ¿quién soy yo? Mi nombre es John. Soy un ingeniero de software en EON. EON es un proveedor de energía, enfocado en el mercado de Europa Occidental. Trabajo para una subsidiaria, que se enfoca en proporcionar soluciones digitales a nuestra empresa matriz, EON. Pero he estado trabajando en la web como desarrollador durante más de una década. Y siempre fui, siempre soy apasionado por las tecnologías web. Hice DevOps, soy parte de la comunidad de AWS con un programa, y estoy basado en Berlín. Y hay un dato curioso sobre mí. Me ducho con agua fría todos los días, sin importar el clima, a menos que esté enfermo, entonces me ducho a temperatura normal o no me ducho en absoluto.

Entonces, hacer pruebas de integración es difícil. Lo es. Lo hice en el pasado con, sí, desplegando en una cuenta sandbox y probándolo allí. Pero nunca refleja el mundo real. Y esto es lo que esta biblioteca test container quiere abordar. Envuelve servicios reales en el contenedor Docker, y te permite hacer pruebas de integración contra una base de datos real, un usuario de broker de mensajes, como Kafka o WebMQ. E incluso puedes probarlo contra servicios en la nube usando un local stack o cualquier tipo de entorno simulado. Test container te proporciona una infraestructura aislada, bajo demanda, que puedes usar localmente, pero también en tu pipeline CICD.

Por supuesto, el objetivo aquí es tener una mayor confianza al enviar tu aplicación. Entonces, lo que hace test container. Aún tienes que escribir tus pruebas, y se asegura de que inicie el contenedor por ti. En este caso, como ejemplo, tu base de datos Postgres. Y luego se asegura de que ejecute la prueba contra el contenedor, que test container te proporcionó. Y después de eso, elimina el contenedor. Así que, esto es test container en resumen. Pero sí, ¿cuál es la diferencia entre, pero ahora puedes decir, está bien, por qué no usamos Docker Compose aquí? Bueno, como ingeniero de software, estamos trabajando en varios proyectos, en varios servicios. Así que, en mi caso, tengo un proyecto antiguo, que todavía está ejecutándose en Postgres 8, creo.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Elevando Monorepos con los Espacios de Trabajo de npm
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Elevando Monorepos con los Espacios de Trabajo de npm
Top Content
NPM workspaces help manage multiple nested packages within a single top-level package, improving since the release of NPM CLI 7.0. You can easily add dependencies to workspaces and handle duplications. Running scripts and orchestration in a monorepo is made easier with NPM workspaces. The npm pkg command is useful for setting and retrieving keys and values from package.json files. NPM workspaces offer benefits compared to Lerna and future plans include better workspace linking and adding missing features.
Automatizando Todo el Código y las Pruebas con GitHub Actions
React Advanced 2021React Advanced 2021
19 min
Automatizando Todo el Código y las Pruebas con GitHub Actions
Top Content
We will learn how to automate code and testing with GitHub Actions, including linting, formatting, testing, and deployments. Automating deployments with scripts and Git hooks can help avoid mistakes. Popular CI-CD frameworks like Jenkins offer powerful orchestration but can be challenging to work with. GitHub Actions are flexible and approachable, allowing for environment setup, testing, deployment, and custom actions. A custom AppleTools Eyes GitHub action simplifies visual testing. Other examples include automating content reminders for sharing old content and tutorials.
Ajustando DevOps para las Personas sobre la Perfección
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Ajustando DevOps para las Personas sobre la Perfección
Top Content
DevOps is a journey that varies for each company, and remote work makes transformation challenging. Pull requests can be frustrating and slow, but success stories like Mateo Colia's company show the benefits of deploying every day. Challenges with tools and vulnerabilities require careful consideration and prioritization. Investing in documentation and people is important for efficient workflows and team growth. Trust is more important than excessive control when deploying to production.
¿Por qué es tan lento el CI?
DevOps.js Conf 2022DevOps.js Conf 2022
27 min
¿Por qué es tan lento el CI?
Slow CI has a negative impact on productivity and finances. Debugging CI workflows and tool slowness is even worse. Dependencies impact CI and waiting for NPM or YARN is frustrating. The ideal CI job involves native programs for static jobs and lightweight environments for dynamic jobs. Improving formatter performance and linting is a priority. Performance optimization and fast tools are essential for CI and developers using slower hardware.
La filosofía de Yarn
DevOps.js Conf 2022DevOps.js Conf 2022
31 min
La filosofía de Yarn
Let's talk about React and TypeScript, Yarn's philosophy and long-term relevance, stability and error handling in Yarn, Yarn's behavior and open source sustainability, investing in maintenance and future contributors, contributing to the JavaScript ecosystem, open-source contribution experience, maintaining naming consistency in large projects, version consistency and strictness in Yarn, and Yarn 4 experiments for performance improvement.
Despliegue Atómico para Hipsters de JavaScript
DevOps.js Conf 2024DevOps.js Conf 2024
25 min
Despliegue Atómico para Hipsters de JavaScript
This Talk discusses atomic deployment for JavaScript and TypeScript, focusing on automated deployment processes, Git hooks, and using hard links to copy changes. The speaker demonstrates setting up a bare repository, configuring deployment variables, and using the post-receive hook to push changes to production. They also cover environment setup, branch configuration, and the build process. The Talk concludes with tips on real use cases, webhooks, and wrapping the deployment process.

Workshops on related topic

Deploying React Native Apps in the Cloud
React Summit 2023React Summit 2023
88 min
Deploying React Native Apps in the Cloud
Top Content
WorkshopFree
Cecelia Martinez
Cecelia Martinez
Desplegar aplicaciones de React Native manualmente en una máquina local puede ser complejo. Las diferencias entre Android e iOS requieren que los desarrolladores utilicen herramientas y procesos específicos para cada plataforma, incluidos los requisitos de hardware para iOS. Los despliegues manuales también dificultan la gestión de credenciales de firma, configuraciones de entorno, seguimiento de lanzamientos y la colaboración en equipo.
Appflow es la plataforma de DevOps móvil en la nube creada por Ionic. Usar un servicio como Appflow para construir aplicaciones de React Native no solo proporciona acceso a potentes recursos informáticos, sino que también puede simplificar el proceso de despliegue al proporcionar un entorno centralizado para gestionar y distribuir tu aplicación a múltiples plataformas. Esto puede ahorrar tiempo y recursos, permitir la colaboración, así como mejorar la fiabilidad y escalabilidad general de una aplicación.
En esta masterclass, desplegarás una aplicación de React Native para su entrega a dispositivos de prueba Android e iOS utilizando Appflow. También aprenderás los pasos para publicar en Google Play y Apple App Stores. No se requiere experiencia previa en el despliegue de aplicaciones nativas, y obtendrás una comprensión más profunda del proceso de despliegue móvil y las mejores prácticas sobre cómo usar una plataforma de DevOps móvil en la nube para enviar rápidamente a escala.
Despliegue de Aplicación MERN Stack en Kubernetes
DevOps.js Conf 2022DevOps.js Conf 2022
152 min
Despliegue de Aplicación MERN Stack en Kubernetes
Workshop
Joel Lord
Joel Lord
Desplegar y gestionar aplicaciones JavaScript en Kubernetes puede volverse complicado. Especialmente cuando una base de datos también debe formar parte del despliegue. MongoDB Atlas ha facilitado mucho la vida de los desarrolladores, sin embargo, ¿cómo se integra un producto SaaS con su clúster de Kubernetes existente? Aquí es donde entra en juego el Operador de MongoDB Atlas. En este masterclass, los asistentes aprenderán cómo crear una aplicación MERN (MongoDB, Express, React, Node.js) localmente y cómo desplegar todo en un clúster de Kubernetes con el Operador de Atlas.
Azure Static Web Apps (SWA) con Azure DevOps
DevOps.js Conf 2022DevOps.js Conf 2022
13 min
Azure Static Web Apps (SWA) con Azure DevOps
Workshop
Juarez Barbosa Junior
Juarez Barbosa Junior
Las Azure Static Web Apps se lanzaron a principios de 2021 y, de forma predeterminada, pueden integrar su repositorio existente y implementar su aplicación web estática desde Azure DevOps. Este masterclass demuestra cómo publicar una Azure Static Web App con Azure DevOps.
Cómo desarrollar, construir e implementar microservicios Node.js con Pulumi y Azure DevOps
DevOps.js Conf 2022DevOps.js Conf 2022
163 min
Cómo desarrollar, construir e implementar microservicios Node.js con Pulumi y Azure DevOps
Workshop
Alex Korzhikov
Andrew Reddikh
2 authors
El masterclass ofrece una perspectiva práctica de los principios clave necesarios para desarrollar, construir y mantener un conjunto de microservicios en el stack Node.js. Cubre los detalles específicos de la creación de servicios TypeScript aislados utilizando el enfoque de monorepo con lerna y yarn workspaces. El masterclass incluye una descripción general y un ejercicio en vivo para crear un entorno en la nube con el framework Pulumi y los servicios de Azure. Las sesiones están dirigidas a los mejores desarrolladores que deseen aprender y practicar técnicas de construcción e implementación utilizando el stack Azure y Pulumi para Node.js.