AI動画生成UIの障害で痛いのは、生成失敗だけではありません。台本、話者、参考画像、比率が消え、同じブリーフを再現できなくなることです。本稿では公開説明から確認できる範囲で、入力保持と再生成の受け入れ条件を整理します。内部実装や性能値は扱いません。
二種類のブリーフを同じ表で管理する
UGC風動画は「誰が、何を、どんな口調で伝えるか」が中心です。公開されている UGC Video Generator の流れは、UGC形式を選び、アバターと音声を選択し、台本と動作説明を入力して生成する三段階として説明されています。
一方、アニメーション動画では「何を、どう動かし、どの画面で見せるか」が中心になります。両者を一つのテスト観点にまとめるには、見た目ではなく入力の意味を列として持ちます。
| 要件ID | 対象 | 入力契約 | 失敗後に保持する値 |
|---|---|---|---|
| UGC-01 | UGC | テンプレート、台本、話者、音声 | 台本と選択済み設定 |
| ANI-01 | Animation | プロンプト、参考画像、動き、画風 | 文章と素材の参照 |
| OUT-01 | 共通 | 比率、解像度、出力数 | 最後に確定した出力条件 |
| REV-01 | 共通 | 候補、修正理由、承認状態 | 版と変更履歴 |
受け入れ条件を状態ごとに書く
フォームの成功条件を「動画が表示される」にすると、エラーや再生成が抜けます。少なくとも次を別状態として扱います。
- Draft: 未入力でも安全に編集できる。
- Ready: 現在のモードの必須項目だけがそろっている。
- Generating: 多重送信を防ぎ、処理中であることが分かる。
- Review: 入力と候補を対応付けて比較できる。
- RecoverableError: 修正可能な入力を保持し、再試行できる。
- Approved: 人が確認した版だけを書き出し対象にする。
生成後に設定を変えた場合は未承認へ戻します。承認は「ファイルの存在」ではなく「特定の入力版に対する判断」だからです。
アニメーション側の境界値
公開されている AI Animation Video Generator の説明では、テキストプロンプトと参考画像、9:16 / 16:9、解像度、出力数を選び、生成後にプレビュー、調整、ダウンロードへ進みます。また、テキストや背景を変える remix と設定保持にも触れています。
ここからテストできるのは、入力欄と状態の契約です。実際の生成品質、特定モデルの忠実度、待ち時間は固定素材と評価手順を用意しない限り受け入れ条件に混ぜません。
Playwrightで契約を先に表す
以下のラベルとエラー文は、実DOMを確認したセレクターではなく、望ましいUI契約を示す例です。
test("再生成エラー後も確定済み入力を保持する", async ({ page }) => {
await page.getByRole("textbox", { name: "Prompt" })
.fill("A product rotates while the camera moves closer");
await page.getByRole("radio", { name: "9:16" }).check();
await page.getByRole("button", { name: "Generate" }).click();
await expect(page.getByRole("alert")).toContainText("Try again");
await expect(page.getByRole("textbox", { name: "Prompt" }))
.toHaveValue(/product rotates/);
await expect(page.getByRole("radio", { name: "9:16" }))
.toBeChecked();
});
実装時は、利用者にも意味が通るラベルと状態通知を優先します。テストはクリック列ではなく、入力保持、承認解除、再試行の対象版を確認します。
回帰テストの最小セット
- UGCからAnimationへ切り替え、話者設定が誤送信されない
- 参考画像を削除した後、古いファイル名がレビュー画面に残らない
- 比率だけ変更して再生成し、プロンプトと画風が保持される
- エラー後の再試行でジョブが重複登録されない
- remix後は以前の承認が解除される
- ダウンロード対象が、画面で承認した版と一致する
Nextify のように複数の動画入口を持つサービスでは、「生成できるか」より「意図と版を再現できるか」がQAの中心です。回復可能な失敗を正式な状態にしましょう。