Rstest
@module-federation/rstest habilita Module Federation dentro de los builds de test de
Rstest. Úsalo cuando tus tests deban cargar remotes federados
reales en lugar de sustituir el límite de federation por mocks.
Compatibilidad
- Entornos de test Node y JSDOM de Rstest.
- Modo navegador de Rstest.
- Remotes por URL como
remote@http://localhost:3001/remoteEntry.js. - Remotes por ruta
commonjs ...para tests de integración basados en Node. - Modo de compatibilidad de federation de Rstest automático para builds de test orientados a Node.
Requisitos
Usa @rstest/core@0.11.4 o posterior. El soporte de federation de Rstest se publicó en
0.11.4.
Las versiones de Rstest anteriores a 0.11.4 no incluyen el modo de compatibilidad
federation que este plugin habilita para los builds de test de Node.
Inicio rápido
Instalación
Registrar el plugin
No establezcas federation: true en rstest.config.ts cuando uses este plugin. En
los entornos de test Node y JSDOM, @module-federation/rstest habilita automáticamente
el modo de compatibilidad de federation de Rstest.
Ejecuta tus tests con Rstest como de costumbre:
Reutilizar una configuración de federation de Rsbuild
Si el proyecto de test ya registra @module-federation/rsbuild-plugin,
no pases ninguna opción a federation():
El orden de los plugins es importante: registra primero pluginModuleFederation para que
federation() pueda normalizar las mismas opciones tipadas. Así se crea un único
ModuleFederationPlugin y se evita duplicar la configuración de los remotes.
Probar un remote federado
Haz el build o arranca el remote en el globalSetup de Rstest y, después, importa los
módulos expuestos igual que lo hace el código de la aplicación:
El
ejemplo oficial de federation de Rstest
combina un remote de componentes servido por HTTP con un remote commonjs ... compilado
localmente, y ejecuta proyectos tanto de Node como de JSDOM.
Cómo funciona
Tanto para destinos Node como de navegador, dts, manifest y dev son false por
defecto; los valores explícitos se respetan.
Valores por defecto para tests en Node
En los builds de Rstest orientados a Node, el plugin aplica valores por defecto de Module Federation acordes con el runtime de Node:
target: async-nodeexperiments.asyncStartup = true- Salida del contenedor en CommonJS; los tipos de biblioteca
moduleymodern-modulese normalizan @module-federation/node/runtimePlugin- Optimización de federation orientada a Node
- Transporte de remotes mediante script por defecto
Los remotes por URL estándar usan remoteType: 'script'. Los prefijos de transporte en línea,
como commonjs ..., sobrescriben ese valor por defecto.
Modo navegador
El modo navegador de Rstest se detecta automáticamente a partir de su configuración resuelta
browser.enabled:
Instala primero @rstest/browser y un navegador de Playwright. Consulta
la configuración del modo navegador de Rstest.
El modo navegador evita los valores por defecto exclusivos de Node, a la vez que habilita
experiments.asyncStartup y aplica los valores por defecto compartidos descritos arriba.
Pasa un target explícito solo para sobrescribir el modo detectado.
Configuración
federation(options, rstestOptions) acepta como primer argumento la
configuración estándar de Module Federation.
moduleFederationOptions
Configuración de Module Federation
rstestOptions
- Tipo:
{ target?: 'node' | 'browser' } - Valor por defecto: se detecta automáticamente a partir de la configuración resuelta
browser.enabledde Rstest. En el modo navegador, el valor por defecto es'browser'; en el resto de builds,'node'.
Builds del producer
Usa @module-federation/rsbuild-plugin u otro plugin de build de Module Federation para
hacer el build de la aplicación remote. Usa @module-federation/rstest solo en el
proyecto de test de Rstest que consume esos remotes.
Para producers de Rsbuild, continúa con la guía del plugin de Rsbuild.