ランダム短歌 — テストのやり方¶
非同期モードなど 時間がかかる機能 を、毎回7日待たずに検証するための手順。
非同期モード E2E¶
1. 開発サーバーをテスト用設定で起動¶
cd tanka-party
DEV_TOOLS=1 ASYNC_DEADLINE_MINUTES=1 npm run dev
| 変数 | 意味 |
|---|---|
ASYNC_DEADLINE_MINUTES=1 |
締切を 1分後 に短縮(本番は7日) |
DEV_TOOLS=1 |
POST /api/rooms/:code/dev/force-async-deadline を有効化(任意) |
2. 別ターミナルでスモークテスト¶
cd tanka-party
npm run test:async
確認項目: 退室、早期合成、メール登録、合成成功。
メール通知(本番)¶
Vercel 環境変数(webapp と同じ SMTP で可):
| 変数 | 例 |
|---|---|
SMTP_HOST |
smtp.example.com |
SMTP_PORT |
587 |
SMTP_SECURE |
false |
SMTP_USER / SMTP_PASS |
(必要なら) |
MAIL_FROM |
noreply@example.com |
APP_BASE_URL |
https://random-tanka.vercel.app |
未設定のときはメール送信だけスキップ(アプリは動く)。
手動 UI 確認(短い締切)¶
- 上記と同じ env で
npm run dev - ブラウザでルーム作成 → 非同期パーティ
- 2人目を別タブ / シークレットで参加
- 各自カード保存 → バナーに「入力済み 2/2」
- 開発者ツールまたは curl で force:
curl -X POST http://localhost:8080/api/rooms/XXXX/dev/force-async-deadline
- ページを更新 → 「合成する」が有効になる
曲水の宴(参考)¶
宴モードは秒単位の writing_duration_sec で調整可能。非同期ほど専用 env はないが、60秒に設定すれば手動テストは容易。
CI への載せ方(将来)¶
test:asyncは ローカル / エージェント 向け(dev サーバー前提)- CI では
npm run devをバックグラウンド起動 →sleep 3→npm run test:asyncの job を追加可能 - 本番 Vercel では
DEV_TOOLSを 設定しない(force API は 404)
関連¶
- 要件:
random-tanka-async.md - 定数:
tanka-party/src/lib/db.ts—getAsyncDeadlineOffsetMs()