🌎

Playwrightで多言語対応ライブラリを日本語でテストする

に公開

何をやっているか?

多言語対応のデータピッカーやカレンダーコンポーネントをE2Eテストで検証するとき、表示言語を切り替えた状態でUIやバリデーションをチェックしたいケースがよくあります。
特に「日本語だけテストできればよい」という要件で、Playwright上のブラウザ表示と言語ヘッダーを手軽に日本語指定する方法をまとめます。

背景

  • 複数言語対応しているUIコンポーネント(データピッカー等)をE2Eテストしたい
  • 今回テスト対象の環境は「日本語ブラウザのみ」
  • Playwrightのブラウザ起動時にUIが英語になったり、多言語のテスト用データが混在して煩雑になるのを防ぎたい

解決方法

playwright.config.tsuse オプションで
locale および extraHTTPHeaders を日本語に設定することで、
ブラウザ・リクエスト両面から「日本語環境」をシミュレートできます。

  • locale: 'ja-JP' でブラウザUI・日付・通貨などを日本語化
  • extraHTTPHeaders: { 'Accept-Language': 'ja-JP,ja;q=0.9' } でHTTPリクエストの言語指定

実際の playwright.config.ts 設定例

use内にlocateとextraHTTPHeadersを日本語設定を行います。

import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
  testDir: './tests',
  fullyParallel: true,
  forbidOnly: !!process.env.CI,
  retries: process.env.CI ? 2 : 0,
  workers: process.env.CI ? 1 : undefined,
  reporter: 'html',
  use: {
    trace: 'on-first-retry',
    // ブラウザの言語を日本語に設定
    locale: 'ja-JP',
    // HTTPヘッダーでAccept-Languageを日本語に設定
    extraHTTPHeaders: {
      'Accept-Language': 'ja-JP,ja;q=0.9'
    },
  },
  projects: [
    {
      name: 'chromium',
      use: { ...devices['Desktop Chrome'] },
    },
    {
      name: 'firefox',
      use: { ...devices['Desktop Firefox'] },
    },
    {
      name: 'webkit',
      use: { ...devices['Desktop Safari'] },
    },
  ],
  // 任意:開発サーバの起動を自動化する場合
  // webServer: {
  //   command: 'npm run start',
  //   url: 'http://127.0.0.1:3000',
  //   reuseExistingServer: !process.env.CI,
  // },
});

実装後の効果・注意点

  • 日本語ブラウザ環境のみテストしたい場合はこの設定で十分
  • 複数言語を同時にテストする場合は、各プロジェクトごとにlocaleextraHTTPHeadersを上書きする設計も考慮
  • UIコンポーネントによっては、locale以外に明示的なプロパティ設定が必要な場合もあるので、該当ライブラリのドキュメントも確認推奨

まとめ

  • Playwrightで多言語UIのE2Eテストを行う際、テスト環境の言語固定は playwright.config.tslocale & Accept-Language ヘッダーで完結
  • 日本語UIのみでよければグローバル設定で十分

Discussion