共有Browserテストの失敗分岐はモジュールモックより依存注入で固定する
実ブラウザのテストランナーが複数ファイルでブラウザとネイティブESMのモジュールレジストリを共有する構成では、アプリ内モジュールへのファイル単位モックが読み込み順に左右されることがある。単体ファイルではfakeが呼ばれても、別ファイルが先に実モジュールをロードしたバッチでは実処理が走り、mock履歴が空のままタイムアウトする。
判断
モデル推論・ブラウザSDK・端末APIなど、失敗分岐を決定的に作る必要があるアプリ内境界は、関連操作を小さなadapter interfaceへまとめ、利用コンポーネントへ依存注入する。既定値は実adapterの安定したモジュール定数にし、本番の呼び出し側と挙動は変えない。テストは型付きfakeをケースごとに渡し、モジュールレジストリ、実行順、reset処理へ依存させない。
HTTP境界は通信モック、状態はstoreやcache注入という既存の正規シームを優先する。アプリ内モジュールの失敗制御に正規シームがなく、ネイティブESMモックがクロスファイルで競合するときにadapter注入を選ぶ。Contextやグローバル可変singletonは、複数コンポーネントへ動的に配布する必要がない限り、状態リセット責務が増えるため避ける。
検証
fakeを使うテスト単体だけでなく、同じバッチに実依存を使う通常テストを先行・併置して通す。これで先に実モジュールがロードされてもfakeがすり替わらないことを確認できる。
同じ依存メソッドをマウント時とユーザー操作時の両方が呼ぶ場合、単なる「呼ばれた」では経路を識別できない。期待呼び出し回数、操作後のUI完了状態、または経路固有の結果を待ってから否定アサーションを行う。モック競合を除去しても、待機シグナルが別経路で満たされればテストは再びfalse greenになる。