InícioAmbiente de testeVitrineAppDocBlog
    • Englishinglês
      EN
    • русскийrusso
      RU
    • 日本語japonês
      JA
    • françaisfrancês
      FR
    • 한국어coreano
      KO
    • 中文chinês
      ZH
    • españolespanhol
      ES
    • Deutschalemão
      DE
    • العربيةárabe
      AR
    • italianoitaliano
      IT
    • British Englishinglês (Reino Unido)
      EN-GB
    • portuguêsportuguês
      PT
    • हिन्दीhindi
      HI
    • Türkçeturco
      TR
    • polskipolonês
      PL
    • Indonesiaindonésio
      ID
    • Tiếng Việtvietnamita
      VI
    • українськаucraniano
      UK
    /
    Filtrar documentação por framework
    Alt+←
    Por que Intlayer?
    Começar
    Conceito
    • Como o Intlayer funciona
    • Configuração
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Editor visual
    • CMS
    • Integração CI/CD
    • TraduçãoPluralEnumeraçãoCondiçãoGêneroInserçãoArquivoAninhamentoMarkdownHTMLBusca de função
    • Arquivo por locale
    • Compilador
    • Preenchimento automático
    • Testes
    • Otimização de bundle
    Ambiente
    • Next.js 14 e App Router
      Next.js 15
      Next.js sem locale URL
      Next.js e Page Router
      Compiler
    • Tanstack Start Solid
    • Astro e React
      Astro e Svelte
      Astro e Vue
      Astro e Solid
      Astro e Preact
      Astro e Lit
      Astro e Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt e Vue
    • Vite e Solid
    • SvelteKit
    • Vite e Preact
    • Vite e Vanilla JS
    • Vite e Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native e Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx e React
    Plugins
    • JSON
    • gettext (.po)
    Extensão VS Code
    Agente
    • Servidor MCP
    • Habilidades do agente
    Versões
    • v8
    • v7
    • v6
    Benchmark
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Blog
    Faça uma pergunta
    1. Documentation
    2. Testing
    Criação:2025-03-01Última atualização:2025-09-20
    Referência esta documentação ao seu assistente AI favorito
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Faça sua pergunta e obtenha um resumo do documento referenciando esta página e o provedor AI de sua escolha

    Este documento está desatualizado, a versão base foi atualizada em 5 de outubro de 2025.

    Ir para a documentação em inglês

    Histórico de versões

    1. "Introdução dos testes"
      v6.0.020/09/2025

    O conteúdo desta página foi traduzido com uma IA.

    Veja a última versão do conteúdo original em inglês
    Editar esta documentação

    Se você tiver uma ideia para melhorar esta documentação, sinta-se à vontade para contribuir enviando uma pull request no GitHub.

    Link do GitHub para a documentação
    Copiar

    Copiar o Markdown do documento para a área de transferência

    Testando seu conteúdo

    Este guia mostra como verificar automaticamente se seus dicionários estão completos, detectar traduções faltantes antes do lançamento e testar a interface localizada em seu aplicativo.


    O que você pode testar

    • Traduções faltantes: falhar no CI se algum idioma obrigatório estiver faltando em qualquer dicionário.
    • Renderização da interface localizada: renderizar componentes com um provedor de idioma específico e verificar textos/atributos visíveis.
    • Auditorias em tempo de build: executar uma auditoria rápida localmente via CLI.

    Início rápido: auditoria via CLI

    Execute a auditoria a partir da raiz do seu projeto:

    bash
    Copiar código

    Copiar o código para a área de transferência

    npx intlayer content test

    Flags úteis:

    • --env-file [caminho]: carrega variáveis de ambiente a partir de um arquivo.
    • -e, --env [nome]: seleciona um perfil de ambiente.
    • --base-dir [caminho]: define o diretório base do app para resolução.
    • --verbose: exibe logs detalhados.
    • --prefix [rótulo]: prefixa as linhas de log.

    Nota: o CLI imprime um relatório detalhado, mas não retorna código de erro em caso de falhas. Para controle em CI, adicione um teste unitário (abaixo) que assegure que não há locais obrigatórios faltando.


    Teste programático (Vitest/Jest)

    Use a API do CLI do Intlayer para garantir que não há traduções faltando para os locais obrigatórios.

    Copiar código

    Copiar o código para a área de transferência

    /* @vitest-environment node */import { listMissingTranslations } from "intlayer/cli";import { describe, expect, it } from "vitest";describe("traduções", () => {  it("não possui locais obrigatórios faltando", () => {    const result = listMissingTranslations();    if (result.missingRequiredLocales.length > 0) {      // Útil quando o teste falha localmente ou no CI      console.log(result.missingTranslations);    }    expect(result.missingRequiredLocales).toHaveLength(0);  });});

    Equivalente em Jest:

    Copiar código

    Copiar o código para a área de transferência

    import { listMissingTranslations } from "intlayer/cli";test("não possui locais obrigatórios faltando", () => {  const result = listMissingTranslations();  if (result.missingRequiredLocales.length > 0) {    console.log(result.missingTranslations);  }  expect(result.missingRequiredLocales).toHaveLength(0);});

    Como funciona:

    • O Intlayer lê sua configuração (locales, requiredLocales) e os dicionários declarados, então reporta:
      • missingTranslations: por chave, quais locais estão faltando e de qual arquivo.
      • missingLocales: união de todos os locais faltantes.
      • missingRequiredLocales: subconjunto limitado a requiredLocales (ou todos os locais se requiredLocales não estiver definido).

    Testando UI localizada (React / Next.js)

    Renderize componentes dentro de um provedor Intlayer e faça asserções no conteúdo visível.

    Exemplo React (Testing Library):

    tsx
    Copiar código

    Copiar o código para a área de transferência

    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 em inglês")).toBeInTheDocument();});

    Exemplo Next.js (App Router): use o wrapper do framework:

    tsx
    Copiar código

    Copiar o código para a área de transferência

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

    Dicas:

    • Quando precisar dos valores brutos das strings para atributos (ex.: aria-label), acesse o campo .value retornado por useIntlayer no React.
    • Mantenha os dicionários localizados junto com os componentes para facilitar os testes unitários e a limpeza.

    Integração Contínua

    Adicione um teste que falhe a build quando traduções obrigatórias estiverem faltando.

    package.json:

    json
    Copiar código

    Copiar o código para a área de transferência

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

    Exemplo GitHub Actions:

    yaml
    Copiar código

    Copiar o código para a área de transferência

    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: execute a auditoria CLI para um resumo legível por humanos junto com os testes:

    bash
    Copiar código

    Copiar o código para a área de transferência

    npx intlayer content test --verbose

    Solução de Problemas

    • Certifique-se de que sua configuração do Intlayer define locales e (opcionalmente) requiredLocales.
    • Se seu aplicativo usa dicionários dinâmicos ou remotos, execute os testes em um ambiente onde os dicionários estejam disponíveis.
    • Para monorepos mistos, use --base-dir para apontar o CLI para a raiz correta da aplicação.

    Preenchimento automático
    Otimização de bundle
    Alt+→

    Nesta página

      As discussões são anônimas e regularmente revisadas para resolver problemas comuns. Sinta-se à vontade para compartilhar ideias de funcionalidades, feedback sobre a documentação ou qualquer coisa relacionada ao Intlayer, usamos essas informações para moldar nosso roadmap e melhorar o produto.

      npx intlayer content test
      /* @vitest-environment node */import { listMissingTranslations } from "intlayer/cli";import { describe, expect, it } from "vitest";describe("traduções", () => {  it("não possui locais obrigatórios faltando", () => {    const result = listMissingTranslations();    if (result.missingRequiredLocales.length > 0) {      // Útil quando o teste falha localmente ou no CI      console.log(result.missingTranslations);    }    expect(result.missingRequiredLocales).toHaveLength(0);  });});
      import { listMissingTranslations } from "intlayer/cli";test("não possui locais obrigatórios faltando", () => {  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 em inglês")).toBeInTheDocument();});
      import { IntlayerClientProvider } from "next-intlayer/client";import { render, screen } from "@testing-library/react";import { MyPage } from "./MyPage";test("renderiza título localizado em 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