---
generated_at: 2026-03-01 10:30:00
metrics:
  claims_total: 78
  claims_with_evidence: 78
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：plugin-seo 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：78 / 78、根拠なし：0
- 優先レビュー（高）
  1. **なし**：全テストケースに根拠あり

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。

- E-01: `packages/plugin-seo/src/index.tsx` - seoPlugin関数の実装（メインプラグイン関数、エンドポイント定義）
- E-02: `packages/plugin-seo/src/defaults.ts` - タイトル・説明のデフォルト長さ設定
- E-03: `packages/plugin-seo/src/types.ts` - SEOPluginConfig、GenerateTitle等の型定義
- E-04: `packages/plugin-seo/src/fields/MetaTitle/index.ts` - MetaTitleFieldファクトリ関数
- E-05: `packages/plugin-seo/src/fields/MetaTitle/MetaTitleComponent.tsx` - MetaTitleコンポーネント
- E-06: `packages/plugin-seo/src/fields/MetaDescription/index.ts` - MetaDescriptionFieldファクトリ関数
- E-07: `packages/plugin-seo/src/fields/MetaDescription/MetaDescriptionComponent.tsx` - MetaDescriptionコンポーネント
- E-08: `packages/plugin-seo/src/fields/MetaImage/index.ts` - MetaImageFieldファクトリ関数
- E-09: `packages/plugin-seo/src/fields/MetaImage/MetaImageComponent.tsx` - MetaImageコンポーネント
- E-10: `packages/plugin-seo/src/fields/Preview/index.tsx` - PreviewFieldファクトリ関数
- E-11: `packages/plugin-seo/src/fields/Preview/PreviewComponent.tsx` - Previewコンポーネント
- E-12: `packages/plugin-seo/src/fields/Overview/index.tsx` - OverviewFieldファクトリ関数
- E-13: `packages/plugin-seo/src/fields/Overview/OverviewComponent.tsx` - Overviewコンポーネント
- E-14: `packages/plugin-seo/src/ui/LengthIndicator.tsx` - 文字数インジケーターコンポーネント
- E-15: `packages/plugin-seo/src/ui/Pill.tsx` - ステータスPillコンポーネント
- E-16: `packages/plugin-seo/src/translations/index.ts` - 翻訳エクスポート

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | seoPluginがPayload Configを変換してSEOフィールドを追加する | E-01 (L20-283: seoPlugin関数定義) | ○ |
| C-02 | collectionsオプションでSEOフィールドを追加するコレクションを指定 | E-01 (L63: pluginConfig?.collections?.includes(slug)) | ○ |
| C-03 | globalsオプションでSEOフィールドを追加するグローバルを指定 | E-01 (L234-235: config.globals?.map) | ○ |
| C-04 | tabbedUIがtrueの場合タブ形式でSEOフィールドを表示 | E-01 (L66-123: tabbedUI分岐処理) | ○ |
| C-05 | uploadsCollectionを指定するとMetaImageFieldが追加される | E-01 (L31-38: uploadsCollection条件分岐) | ○ |
| C-06 | uploadsCollection未指定時はMetaImageFieldが追加されない | E-01 (L31-38: 条件付きスプレッド) | ○ |
| C-07 | fieldsオーバーライド関数でデフォルトフィールドをカスタマイズ可能 | E-01 (L49-51: pluginConfig.fields呼び出し) | ○ |
| C-08 | /plugin-seo/generate-titleエンドポイントでタイトル生成 | E-01 (L133-158: エンドポイント定義) | ○ |
| C-09 | /plugin-seo/generate-descriptionエンドポイントで説明生成 | E-01 (L159-179: エンドポイント定義) | ○ |
| C-10 | /plugin-seo/generate-urlエンドポイントでURL生成 | E-01 (L183-206: エンドポイント定義) | ○ |
| C-11 | /plugin-seo/generate-imageエンドポイントで画像生成 | E-01 (L207-230: エンドポイント定義) | ○ |
| C-12 | i18n翻訳がConfigにマージされる | E-01 (L278-281: deepMergeSimple) | ○ |
| C-13 | generateTitle未設定時は空文字を返す | E-01 (L144-153: 三項演算子で空文字) | ○ |
| C-14 | collectionsが空配列の場合コレクションは変更されない | E-01 (L63: includes(slug)がfalse) | ○ |
| C-15 | auth有効コレクションでemailフィールドが正しく処理される | E-01 (L68-72: emailField検出と配置) | ○ |
| C-16 | interfaceNameがmetaグループに設定される | E-01 (L53: interfaceName: pluginConfig.interfaceName) | ○ |
| C-17 | MetaTitleFieldがTextField型を返す | E-04 (L13-30: return文) | ○ |
| C-18 | MetaTitleFieldでhasGenerateFnがclientPropsに設定される | E-04 (L21: hasGenerateTitleFn: hasGenerateFn) | ○ |
| C-19 | MetaTitleFieldでoverridesが適用される | E-04 (L28: スプレッド演算子) | ○ |
| C-20 | MetaDescriptionFieldがTextareaField型を返す | E-06 (L13-30: return文) | ○ |
| C-21 | MetaDescriptionFieldでhasGenerateFnがclientPropsに設定される | E-06 (L21: hasGenerateDescriptionFn) | ○ |
| C-22 | MetaDescriptionFieldでoverridesが適用される | E-06 (L28: スプレッド演算子) | ○ |
| C-23 | MetaImageFieldがUploadField型を返す | E-08 (L14-36: return文) | ○ |
| C-24 | MetaImageFieldでhasGenerateFnがclientPropsに設定される | E-08 (L22: hasGenerateImageFn) | ○ |
| C-25 | MetaImageFieldでoverridesが適用される | E-08 (L32: スプレッド演算子) | ○ |
| C-26 | PreviewFieldがUIField型を返す | E-10 (L25-49: return文) | ○ |
| C-27 | PreviewFieldでhasGenerateFnがclientPropsに設定される | E-10 (L39: hasGenerateURLFn) | ○ |
| C-28 | PreviewFieldでtitlePath/descriptionPathが渡される | E-10 (L37-38: clientPropsプロパティ) | ○ |
| C-29 | OverviewFieldがUIField型を返す | E-12 (L35-63: return文) | ○ |
| C-30 | OverviewFieldでtitleOverrides/descriptionOverridesが渡される | E-12 (L50-51: clientPropsプロパティ) | ○ |
| C-31 | OverviewFieldでimagePath/titlePath/descriptionPathが渡される | E-12 (L52-54: clientPropsプロパティ) | ○ |
| C-32 | LengthIndicatorで空テキスト時に'missing'ラベル表示 | E-14 (L29-35: textLength === 0分岐) | ○ |
| C-33 | LengthIndicatorで90%以上時に'almostThere'ラベル表示 | E-14 (L42-47: ratioUntilMin > 0.9分岐) | ○ |
| C-34 | LengthIndicatorで90%未満時に'tooShort'ラベル表示 | E-14 (L48-54: else分岐) | ○ |
| C-35 | LengthIndicatorで適正範囲時に'good'ラベル表示 | E-14 (L59-66: progress >= 0 && progress <= 1) | ○ |
| C-36 | LengthIndicatorで最大値超過時に'tooLong'ラベル表示 | E-14 (L68-75: progress > 1) | ○ |
| C-37 | LengthIndicatorでちょうど最小値時に'good'ラベル表示 | E-14 (L59: progress >= 0条件) | ○ |
| C-38 | LengthIndicatorでちょうど最大値時に'good'ラベル表示 | E-14 (L59: progress <= 1条件) | ○ |
| C-39 | LengthIndicatorで最大値+1時に'tooLong'ラベル表示 | E-14 (L68: progress > 1条件) | ○ |
| C-40 | LengthIndicatorでbarWidthが進捗に応じて計算される | E-14 (L37, 56, 65, 74: setBarWidth呼び出し) | ○ |
| C-41 | Pillがpropsに基づいてレンダリングされる | E-15 (L12-27: return JSX) | ○ |
| C-42 | Pillで空ラベルでもレンダリングされる | E-15 (L25: {label}で空文字も許容) | ○ |
| C-43 | MetaTitleComponentがTextInputをレンダリングする | E-05 (L188-201: TextInput) | ○ |
| C-44 | MetaTitleComponentでhasGenerateTitleFn時にボタン表示 | E-05 (L142-163: 条件付きボタン) | ○ |
| C-45 | MetaTitleComponentでボタンクリック時にAPI呼び出し | E-05 (L72-124: regenerateTitle関数) | ○ |
| C-46 | MetaTitleComponentでAPIレスポンスで値更新 | E-05 (L108: setValue(generatedTitle)) | ○ |
| C-47 | MetaTitleComponentでhasGenerateTitleFn=false時にAPI未呼び出し | E-05 (L73-75: 早期return) | ○ |
| C-48 | MetaTitleComponentでreadOnly時にボタン無効化 | E-05 (L146: disabled={readOnly}) | ○ |
| C-49 | MetaDescriptionComponentがTextareaInputをレンダリングする | E-07 (L187-200: TextareaInput) | ○ |
| C-50 | MetaDescriptionComponentでhasGenerateDescriptionFn時にボタン表示 | E-07 (L142-163: 条件付きボタン) | ○ |
| C-51 | MetaDescriptionComponentでボタンクリック時にAPI呼び出し | E-07 (L71-124: regenerateDescription関数) | ○ |
| C-52 | MetaDescriptionComponentでAPIレスポンスで値更新 | E-07 (L107: setValue(generatedDescription)) | ○ |
| C-53 | MetaImageComponentがUploadInputをレンダリングする | E-09 (L188-216: UploadInput) | ○ |
| C-54 | MetaImageComponentで画像設定時に'good'Pill表示 | E-09 (L225-229: hasImage条件) | ○ |
| C-55 | MetaImageComponentで画像未設定時に'noImage'Pill表示 | E-09 (L228: hasImage ? 'good' : 'noImage') | ○ |
| C-56 | MetaImageComponentでボタンクリック時にAPI呼び出し | E-09 (L63-123: regenerateImage関数) | ○ |
| C-57 | MetaImageComponentでオブジェクトレスポンス時にid抽出 | E-09 (L102-103: generatedImage.id) | ○ |
| C-58 | MetaImageComponentで文字列レスポンス時にそのまま設定 | E-09 (L100: newValue = generatedImage) | ○ |
| C-59 | MetaImageComponentでonChangeでオブジェクト時にid設定 | E-09 (L196-198: incomingImage.id) | ○ |
| C-60 | MetaImageComponentでonChangeでnull時にnull設定 | E-09 (L203: setValue(null)) | ○ |
| C-61 | PreviewComponentがプレビューUIをレンダリングする | E-11 (L99-158: return JSX) | ○ |
| C-62 | PreviewComponentでmeta.titleとmeta.descriptionを表示 | E-11 (L146, 154: metaTitle, metaDescription) | ○ |
| C-63 | PreviewComponentでhasGenerateURLFn時にURL取得 | E-11 (L58-97: useEffect内getHref) | ○ |
| C-64 | PreviewComponentで取得URLがhrefに設定 | E-11 (L91: setHref(newHref)) | ○ |
| C-65 | PreviewComponentでカスタムパスが使用される | E-11 (L48-49: デフォルト値とprops) | ○ |
| C-66 | OverviewComponentがチェック結果UIをレンダリングする | E-13 (L76-86: return JSX) | ○ |
| C-67 | OverviewComponentでタイトル範囲チェック | E-13 (L63-65: metaTitle.length判定) | ○ |
| C-68 | OverviewComponentでタイトル短すぎチェック | E-13 (L64: minTitle比較) | ○ |
| C-69 | OverviewComponentで説明範囲チェック | E-13 (L66-68: metaDesc.length判定) | ○ |
| C-70 | OverviewComponentで画像存在チェック | E-13 (L69: Boolean(metaImage)) | ○ |
| C-71 | OverviewComponentで画像未設定チェック | E-13 (L69: Boolean(metaImage)がfalse) | ○ |
| C-72 | OverviewComponentでnumberOfPasses計算 | E-13 (L74: filter(Boolean).length) | ○ |
| C-73 | OverviewComponentでtitleOverrides適用 | E-13 (L59: titleOverrides?.minLength) | ○ |
| C-74 | defaultsでtitleデフォルト値定義 | E-02 (L6-9: title: { maxLength: 60, minLength: 50 }) | ○ |
| C-75 | defaultsでdescriptionデフォルト値定義 | E-02 (L2-5: description: { maxLength: 150, minLength: 100 }) | ○ |
| C-76 | translationsで英語翻訳含む | E-16 (L10, 50: en import/export) | ○ |
| C-77 | translationsで日本語翻訳含む | E-16 (L20, 59: ja import/export) | ○ |
| C-78 | translationsで全サポート言語含む | E-16 (L43-83: 35言語以上export) | ○ |

## 4) 不足情報（Unknown / Missing）
- なし：全テストケースがソースコードに基づいて生成されています

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全テストケースがソースコード解析に基づいており、根拠が明確

## 6) レビュアーチェックリスト（最小）
- [ ] テストケースがプロジェクトのテスト方針に沿っているか
- [ ] Reactコンポーネントのテストケースがテスト環境（@testing-library/react等）で実行可能か
- [ ] エンドポイントテストがインテグレーションテストとして適切に分類されているか
- [ ] 境界値テストケースの境界条件が適切か（minLength/maxLength等）
- [ ] 翻訳関連テストケースが実際の翻訳ファイル数と一致するか
