---
createdAt: 2025-03-01
updatedAt: 2025-10-05
title: Menguji konten Anda
description: Temukan cara menguji konten Anda dengan Intlayer.
keywords:
  - Pengujian
  - Intlayer
  - Internasionalisasi
  - CMS
  - Sistem Manajemen Konten
  - Editor Visual
slugs:
  - doc
  - testing
history:
  - version: 6.0.1
    date: 2025-10-05
    changes: "Membuat pengujian asinkron dan menambahkan opsi build"
  - version: 6.0.0
    date: 2025-09-20
    changes: "Pengenalan pengujian"
---

# Menguji konten Anda

Panduan ini menunjukkan cara memverifikasi secara otomatis bahwa kamus Anda lengkap, menangkap terjemahan yang hilang sebelum pengiriman, dan menguji UI yang dilokalisasi dalam aplikasi Anda.

---

## Apa yang bisa Anda uji

- **Terjemahan yang hilang**: gagal CI jika ada locale yang diperlukan hilang untuk kamus apa pun.
- **Rendering UI yang dilokalisasi**: render komponen dengan penyedia locale tertentu dan pastikan teks/atribut yang terlihat.
- **Audit saat build**: jalankan audit cepat secara lokal melalui CLI.

---

## Mulai cepat: audit melalui CLI

Jalankan audit dari root proyek Anda:

```bash packageManager="npm"
npx intlayer content test
```

```bash packageManager="yarn"
yarn intlayer content test
```

```bash packageManager="pnpm"
pnpm intlayer content test
```

```bash packageManager="bun"
bun x intlayer content test
```

Flag yang berguna:

- `--env-file [path]`: memuat variabel lingkungan dari sebuah file.
- `-e, --env [name]`: memilih profil lingkungan.
- `--base-dir [path]`: menetapkan direktori dasar aplikasi untuk resolusi.
- `--verbose`: menampilkan log secara detail.
- `--prefix [label]`: menambahkan prefix pada baris log.
- `--build [build]`: membangun kamus sebelum pengujian untuk memastikan konten terbaru. True akan memaksa build, false akan melewati build, undefined akan menggunakan cache build.

Catatan: CLI mencetak laporan terperinci tetapi tidak keluar dengan kode non-zero saat terjadi kegagalan. Untuk pengujian CI, tambahkan unit test (di bawah) yang memastikan tidak ada locale wajib yang hilang.

---

## Pengujian programatik (Vitest/Jest)

Gunakan Intlayer CLI API untuk memastikan tidak ada terjemahan yang hilang untuk locale wajib Anda.

```ts fileName=i18n.test.ts
/* @vitest-environment node */
import { listMissingTranslations } from "intlayer/cli";
import { describe, expect, it } from "vitest";

describe("translations", () => {
  it("has no missing required locales", async () => {
    const result = await listMissingTranslations();

    if (result.missingRequiredLocales.length > 0) {
      // Berguna saat pengujian gagal secara lokal atau di CI
      console.log(result.missingTranslations);
    }

    expect(result.missingRequiredLocales).toHaveLength(0);
  });
});
```

Setara Jest:

```ts fileName=i18n.test.ts
import { listMissingTranslations } from "intlayer/cli";

test("tidak ada locale wajib yang hilang", async () => {
  const result = await listMissingTranslations();

  if (result.missingRequiredLocales.length > 0) {
    // Berguna saat pengujian gagal secara lokal atau di CI
    console.log(result.missingTranslations);
  }

  expect(result.missingRequiredLocales).toHaveLength(0);
});
```

Cara kerjanya:

- Intlayer membaca konfigurasi Anda (locales, requiredLocales) dan kamus yang dideklarasikan, lalu melaporkan:
  - `missingTranslations`: per kunci, locale mana yang hilang dan dari file mana.
  - `missingLocales`: gabungan dari semua locale yang hilang.
  - `missingRequiredLocales`: subset terbatas pada `requiredLocales` (atau semua locales jika `requiredLocales` tidak disetel).

---

## Menguji UI yang dilokalkan (React / Next.js)

Render komponen di bawah penyedia Intlayer dan lakukan assert pada konten yang terlihat.

Contoh React (Testing Library):

```tsx
import { IntlayerProvider } from "react-intlayer/client";
import { render, screen } from "@testing-library/react";
import { MyComponent } from "./MyComponent";

test("menampilkan judul yang dilokalkan dalam bahasa Inggris", () => {
  render(
    <IntlayerProvider locale="en-US">
      <MyComponent />
    </IntlayerProvider>
  );

  expect(screen.getByText("Expected English title")).toBeInTheDocument();
});
```

Contoh Next.js (App Router): gunakan pembungkus framework:

```tsx
import { IntlayerClientProvider } from "next-intlayer/client";
import { render, screen } from "@testing-library/react";
import { MyPage } from "./MyPage";

test("menampilkan heading yang dilokalkan dalam bahasa Prancis", () => {
  render(
    <IntlayerClientProvider locale="fr-FR">
      <MyPage />
    </IntlayerClientProvider>
  );
  expect(
    screen.getByRole("heading", { name: "Titre attendu" })
  ).toBeInTheDocument();
});
```

Tips:

- Saat Anda membutuhkan nilai string mentah untuk atribut (misalnya, `aria-label`), akses field `.value` yang dikembalikan oleh `useIntlayer` di React.
- Simpan kamus berdekatan dengan komponen untuk memudahkan pengujian unit dan pembersihan.

---

## Integrasi Berkelanjutan

Tambahkan pengujian yang akan membuat build gagal ketika terjemahan yang dibutuhkan hilang.

`package.json`:

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

Contoh GitHub Actions:

```yaml
name: CI
on: [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
```

Opsional: jalankan audit CLI untuk ringkasan yang mudah dibaca manusia bersamaan dengan pengujian:

```bash packageManager="npm"
npx intlayer content test --verbose
```

```bash packageManager="yarn"
yarn intlayer content test --verbose
```

```bash packageManager="pnpm"
pnpm intlayer content test --verbose
```

```bash packageManager="bun"
bun x intlayer content test --verbose
```

---

## Pemecahan Masalah

- Pastikan konfigurasi Intlayer Anda mendefinisikan `locales` dan (opsional) `requiredLocales`.
- Jika aplikasi Anda menggunakan kamus dinamis atau jarak jauh, jalankan pengujian di lingkungan di mana kamus tersebut tersedia.
- Untuk monorepo campuran, gunakan `--base-dir` untuk mengarahkan CLI ke root aplikasi yang benar.

---
