InicioEntorno de pruebasExhibiciónAppDocBlog
    • Englishinglés
      EN
    • русскийruso
      RU
    • 日本語japonés
      JA
    • françaisfrancés
      FR
    • 한국어coreano
      KO
    • 中文chino
      ZH
    • españolespañol
      ES
    • Deutschalemán
      DE
    • العربيةárabe
      AR
    • italianoitaliano
      IT
    • British Englishinglés británico
      EN-GB
    • portuguêsportugués
      PT
    • हिन्दीhindi
      HI
    • Türkçeturco
      TR
    • polskipolaco
      PL
    • Indonesiaindonesio
      ID
    • Tiếng Việtvietnamita
      VI
    • українськаucraniano
      UK
    /
    Filtrar documentación por framework
    Alt+←
    ¿Por qué Intlayer?
    Empezar
    Concepto
    • Cómo funciona Intlayer
    • Configuración
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Editor visual
    • CMS
    • Integración CI/CD
    • TraducciónPluralEnumeraciónCondiciónGéneroInserciónArchivoAnidaciónMarkdownHTMLObtención de función
    • Archivo por locale
    • Compilador
    • Autocompletado
    • Pruebas
    • Optimización de bundle
    Entornos
    • Next.js 14 y App Router
      Next.js 15
      Next.js sin locale URL
      Next.js y Page Router
      Compiler
    • Tanstack Start Solid
    • Astro y React
      Astro y Svelte
      Astro y Vue
      Astro y Solid
      Astro y Preact
      Astro y Lit
      Astro y Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt y Vue
    • Vite y Solid
    • SvelteKit
    • Vite y Preact
    • Vite y Vanilla JS
    • Vite y Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native y Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx y React
    Plugins
    • JSON
    • gettext (.po)
    Extensión VS Code
    Agente
    • Servidor MCP
    • Habilidades del agente
    Versiones
    • v8
    • v7
    • v6
    Benchmark
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Blog
    Preguntar una pregunta
    1. Documentation
    2. Testing
    Creación:2025-03-01Última actualización:2025-09-20
    Referencia esta doc a tu asistente AI favorito
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Haz tu pregunta y obtén un resumen del documento referenciando esta página y el proveedor AI de tu elección

    Este documento está desactualizado, la versión base se actualizó el 5 de octubre de 2025.

    Ir a la documentación en inglés

    Historial de versiones

    1. "Introducción de pruebas"
      v6.0.020/9/2025

    El contenido de esta página ha sido traducido con una IA.

    Ver la última versión del contenido original en inglés
    Editar esta documentación

    Si tienes una idea para mejorar esta documentación, no dudes en contribuir enviando una pull request en GitHub.

    Enlace de GitHub a la documentación
    Copiar

    Copiar el Markdown del documento a la portapapeles

    Probando tu contenido

    Esta guía muestra cómo verificar automáticamente que tus diccionarios estén completos, detectar traducciones faltantes antes de lanzar y probar la interfaz localizada en tu aplicación.


    Qué puedes probar

    • Traducciones faltantes: falla en CI si faltan locales requeridos en cualquier diccionario.
    • Renderizado de UI localizada: renderiza componentes con un proveedor de locales específico y verifica el texto/atributos visibles.
    • Auditorías en tiempo de compilación: ejecuta una auditoría rápida localmente vía CLI.

    Inicio rápido: auditoría vía CLI

    Ejecuta la auditoría desde la raíz de tu proyecto:

    bash
    Copiar código

    Copiar el código al portapapeles

    npx intlayer content test

    Flags útiles:

    • --env-file [ruta]: carga variables de entorno desde un archivo.
    • -e, --env [nombre]: selecciona un perfil de entorno.
    • --base-dir [ruta]: establece el directorio base de la aplicación para la resolución.
    • --verbose: muestra registros detallados.
    • --prefix [etiqueta]: prefija las líneas de registro.

    Nota: la CLI imprime un informe detallado pero no termina con un código distinto de cero en caso de fallos. Para control en CI, añade una prueba unitaria (más abajo) que verifique que no hay locales requeridos faltantes.


    Prueba programática (Vitest/Jest)

    Usa la API CLI de Intlayer para asegurar que no falten traducciones en tus locales requeridos.

    Copiar código

    Copiar el código al portapapeles

    /* @vitest-environment node */import { listMissingTranslations } from "intlayer/cli";import { describe, expect, it } from "vitest";describe("traducciones", () => {  it("no tiene locales requeridos faltantes", () => {    const result = listMissingTranslations();    if (result.missingRequiredLocales.length > 0) {      // Útil cuando la prueba falla localmente o en CI      console.log(result.missingTranslations);    }    expect(result.missingRequiredLocales).toHaveLength(0);  });});

    Equivalente en Jest:

    Copiar código

    Copiar el código al portapapeles

    import { listMissingTranslations } from "intlayer/cli";test("no tiene locales requeridos faltantes", () => {  const result = listMissingTranslations();  if (result.missingRequiredLocales.length > 0) {    console.log(result.missingTranslations);  }  expect(result.missingRequiredLocales).toHaveLength(0);});

    Cómo funciona:

    • Intlayer lee tu configuración (locales, requiredLocales) y los diccionarios declarados, luego informa:
      • missingTranslations: por clave, qué locales faltan y de qué archivo.
      • missingLocales: unión de todos los locales faltantes.
      • missingRequiredLocales: subconjunto limitado a requiredLocales (o todos los locales si requiredLocales no está definido).

    Pruebas de UI localizada (React / Next.js)

    Renderiza componentes bajo un proveedor de Intlayer y verifica el contenido visible.

    Ejemplo en React (Testing Library):

    tsx
    Copiar código

    Copiar el código al portapapeles

    import { IntlayerProvider } from "react-intlayer/client";import { render, screen } from "@testing-library/react";import { MyComponent } from "./MyComponent";test("renders localized title in English", () => {  render(    <IntlayerProvider locale="en-US">      <MyComponent />    </IntlayerProvider>  );  expect(screen.getByText("Título esperado en inglés")).toBeInTheDocument();});

    Ejemplo en Next.js (App Router): usa el envoltorio del framework:

    tsx
    Copiar código

    Copiar el código al portapapeles

    import { IntlayerClientProvider } from "next-intlayer/client";import { render, screen } from "@testing-library/react";import { MyPage } from "./MyPage";test("renderiza encabezado localizado en francés", () => {  render(    <IntlayerClientProvider locale="fr-FR">      <MyPage />    </IntlayerClientProvider>  );  expect(    screen.getByRole("heading", { name: "Titre attendu" })  ).toBeInTheDocument();});

    Consejos:

    • Cuando necesites valores de cadena sin procesar para atributos (por ejemplo, aria-label), accede al campo .value que devuelve useIntlayer en React.
    • Mantén los diccionarios junto con los componentes para facilitar las pruebas unitarias y la limpieza.

    Integración Continua

    Agrega una prueba que falle la compilación cuando falten traducciones requeridas.

    package.json:

    json
    Copiar código

    Copiar el código al portapapeles

    {  "scripts": {    "test:i18n": "vitest run -c"  }}

    Ejemplo de GitHub Actions:

    yaml
    Copiar código

    Copiar el código al portapapeles

    name: CIon: [push, pull_request]jobs:  test:    runs-on: ubuntu-latest    steps:      - uses: actions/checkout@v4      - uses: actions/setup-node@v4        with:          node-version: 20      - run: npm ci      - run: npm run test:i18n

    Opcional: ejecuta la auditoría CLI para un resumen legible por humanos junto con las pruebas:

    bash
    Copiar código

    Copiar el código al portapapeles

    npx intlayer content test --verbose

    Solución de Problemas

    • Asegúrate de que tu configuración de Intlayer defina locales y (opcionalmente) requiredLocales.
    • Si tu aplicación usa diccionarios dinámicos o remotos, ejecuta las pruebas en un entorno donde los diccionarios estén disponibles.
    • Para monorepos mixtos, usa --base-dir para apuntar la CLI a la raíz correcta de la aplicación.

    Autocompletado
    Optimización de bundle
    Alt+→

    En esta página

      Las conversaciones son anónimas y se revisan regularmente para abordar problemas comunes. No dudes en compartir ideas de funcionalidades, comentarios sobre la documentación o cualquier cosa relacionada con Intlayer, usamos esta información para definir nuestra hoja de ruta y mejorar el producto.

      npx intlayer content test
      /* @vitest-environment node */import { listMissingTranslations } from "intlayer/cli";import { describe, expect, it } from "vitest";describe("traducciones", () => {  it("no tiene locales requeridos faltantes", () => {    const result = listMissingTranslations();    if (result.missingRequiredLocales.length > 0) {      // Útil cuando la prueba falla localmente o en CI      console.log(result.missingTranslations);    }    expect(result.missingRequiredLocales).toHaveLength(0);  });});
      import { listMissingTranslations } from "intlayer/cli";test("no tiene locales requeridos faltantes", () => {  const result = listMissingTranslations();  if (result.missingRequiredLocales.length > 0) {    console.log(result.missingTranslations);  }  expect(result.missingRequiredLocales).toHaveLength(0);});
      import { IntlayerProvider } from "react-intlayer/client";import { render, screen } from "@testing-library/react";import { MyComponent } from "./MyComponent";test("renders localized title in English", () => {  render(    <IntlayerProvider locale="en-US">      <MyComponent />    </IntlayerProvider>  );  expect(screen.getByText("Título esperado en inglés")).toBeInTheDocument();});
      import { IntlayerClientProvider } from "next-intlayer/client";import { render, screen } from "@testing-library/react";import { MyPage } from "./MyPage";test("renderiza encabezado localizado en francés", () => {  render(    <IntlayerClientProvider locale="fr-FR">      <MyPage />    </IntlayerClientProvider>  );  expect(    screen.getByRole("heading", { name: "Titre attendu" })  ).toBeInTheDocument();});
      {  "scripts": {    "test:i18n": "vitest run -c"  }}
      name: CIon: [push, pull_request]jobs:  test:    runs-on: ubuntu-latest    steps:      - uses: actions/checkout@v4      - uses: actions/setup-node@v4        with:          node-version: 20      - run: npm ci      - run: npm run test:i18n
      npx intlayer content test --verbose