---
generated_at: 2026-02-18 14:30:00
metrics:
  claims_total: 90
  claims_with_evidence: 90
  claims_without_evidence: 0
confidence_derived: 1.00
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：90 / 90、根拠なし：0
- 優先レビュー（高）
  1. **GTM同意管理関連テスト（UT-DOC-001〜004, 081〜082）**：プライバシー・コンプライアンス関連のため重要
  2. **llms.txt API関連テスト（UT-DOC-005〜020）**：LLM向けドキュメント生成の核心機能
  3. **Banner閉じる機能テスト（UT-DOC-057〜059）**：localStorage との連携を含むため確認推奨

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

- E-01: `frontend/apps/docs/lib/gtm/updateConsent.ts`
- E-02: `frontend/apps/docs/lib/gtm/constants.ts`
- E-03: `frontend/apps/docs/lib/gtm/gtmConsent.tsx`
- E-04: `frontend/apps/docs/lib/gtm/GtagScript.tsx`
- E-05: `frontend/apps/docs/lib/source.ts`
- E-06: `frontend/apps/docs/app/docs/llms.txt/route.ts`
- E-07: `frontend/apps/docs/app/docs/llms-full.txt/route.ts`
- E-08: `frontend/apps/docs/app/docs/sitemap.ts`
- E-09: `frontend/apps/docs/app/docs/api/search/route.ts`
- E-10: `frontend/apps/docs/components/CopyButton/CopyButton.tsx`
- E-11: `frontend/apps/docs/components/Tabs/Tabs.tsx`
- E-12: `frontend/apps/docs/components/LiamLogo/LiamLogo.tsx`
- E-13: `frontend/apps/docs/components/Heading/Heading.tsx`
- E-14: `frontend/apps/docs/components/Heading/Heading.style.ts`
- E-15: `frontend/apps/docs/components/Callout/Callout.tsx`
- E-16: `frontend/apps/docs/components/Callout/Callout.style.ts`
- E-17: `frontend/apps/docs/components/FooterNavi/FooterNavi.tsx`
- E-18: `frontend/apps/docs/components/FooterNavi/FooterNavi.style.ts`
- E-19: `frontend/apps/docs/components/Breadcrumb/Breadcrumb.tsx`
- E-20: `frontend/apps/docs/components/Breadcrumb/Breadcrumb.style.ts`
- E-21: `frontend/apps/docs/components/Banner/Banner.tsx`
- E-22: `frontend/apps/docs/components/Banner/Banner.style.ts`

## 3) Claims と根拠の対応（レビューの主戦場）

### GTM関連（lib/gtm/）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | updateConsent が 'granted' で同意モードを更新する | E-01 L3-14 | ○ |
| C-02 | updateConsent が 'denied' で同意モードを更新する | E-01 L3-14 | ○ |
| C-03 | updateConsent が undefined を処理する | E-01 L3-14 | ○ |
| C-04 | localStorage に JSON 形式で保存される | E-01 L13 | ○ |
| C-81 | GTMConsent が localStorage なしでデフォルト拒否を設定 | E-03 L7-20 | ○ |
| C-82 | GTMConsent が保存済み同意を復元する | E-03 L7-20 | ○ |
| C-83 | GTMConsent が null を返す | E-03 L22 | ○ |

### llms.txt API関連（app/docs/llms.txt/）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-05 | extractFrontmatter がタイトルと説明を抽出する | E-06 L20-36 | ○ |
| C-06 | extractFrontmatter が description なしでも動作する | E-06 L27-35 | ○ |
| C-07 | extractFrontmatter がフロントマターなしで null を返す | E-06 L22-23 | ○ |
| C-08 | extractFrontmatter が title なしで null を返す | E-06 L30 | ○ |
| C-09 | extractFrontmatter が空フロントマターで null を返す | E-06 L24-25 | ○ |
| C-10 | getIndent がスラッシュなしで空文字を返す | E-06 L83-86 | ○ |
| C-11 | getIndent がスラッシュ1つで4スペースを返す | E-06 L83-86 | ○ |
| C-12 | getIndent がスラッシュ2つで8スペースを返す | E-06 L83-86 | ○ |
| C-13 | getIndent が空文字で空文字を返す | E-06 L83-86 | ○ |
| C-14 | getContents がMDXファイルを取得する | E-06 L38-75 | ○ |
| C-15 | getContents が結果をソートする | E-06 L72-74 | ○ |
| C-16 | getContents が再帰的に取得する | E-06 L46-47 | ○ |
| C-17 | getContents がフロントマターなしファイルをスキップする | E-06 L52-54 | ○ |
| C-18 | getContents が空ディレクトリで空配列を返す | E-06 L38-75 | ○ |
| C-19 | GET がテキスト形式レスポンスを返す | E-06 L108-112 | ○ |
| C-20 | GET がマークダウン形式のリストを含む | E-06 L91-106 | ○ |

### llms-full.txt API関連（app/docs/llms-full.txt/）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-21 | getRawContents がMDXファイル内容を取得する | E-07 L8-36 | ○ |
| C-22 | getRawContents が index.mdx を先頭に配置する | E-07 L20-33 | ○ |
| C-23 | getRawContents が再帰的に取得する | E-07 L16-17 | ○ |
| C-24 | GET がテキスト形式レスポンスを返す | E-07 L48-52 | ○ |
| C-25 | GET が全コンテンツを結合する | E-07 L43-46 | ○ |

### sitemap関連（app/docs/sitemap.ts）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-26 | sitemap が Sitemap 形式を返す | E-08 L4-12 | ○ |
| C-27 | sitemap が SERVICE_SITE_URL を付与する | E-08 L9 | ○ |
| C-28 | sitemap が ISO 形式の日付を含む | E-08 L10 | ○ |
| C-29 | sitemap が空ページで空配列を返す | E-08 L8 | ○ |

### CopyButton関連（components/CopyButton/）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-30 | useCopyButton が初期 checked=false を返す | E-10 L20 | ○ |
| C-31 | useCopyButton が onClick 後 checked=true を返す | E-10 L29 | ○ |
| C-32 | useCopyButton が onCopy を呼び出す | E-10 L30 | ○ |
| C-33 | useCopyButton が1秒後に checked=false に戻す | E-10 L26-28 | ○ |
| C-34 | useCopyButton がタイマーをリセットする | E-10 L25 | ○ |
| C-35 | CopyButton がレンダリングされる | E-10 L36-56 | ○ |
| C-36 | CopyButton が未クリック時に Copy アイコンを表示 | E-10 L53 | ○ |
| C-37 | CopyButton がクリック後に Check アイコンを表示 | E-10 L53 | ○ |
| C-38 | CopyButton が className を適用する | E-10 L46-49 | ○ |

### Tabs関連（components/Tabs/）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-39 | Tabs がレンダリングされる | E-11 L16-29 | ○ |
| C-40 | Tabs が items の数だけ TabsTrigger を生成 | E-11 L20-24 | ○ |
| C-41 | Tabs が最初のアイテムを defaultValue に設定 | E-11 L18 | ○ |
| C-42 | Tabs が空 items でエラーにならない | E-11 L20 | ○ |
| C-43 | Tab がレンダリングされる | E-11 L35-49 | ○ |
| C-44 | Tab が copyable=true で文字列時に CopyButton を表示 | E-11 L41-45 | ○ |
| C-45 | Tab が copyable=true でも非文字列時は CopyButton 非表示 | E-11 L41 | ○ |
| C-46 | Tab が copyable=false で CopyButton 非表示 | E-11 L41 | ○ |

### Callout関連（components/Callout/）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-47 | Callout が type='info' で Info アイコンを表示 | E-15 L14-15 | ○ |
| C-48 | Callout が type='warn' で AlertTriangle を表示 | E-15 L14, L16 | ○ |
| C-49 | Callout が type='error' で XCircle を表示 | E-15 L14, L17 | ○ |
| C-50 | Callout がデフォルトで 'info' を適用 | E-15 L13 | ○ |
| C-51 | Callout が title と children を表示 | E-15 L23-29 | ○ |

### Banner関連（components/Banner/）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-52 | Banner がレンダリングされる | E-21 L25-93 | ○ |
| C-53 | Banner が variant='light' で JackAnimationForLight を表示 | E-21 L68-69 | ○ |
| C-54 | Banner が variant='dark' で JackAnimationForDark を表示 | E-21 L68, L70 | ○ |
| C-55 | Banner が id 指定時に閉じるボタンを表示 | E-21 L82-90 | ○ |
| C-56 | Banner が id 未指定時は閉じるボタン非表示 | E-21 L82 | ○ |
| C-57 | Banner が閉じるボタンクリックで非表示になる | E-21 L39-42, L44 | ○ |
| C-58 | Banner が localStorage に閉じた状態を保存 | E-21 L41 | ○ |
| C-59 | Banner が localStorage から閉じた状態を復元 | E-21 L35-36 | ○ |
| C-60 | Banner が link を正しく設定する | E-21 L78 | ○ |

### Breadcrumb関連（components/Breadcrumb/）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-61 | Breadcrumb がレンダリングされる | E-19 L13-37 | ○ |
| C-62 | Breadcrumb が URL あり項目を Link で表示 | E-19 L26-29 | ○ |
| C-63 | Breadcrumb が URL なし項目を span で表示 | E-19 L30-31 | ○ |
| C-64 | Breadcrumb が項目間に ChevronRight を表示 | E-19 L23-25 | ○ |
| C-65 | Breadcrumb が空リストで null を返す | E-19 L17 | ○ |

### FooterNavi関連（components/FooterNavi/）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-66 | FooterNavi がレンダリングされる | E-17 L11-40 | ○ |
| C-67 | FooterNavi が Previous のみ表示する | E-17 L17-25 | ○ |
| C-68 | FooterNavi が Next のみ表示する | E-17 L26-36 | ○ |
| C-69 | FooterNavi が前後なしで空 div を表示 | E-17 L16-38 | ○ |
| C-70 | FooterNavi が正しい URL を設定する | E-17 L18, L28 | ○ |

### スタイル関連
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-71 | wrapperStyle が h1 で text-3xl を返す | E-14 L6 | ○ |
| C-72 | wrapperStyle が h2 で text-2xl を返す | E-14 L7 | ○ |
| C-73 | wrapperStyle が h3 で text-xl を返す | E-14 L8 | ○ |
| C-74 | Callout wrapperStyle が info で info スタイルを返す | E-16 L7 | ○ |
| C-75 | Callout wrapperStyle が warn で warn スタイルを返す | E-16 L8 | ○ |
| C-76 | Callout wrapperStyle が error で error スタイルを返す | E-16 L9 | ○ |
| C-77 | Banner wrapperStyle が light で light スタイルを返す | E-22 L7 | ○ |
| C-78 | Banner wrapperStyle が dark で dark スタイルを返す | E-22 L8 | ○ |
| C-79 | FooterNavi linkStyle が next で next スタイルを返す | E-18 L8 | ○ |
| C-80 | FooterNavi itemLabelStyle が next で flex-row-reverse を返す | E-18 L18 | ○ |

### LiamLogo関連（components/LiamLogo/）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-84 | LiamLogo が SVG をレンダリングする | E-12 L9-67 | ○ |
| C-85 | LiamLogo が aria-label を設定する | E-12 L12 | ○ |
| C-86 | LiamLogo が props を転送する | E-12 L17 | ○ |
| C-87 | LiamLogo が一意の clipPath ID を生成する | E-12 L7, L31, L58 | ○ |

### Heading関連（components/Heading/）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-88 | Heading が FumadocsHeading でラップされる | E-13 L7-9 | ○ |
| C-89 | Heading が as プロパティを転送する | E-13 L8 | ○ |
| C-90 | Heading が wrapperStyle を適用する | E-13 L8 | ○ |

## 4) 不足情報（Unknown / Missing）
- 特になし。すべてのテストケースに対応するソースコードの根拠が存在する。

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - すべてのテストケースがソースコードに基づいて生成されており、根拠が明確

### 補足事項
- スタイル関連テスト（C-71〜C-80）は tailwind-variants ライブラリの動作に依存するため、ライブラリのバージョンアップ時に確認推奨
- localStorage を使用するテスト（C-01〜C-04, C-57〜C-59, C-81〜C-82）はブラウザ環境のモックが必要
- Next.js の Route Handler テスト（C-19〜C-25）はファイルシステムのモックが必要

## 6) レビュアーチェックリスト（最小）
- [ ] GTM同意管理のテストケースが GDPR/プライバシー要件を満たしているか
- [ ] llms.txt/llms-full.txt のテストケースがLLM向けドキュメント仕様を網羅しているか
- [ ] コンポーネントテストがアクセシビリティ要件（aria-label等）を含んでいるか
- [ ] localStorage 使用箇所のテストがエッジケース（localStorage無効等）を考慮しているか
- [ ] スタイル関連テストの優先度が適切か（現在「低」に設定）
