Testing de micro frontends

Publicado el 31 marzo 2023 por Jocual

El testing de Micro Frontends en React JS es una tarea importante para garantizar que la aplicación web esté funcionando correctamente. Aquí hay algunos pasos que puedes seguir para realizar testing de Micro Frontends en React JS:

  1. Identificar los componentes críticos: Antes de comenzar a realizar pruebas, es importante identificar los componentes críticos de cada Micro Frontend. Estos componentes pueden variar según la responsabilidad de cada Micro Frontend. Por ejemplo, en una aplicación de compras en línea, un Micro Frontend puede ser responsable de mostrar los productos y otro Micro Frontend puede ser responsable del proceso de pago. En este caso, los componentes críticos del primer Micro Frontend pueden ser la lista de productos y el carrito de compras, mientras que los componentes críticos del segundo Micro Frontend pueden ser el formulario de pago y la confirmación de la orden.
  2. Crear pruebas unitarias: Una vez que se han identificado los componentes críticos, debes crear pruebas unitarias para cada uno de ellos. Estas pruebas deben asegurarse de que los componentes estén funcionando correctamente y que los datos se estén manejando correctamente.

En React JS, una de las herramientas más utilizadas para realizar pruebas unitarias es Jest. Jest es un framework de pruebas desarrollado por Facebook que se integra perfectamente con React JS. También puedes utilizar otras herramientas como Mocha, Enzyme o Cypress para realizar pruebas unitarias.

Aquí hay un ejemplo de una prueba unitaria utilizando Jest:

import React from 'react';
import { render } from '@testing-library/react';
import ProductList from './ProductList';

test('renders product list', () => {
  const products = [
    { id: 1, name: 'Product 1', price: 10 },
    { id: 2, name: 'Product 2', price: 20 },
    { id: 3, name: 'Product 3', price: 30 }
  ];
  const { getByTestId } = render(<ProductList products={products} />);
  const productList = getByTestId('product-list');
  expect(productList).toBeInTheDocument();
});

En este ejemplo, estamos probando el componente ProductList que recibe una lista de productos como prop. La prueba verifica que el componente esté siendo renderizado correctamente y que se pueda acceder al elemento con el testID «product-list».

  1. Integrar los Micro Frontends: Una vez que se han creado las pruebas unitarias para cada Micro Frontend, es importante integrarlos para asegurarse de que estén funcionando juntos correctamente.

Para esto, puedes utilizar herramientas como TestCafe o Cypress, que te permiten realizar pruebas de integración en la aplicación completa. Estas herramientas simulan interacciones del usuario y verifican que las acciones del usuario en un Micro Frontend afecten correctamente a otro Micro Frontend.

Aquí hay un ejemplo de una prueba de integración utilizando Cypress:

describe('Shopping Cart', () => {
  beforeEach(() => {
    cy.visit('http://localhost:3000');
  });

  it('can add products to the cart', () => {
    cy.get('[data-testid="product-1"]')
      .click()
      .get('[data-testid="add-to-cart"]')
      .click()
      .get('[data-testid="cart-count"]')
      .should('have.text', '1')
      .get('[data-testid="product-2"]')
      .click()
      .get('[data-testid="add-to-cart"]')
      .click()
      .get('[data-testid="

cart-count"]') .should('have.text', '2'); });

it('can remove products from the cart', () => { cy.get('[data-testid="product-1"]') .click() .get('[data-testid="add-to-cart"]') .click() .get('[data-testid="cart-count"]') .should('have.text', '1') .get('[data-testid="cart"]') .click() .get('[data-testid="remove-from-cart"]') .click() .get('[data-testid="cart-count"]') .should('have.text', '0'); }); });

En este ejemplo, estamos probando la funcionalidad del carrito de compras de la aplicación. La primera prueba verifica que se pueda agregar productos al carrito y que el contador del carrito se actualice correctamente. La segunda prueba verifica que se pueda eliminar productos del carrito y que el contador del carrito se actualice correctamente.

En resumen, para realizar testing de Micro Frontends en React JS, es importante identificar los componentes críticos de cada Micro Frontend, crear pruebas unitarias para cada uno de ellos y luego integrarlos para realizar pruebas de integración en la aplicación completa utilizando herramientas como TestCafe o Cypress.

Además de Jest, Mocha, Enzyme, TestCafe y Cypress, que ya se han mencionado, hay otras tecnologías recomendadas para el testing de Micro Frontends en React JS. Algunas de ellas son:

  1. Puppeteer: Puppeteer es una herramienta de automatización de navegador desarrollada por Google. Se utiliza para simular interacciones del usuario en un navegador y realizar pruebas de extremo a extremo en una aplicación web. Puppeteer también se integra perfectamente con Jest y Mocha.
  2. Storybook: Storybook es una herramienta de desarrollo de componentes que se utiliza para crear y mostrar los componentes de una aplicación de forma aislada. También se puede utilizar para realizar pruebas unitarias y de integración. Storybook se integra perfectamente con React JS y otras bibliotecas de componentes.
  3. React Testing Library: React Testing Library es una biblioteca de pruebas que se utiliza para probar la interacción del usuario con los componentes de React JS. Esta biblioteca se centra en probar la aplicación como la vería el usuario final y se utiliza para realizar pruebas de integración.
  4. Jest-Dom: Jest-Dom es una extensión de Jest que agrega un conjunto de aserciones personalizadas para probar el DOM. Esta extensión se utiliza para realizar pruebas unitarias en componentes de React JS que manipulan el DOM.
  5. Testing Library: Testing Library es una biblioteca de pruebas que se utiliza para probar la interacción del usuario con una aplicación web. Esta biblioteca se centra en probar la aplicación como la vería el usuario final y se utiliza para realizar pruebas de integración. Testing Library se integra con React JS, Vue.js y Angular.

En resumen, hay varias tecnologías recomendadas para el testing de Micro Frontends en React JS, como Puppeteer, Storybook, React Testing Library, Jest-Dom y Testing Library. Cada una de estas tecnologías tiene sus propias fortalezas y debilidades, por lo que es importante evaluarlas cuidadosamente para elegir la que mejor se adapte a las necesidades de tu proyecto.

La entrada Testing de micro frontends se publicó primero en Diario Tecnología.