合言葉 P2P 共有 — E2E シナリオテスト手順書
対象機能: HyperDrive 合言葉による P2P ファイル共有(cmd_023 / Batch3)
前提: Batch1(REST + WebSocket シグナリング)および Batch2(フロント WebRTC UI)が feat/p2p-sharing ブランチに存在すること
関連仕様: p2p.md、watchword API
1. テスト環境
1.1 構成(LAN / STUN のみ)
TURN 付き検証は turn_verification_log.md を参照。
1.2 起動手順
ターミナル A — API
cd /home/coder/storage/apps/api
cargo run
ターミナル B — Web
cd /home/coder/storage/apps/web
pnpm dev
前提確認
curl -s http://localhost:3400/v1/config/ice-servers
pg_isready
redis-cli ping
重要(Preflight): Vite 起動時の
API_BASE_URL/SERVER_URLと、実際に稼働中の API ポートを一致させること。.env.localが 3400 でも、シェルでAPI_BASE_URL=3402を付けて起動していると Playwright E2E が「接続中…」でハングする。検証前にcurl -s http://localhost:5175/v1/config/ice-serversの STUN/TURN 設定が意図した API 由来か確認すること。
1.3 テストユーザー
curl -s -X POST http://localhost:3400/v1/auth/register \
-H 'Content-Type: application/json' \
-d '{"email":"e2e_a@test.local","password":"testpass123","name":"E2E Sender"}'
curl -s -X POST http://localhost:3400/v1/auth/register \
-H 'Content-Type: application/json' \
-d '{"email":"e2e_b@test.local","password":"testpass123","name":"E2E Receiver"}'
既存アカウント(TURN 検証で使用済み)も可:
1.4 ブラウザ構成
2. シナリオ 1: 小ファイル転送(LAN / 約 1MB)
目的: REST → WS シグナリング → DataChannel → filehash 照合の正常系確認。
2.1 テストデータ
mkdir -p /tmp/hyperdrive-e2e
dd if=/dev/urandom of=/tmp/hyperdrive-e2e/small-1mb.bin bs=1M count=1
sha256sum /tmp/hyperdrive-e2e/small-1mb.bin
2.2 手順
2.3 自動検証
cd /home/coder/storage
API_BASE_URL=http://localhost:3400 WEB_BASE_URL=http://localhost:5175 \
node scripts/lan-e2e-test.mjs --scenario small
2.4 合格基準
- 合言葉が 8 文字英数字
- filehash 照合一致(✅ 緑)
- 保存ファイルが送信元と完全一致
3. シナリオ 2: 大容量ファイル転送(100MB+)
目的: チャンク分割・進捗表示・長時間接続の安定性確認。
3.1 テストデータ
dd if=/dev/urandom of=/tmp/hyperdrive-e2e/large-100mb.bin bs=1M count=100
3.2 観察ポイント
3.3 自動検証(任意)
API_BASE_URL=http://localhost:3400 WEB_BASE_URL=http://localhost:5175 \
node scripts/lan-e2e-test.mjs --scenario large
100MB 転送は 5〜15 分かかる場合あり。
4. シナリオ 3: エラーケース
4.1 不正な合言葉
node scripts/lan-e2e-test.mjs --scenario invalid-passphrase
4.2 接続中の切断
手動確認推奨。
4.3 送信者未接続
4.4 filehash 不一致
正常 E2E では hash 一致を確認し、照合ロジックを間接検証。
4.5 二重 join
5. 一括自動検証
cd /home/coder/storage
API_BASE_URL=http://localhost:3400 WEB_BASE_URL=http://localhost:5175 \
node scripts/lan-e2e-test.mjs --scenario all
6. 結果記録
検証実施後、docs/test/e2e_verification_log.md に以下を記録:
- 実施日・担当・使用ブランチ
- 各シナリオ PASS/FAIL
- スクリーンショットまたは Playwright ログ
- 不具合(batch3_003 軍師 QC へエスカレーション)
7. トラブルシューティング
8. 参照
- turn_verification_log.md
- TURN_SETUP.md
scripts/lan-e2e-test.mjsscripts/turn-e2e-test.mjs