視覚参照パイプラインに載せる Storybook fixture は seed なし faker を避けストーリー側で決定化する — グローバル seed は既存参照を変えるため却下
フロントエンド
テスト
Storybook
知識
判断
ストーリーの描画結果を参照レンダーとして下流で照合する仕組み(visual regression、デザインツール同期、スクリーンショット比較)がある場合、fixture に seed なしの faker ファクトリを使うと、プロセスごとに名前・数値・日付が変わり参照が非決定化する。
気づきにくい理由
テストランナーは単一実行内で値が安定しているため、interaction test やレンダリングテストは green のまま通り続ける。壊れるのはテストではなく下流の照合だけで、再同期のたびに無意味な差分が出るという形で遅れて顕在化する。特に DOM ノードとしてデータを描く可視化(ノードグラフ等)は差分が大きく、canvas 描画は比較的影響が小さい。
対処の選択基準
- 第一選択はストーリー側の fixture を決定化すること。ファクトリ呼び出しに描画へ影響するフィールドの override を明示するか、手組みのリテラル fixture に置き換える。影響範囲が該当ストーリーに閉じる。
- プレビュー全体への faker の seed 固定(グローバル設定での一括決定化)は、一見1行で済むが既存全ストーリーの描画データも変えてしまう。既に参照として取得済みのレンダーがある場合はそれを無効化するため、参照資産が育った後では採用しない。参照運用を始める前の初期セットアップ時だけ有効な選択肢。
- ファクトリもストーリーも編集できない制約下では、実行環境側で乱数源を固定 PRNG に差し替える環境層ワークアラウンドが別途ある(同一環境内の再現性のみ得られる)。
検証
対象ストーリーを別プロセスで2回レンダリングし、テキスト値・ノード数が一致することを確認する。レビュー観点としては「override なしのファクトリ呼び出し」を機械的に検索すると漏れなく検出できる。