---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 67
  claims_with_evidence: 64
  claims_without_evidence: 3
confidence_derived: 0.96
---

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

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.96**
  - 根拠あり：64 / 67、根拠なし：3
- 優先レビュー（高）
  1. **UT-BRW-002**：空ラベル時のperformance.markの出力形式がソースから完全には推定できない
  2. **UT-BRW-006**：start()なしでend()を呼んだ場合の挙動はperformance API仕様依存
  3. **UT-BRW-011**：nullの文字列テンプレート変換結果はJavaScript仕様依存

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `packages/@tailwindcss-browser/src/instrumentation.ts` - Instrumentationクラス定義（start, end, hit, errorメソッド）
- E-02: `packages/@tailwindcss-browser/src/assets.ts` - CSSアセットのエクスポート定義
- E-03: `packages/@tailwindcss-browser/src/index.ts` - メインモジュール（loadStylesheet, loadModule, createCompiler, build, rebuild, observeSheet, MutationObserverコールバック, 初期化処理）
- E-04: `packages/@tailwindcss-browser/src/types.d.ts` - CSSモジュールの型定義
- E-05: `packages/@tailwindcss-browser/package.json` - パッケージ設定

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 (UT-BRW-001) | start()がperformance.mark(`${label} (start)`)を呼ぶ | E-01 L2-4 | ○ |
| C-02 (UT-BRW-002) | 空ラベルでも動作する | E-01 L3 (テンプレートリテラル) | △ |
| C-03 (UT-BRW-003) | end()がperformance.markとperformance.measureを呼ぶ | E-01 L6-14 | ○ |
| C-04 (UT-BRW-004) | end()がdetailオプションをperformance.measureに渡す | E-01 L9-13 | ○ |
| C-05 (UT-BRW-005) | detailがundefinedでもmeasureが呼ばれる | E-01 L6 (detail?: any) | ○ |
| C-06 (UT-BRW-006) | start()なしでend()を呼んだ場合の挙動 | **根拠なし** (performance API依存) | △ |
| C-07 (UT-BRW-007) | hit()がperformance.markをdetail付きで呼ぶ | E-01 L16-19 | ○ |
| C-08 (UT-BRW-008) | hit()でdetail未指定時の挙動 | E-01 L16 (detail?: any) | ○ |
| C-09 (UT-BRW-009) | error()がperformance.markで記録後にthrowする | E-01 L22-28 | ○ |
| C-10 (UT-BRW-010) | 文字列エラーのテンプレート変換 | E-01 L24 (`${error}`) | ○ |
| C-11 (UT-BRW-011) | null値のテンプレート変換 | **根拠なし** (JS仕様依存) | △ |
| C-12 (UT-BRW-012) | css.indexがstring型 | E-02, E-04 | ○ |
| C-13 (UT-BRW-013) | css.preflightがstring型 | E-02, E-04 | ○ |
| C-14 (UT-BRW-014) | css.themeがstring型 | E-02, E-04 | ○ |
| C-15 (UT-BRW-015) | css.utilitiesがstring型 | E-02, E-04 | ○ |
| C-16 (UT-BRW-016) | css.indexが空でない | E-02 L1 (import文) | ○ |
| C-17 (UT-BRW-017) | cssオブジェクトが4プロパティ | E-02 L6-11 | ○ |
| C-18 (UT-BRW-018) | loadStylesheet: id='tailwindcss' | E-03 L111-116 | ○ |
| C-19 (UT-BRW-019) | loadStylesheet: id='tailwindcss/preflight' | E-03 L117-126 | ○ |
| C-20 (UT-BRW-020) | loadStylesheet: id='tailwindcss/preflight.css' | E-03 L118-119 | ○ |
| C-21 (UT-BRW-021) | loadStylesheet: id='./preflight.css' | E-03 L120 | ○ |
| C-22 (UT-BRW-022) | loadStylesheet: id='tailwindcss/theme' | E-03 L127-136 | ○ |
| C-23 (UT-BRW-023) | loadStylesheet: id='tailwindcss/theme.css' | E-03 L128-129 | ○ |
| C-24 (UT-BRW-024) | loadStylesheet: id='./theme.css' | E-03 L130 | ○ |
| C-25 (UT-BRW-025) | loadStylesheet: id='tailwindcss/utilities' | E-03 L137-147 | ○ |
| C-26 (UT-BRW-026) | loadStylesheet: id='tailwindcss/utilities.css' | E-03 L138-139 | ○ |
| C-27 (UT-BRW-027) | loadStylesheet: id='./utilities.css' | E-03 L140 | ○ |
| C-28 (UT-BRW-028) | loadStylesheet: 未知のidでエラー | E-03 L149 | ○ |
| C-29 (UT-BRW-029) | loadStylesheet: 空文字列でエラー | E-03 L149 | ○ |
| C-30 (UT-BRW-030) | loadStylesheet: baseの透過 | E-03 L114 | ○ |
| C-31 (UT-BRW-031) | loadModule: 常にエラー | E-03 L173-175 | ○ |
| C-32 (UT-BRW-032) | loadModule: Promise<never>型 | E-03 L173 | ○ |
| C-33 (UT-BRW-033) | createCompiler: コンパイラ生成 | E-03 L60-107 | ○ |
| C-34 (UT-BRW-034) | createCompiler: @import自動挿入 | E-03 L80-81 | ○ |
| C-35 (UT-BRW-035) | createCompiler: @import含有時は挿入しない | E-03 L80 | ○ |
| C-36 (UT-BRW-036) | createCompiler: CSS未変更時の早期リターン | E-03 L90 | ○ |
| C-37 (UT-BRW-037) | createCompiler: 複数スタイルシートの連結 | E-03 L71-74 | ○ |
| C-38 (UT-BRW-038) | createCompiler: スタイルシート0件 | E-03 L66-74, L80-81 | ○ |
| C-39 (UT-BRW-039) | createCompiler: classes.clear() | E-03 L106 | ○ |
| C-40 (UT-BRW-040) | createCompiler: finally節のクリーンアップ | E-03 L101-103 | ○ |
| C-41 (UT-BRW-041) | build: compiler.buildの呼び出し | E-03 L203 | ○ |
| C-42 (UT-BRW-042) | build: compiler未生成時の早期リターン | E-03 L178 | ○ |
| C-43 (UT-BRW-043) | build: incremental + 新クラスなしで早期リターン | E-03 L198 | ○ |
| C-44 (UT-BRW-044) | build: fullで新クラスなしでも実行 | E-03 L198 (kind === 'incremental'の条件) | ○ |
| C-45 (UT-BRW-045) | build: クラス重複排除 | E-03 L187 | ○ |
| C-46 (UT-BRW-046) | build: sheet.textContentへの設定 | E-03 L203 | ○ |
| C-47 (UT-BRW-047) | build: class属性の要素0件 | E-03 L185 | ○ |
| C-48 (UT-BRW-048) | rebuild: full時のcreateCompiler+build | E-03 L218-220, L223 | ○ |
| C-49 (UT-BRW-049) | rebuild: incremental時のbuildのみ | E-03 L218, L223 | ○ |
| C-50 (UT-BRW-050) | rebuild: compiler未生成時のincremental | E-03 L210-212 | ○ |
| C-51 (UT-BRW-051) | rebuild: buildQueueによる直列化 | E-03 L229 | ○ |
| C-52 (UT-BRW-052) | rebuild: ビルドID連番 | E-03 L214-216 | ○ |
| C-53 (UT-BRW-053) | rebuild: エラー時のI.error呼び出し | E-03 L229 (.catch) | ○ |
| C-54 (UT-BRW-054) | observeSheet: MutationObserverの設定 | E-03 L236-243 | ○ |
| C-55 (UT-BRW-055) | observeSheet: attributeFilter設定 | E-03 L238 | ○ |
| C-56 (UT-BRW-056) | MO callback: tailwindcssスタイル追加→full | E-03 L255-262 | ○ |
| C-57 (UT-BRW-057) | MO callback: 通常要素追加→incremental | E-03 L264-272 | ○ |
| C-58 (UT-BRW-058) | MO callback: class変更→incremental | E-03 L275-277 | ○ |
| C-59 (UT-BRW-059) | MO callback: sheet自体の除外 | E-03 L269 | ○ |
| C-60 (UT-BRW-060) | MO callback: テキストノードの除外 | E-03 L266 | ○ |
| C-61 (UT-BRW-061) | MO callback: type属性フィルタリング | E-03 L258 | ○ |
| C-62 (UT-BRW-062) | MO callback: 空records | E-03 L253-278 (ループ) | ○ |
| C-63 (UT-BRW-063) | MO callback: full優先 | E-03 L280-284 | ○ |
| C-64 (UT-BRW-064) | 初期化: rebuild('full')呼び出し | E-03 L292 | ○ |
| C-65 (UT-BRW-065) | 初期化: sheet要素のDOM追加 | E-03 L294 | ○ |
| C-66 (UT-BRW-066) | 初期化: MutationObserverの設定 | E-03 L285-290 | ○ |
| C-67 (UT-BRW-067) | STYLE_TYPEの定数値 | E-03 L8 | ○ |

## 4) 不足情報（Unknown / Missing）
- **UT-BRW-002**: 空ラベルでのperformance.markの出力フォーマットは、テンプレートリテラル`${label} (start)`の仕様から推定しているが、空文字列が渡された場合の正確な出力はブラウザのperformance API実装に依存する
  - 候補：MDN Web Docs performance.mark() / W3C Performance Timeline仕様
- **UT-BRW-006**: `performance.measure`で存在しないマーク名を参照した場合の挙動はブラウザ実装依存（DOMException: SyntaxError が一般的）
  - 候補：MDN Web Docs performance.measure() / W3C User Timing仕様
- **UT-BRW-011**: `null`を`${error}`テンプレートで変換した結果（"null"文字列）はJavaScript/ECMAScript仕様に基づく推定
  - 候補：ECMAScript Language Specification - Template Literals

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - Instrumentationクラスのテストケース（UT-BRW-001〜011）は純粋なラッパーであり、performance APIのモック化が必要
- 0: 低リスク - assetsモジュール（UT-BRW-012〜017）はCSSファイルのインポート確認のみ
- 1: 中リスク - loadStylesheet（UT-BRW-018〜030）のIDマッピングは網羅的だが、将来のCSSファイル追加時にテスト更新が必要
- 0: 低リスク - loadModule（UT-BRW-031〜032）は単純なエラースロー
- 1: 中リスク - createCompiler（UT-BRW-033〜040）はtailwindcss.compileの外部依存があり、モック化の設計が重要
- 1: 中リスク - build（UT-BRW-041〜047）はDOM操作とcompilerの連携テストであり、DOM環境のモック化が必要
- 1: 中リスク - rebuild（UT-BRW-048〜053）は非同期キュー処理のため、テストの安定性に注意
- 1: 中リスク - MutationObserverコールバック（UT-BRW-056〜063）はDOM変更イベントのシミュレーションが必要
- 0: 低リスク - 初期化処理（UT-BRW-064〜067）はモジュール読み込み時の副作用テスト

## 6) レビュアーチェックリスト（最小）
- [ ] Instrumentationクラスの各メソッドがperformance APIのメソッドと正しく対応しているか確認
- [ ] loadStylesheetのIDマッピングがソースコードの条件分岐と完全に一致しているか確認
- [ ] createCompilerの@import自動挿入ロジックのテストケースが条件分岐を網羅しているか確認
- [ ] buildのkind='full'とkind='incremental'の分岐条件が正しくテストされているか確認
- [ ] rebuildのビルドキューの直列化テストが非同期処理を正しく検証できるか確認
- [ ] MutationObserverコールバックのfull/incremental判定ロジックが全分岐をカバーしているか確認
- [ ] 出力用sheet要素の自己参照ループ防止（UT-BRW-059）が正しくテストされているか確認
- [ ] ブラウザDOM環境のモック化方法（jsdom等）が適切に設計されているか確認
