【Chromatic】Storybookビジュアルテストの導入ガイド - セットアップからCI連携まで

PUBLISHED 2026-02-06

【Chromatic】Storybookビジュアルテストの導入ガイド

Chromaticは、Storybook社が提供するビジュアルテスト・UIレビュープラットフォームです。UIコンポーネントのスクリーンショットを自動的に撮影し、変更前後の差分をピクセル単位で検出できます。この記事では、Chromaticのセットアップ方法からGitHub Actionsとの連携まで、実践的な導入手順を解説します。

Chromatic の主な機能

📸 ビジュアルリグレッションテスト

UIコンポーネントのスクリーンショットを自動撮影し、変更前後の画像をピクセル単位で比較します。意図しないUI変更を検出できます。

👀 UIレビュー

PRごとにStorybookを自動デプロイし、チームメンバーがブラウザ上でUIをレビュー・コメントできます。デザイナーとの協業にも有効です。

☁️ Storybookホスティング

Storybookを自動的にクラウドにパブリッシュします。バージョン管理や履歴の保持、共有URLの発行ができます。

🔄 CI/CD連携

GitHub、GitLab、Bitbucket等と統合し、PRにステータスチェックを追加できます。変更があった場合のみレビューを要求します。

前提条件

要件バージョン
Storybook6.5以上(推奨: 7.6以上)
Node.js18, 20, 21

セットアップ手順

アカウント作成とプロジェクトトークン取得

1
Chromatic にサインアップ

Chromatic にアクセスし、GitHub / GitLab / Bitbucket / Email のいずれかでサインアップします。

2
新規プロジェクトを作成

ダッシュボードから新規プロジェクトを作成し、Project Token をコピーします。このトークンは後のステップで使用します。

パッケージインストール

お使いのパッケージマネージャーに応じてインストールします。

# npm
npm install --save-dev chromatic

# yarn
yarn add --dev chromatic

# pnpm
pnpm add -D chromatic

初回ビルド(ベースライン作成)

3
初回ビルドを実行

以下のコマンドで初回ビルドを実行します。すべてのStorybookストーリーのスクリーンショットが撮影され、ベースラインとして保存されます。

npx chromatic --project-token=<your-project-token>
📌 ベースラインとは

ベースラインは、UIの「正しい状態」を表すスクリーンショットのセットです。以降のビルドではこのベースラインと比較して差分を検出します。

package.json にスクリプト追加

{
  "scripts": {
    "chromatic": "chromatic"
  }
}

環境変数でトークンを管理する場合は、.env やCI環境変数に設定します。

# .env または CI環境変数に設定
CHROMATIC_PROJECT_TOKEN=your-token-here

以降は以下のコマンドで実行できます。

npm run chromatic

GitHub Actions 連携

ワークフローファイルの作成

.github/workflows/chromatic.yml を作成します。

name: Chromatic

on:
  push:
    branches:
      - main
      - develop
  pull_request:
    branches:
      - main

jobs:
  chromatic:
    runs-on: ubuntu-latest
    steps:
      # コードをチェックアウト(履歴全体を取得)
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0  # TurboSnapに必要

      # Node.jsセットアップ
      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'

      # 依存関係インストール
      - name: Install dependencies
        run: npm ci

      # Chromatic実行
      - name: Run Chromatic
        uses: chromaui/action@latest
        with:
          projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
          onlyChanged: true  # TurboSnap有効化
⚠️

fetch-depth: 0 は必須です。TurboSnapがGit履歴を使って変更ファイルを特定するため、履歴全体が必要になります。

GitHub Secrets の設定

1
Secrets設定画面を開く

リポジトリの SettingsSecrets and variablesActions に移動します。

2
トークンを登録

New repository secret をクリックし、以下を入力して保存します。

項目
NameCHROMATIC_PROJECT_TOKEN
Valueプロジェクトトークン

レビューワークフロー

Chromaticを導入した後の開発フローは以下のようになります。

%%{init: {'theme':'neutral'}}%% graph TD A[開発者がPRを作成] --> B[GitHub ActionsがChromaticを実行] B --> C{UIの差分を検出} C -->|差分あり| D[Chromaticダッシュボードでレビュー] C -->|差分なし| G[PRにチェックマーク] D --> E{承認} E -->|承認| G E -->|却下| F[修正してコミット] F --> B G --> H[マージ → 新しいベースラインに]

主要な CLI オプション

オプション説明
--project-tokenプロジェクトトークン
--only-changedTurboSnap(変更のあるストーリーのみテスト)
--auto-accept-changes変更を自動承認(mainブランチ用)
--exit-zero-on-changes変更があっても終了コード0
--skipビルドをスキップ
--dry-run実際にアップロードせずテスト
--debugデバッグログ出力
# TurboSnapを有効にして実行
npx chromatic --only-changed

# mainブランチでは自動承認
npx chromatic --auto-accept-changes="main"
💡 auto-accept-changes の活用

mainブランチにマージされたコードは「正しい状態」として扱いたい場合、--auto-accept-changes="main" を指定すると、mainブランチへのプッシュ時にベースラインが自動更新されます。

TurboSnap(高速化機能)

TurboSnapは、変更のあったファイルに関連するストーリーのみテストする機能です。ビルド時間とスナップショット消費を大幅に削減します。

GitHub Actions での設定

- uses: chromaui/action@latest
  with:
    projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
    onlyChanged: true
    externals: "public/**"  # 静的ファイルの変更も検知
✅ TurboSnapあり

変更されたストーリーのみテスト。スナップショット消費が少なく高速。

❌ TurboSnapなし

全ストーリーをテスト。毎回大量のスナップショットを消費。

.gitignore に追加

Chromaticのビルドログや一時ファイルをバージョン管理から除外します。

# Chromatic
build-storybook.log
chromatic.log
chromatic-build-*.xml
storybook-static/

料金プラン

プランスナップショット/月価格
Free5,000無料
Pro35,000〜$149/月〜
Enterpriseカスタム要相談
💡 無料枠の目安

月5,000スナップショットは、50個のストーリーを毎日1回テストした場合、約3ヶ月分に相当します。TurboSnapを有効にすればさらに節約できます。

セットアップチェックリスト

Chromatic導入チェックリスト
  • アカウント Chromaticにサインアップ済み
  • トークン Project Tokenを取得済み
  • パッケージ chromaticをdevDependenciesにインストール済み
  • 初回ビルド ベースラインを作成済み
  • CI連携 GitHub Actionsワークフローを設定済み
  • Secrets CHROMATIC_PROJECT_TOKENを設定済み
  • gitignore ログファイルを除外済み

参考文献

まとめ

Chromaticを導入することで、UIの意図しない変更を自動的に検出し、チーム内でのUIレビューを効率化できます。TurboSnapを活用すれば無料枠でも十分に運用可能です。GitHub Actionsとの連携により、PRごとにビジュアルテストが自動実行される仕組みを構築できます。

CATEGORY
TAGS
円