ドラッグ並び替えの E2E は pointer 操作に固執せず決定的な操作経路で検証する
フロントエンド
設計判断
E2Eテスト
dnd-kit などのドラッグ並び替え UI は、E2E で pointer drag を直接再現すると座標、scroll、animation、collision 判定、CI の描画タイミングに左右されて flaky になりやすい。
判断基準:
- 検証したい責務が「並び替え後に UI 順序が変わる」「正しい sort payload が API に送られる」「再取得後も順序が保たれる」なら、pointer drag そのものを E2E の主対象にしない。
- UI にキーボードでの上下移動や move up/down ボタンなどの deterministic な操作経路を用意し、その操作で同じ並び替え処理を呼ぶ。
- pointer drag はライブラリ統合・手動確認・必要なら薄い smoke test に留め、E2E では request body と永続化後の表示順を強く検証する。
実装上の注意:
- ドラッグハンドルには accessible name を付け、E2E でも role/name または安定した test id で対象を選べるようにする。
- モック API は並び替え request を無視せず、受け取った順序を保存して次回 GET に反映する。これにより「画面上だけ一瞬並び替わる」偽陽性を防げる。
- キーボード経路はアクセシビリティ改善にもなるため、テスト専用の隠し API より優先する。
適用範囲: ドラッグで並び替えるリスト、ボード、優先順位設定など。特に CI 上で drag の座標指定が不安定な UI に有効。