シナリオファイル
シナリオファイルについて説明します。
ヒント
シナリオやシナリオファイルの概念が初めての方は, 先にこちらを参照して理解しておくことを推奨します。
また, 慣れている方でも以下のシナリオファイルを記述する際の注意を読んでおことをおすすめします。
概 要
シナリオファイルは, .yml
もしくは .yaml
の拡張子を持つ YAML ファイルで, シナリオを記述します。
プラグインの .jar に同梱されるのであれば, プロジェクトの任意の場所に配置できます。
1つのシナリオまたはテストにつき1つのシナリオファイルが必要です。
そのため, シナリオファイルを配置するディレクトリは構造的に管理すると良いでしょう。
シナリオファイルの構造
シナリオファイルは, 最上位に ScenarioFile 型のオブジェクトを持ちます。
このオブジェクトは, シナリオファイルのメタデータやトリガ, シナリオなど, テストに関するすべての情報を保持します。
Scenamatica のすべてのオブジェクトは自動生成されたリファレンスが提供されています。
詳しくはこちらを参照してください。
シナリオファイルの例
以下のファイルは最小構成のシナリオファイルの例です。
これらの値は必須です。
# メタデータ
scenamatica: "0.8.0" # Scenamatica のバージョン
name: "test-hoge-success" # シナリオの名前
description: "hoge 機能の正常系テスト" # シナリオの説明
on: # トリガ(1つ以上のアイテムが必要)
- type: on_load # トリガ:プラグインのスタートアップ時に実行
scenario: # シナリオ
# Actor1 が /hoge を実行する。
- type: execute
action: command_dispatch
with:
command: "/hoge"
sender: Actor1
また, 以下のファイルは完全なシナリオファイルの例です。
シナリオファイルの要素と Scenamatica の機能の対応を理解するために参考にしてください。
完全なシナリオファイルの例
# メタデータ
scenamatica: "0.8.0"
name: "test-hoge-success"
description: "hoge 機能の正常系テスト"
runif: # 実行条件:hoge-milestone を達成している場合に実行する
action: milestone
with:
name: hoge-milestone
context: # コンテキスト
actors: # コンテキスト:アクタ
- name: Actor1
permissions:
- "hogeplugin.commands.hoge"
stage: # コンテキスト:ステージ
env: NETHER
seed: 114514
on: # トリガ
- type: on_load # トリガ:プラグインのスタートアップ時に実行
- type: manual_dispatch # トリガ:Scenamatica のコマンドで実行
# このトリガが発火した時, メイン・シナリオの 実行前に実行されるシナリオを指定する
before:
- type: execute
action: milestone
with:
name: hoge-milestone
# 〃 , メイン・シナリオの実行後に実行されるシナリオを指定する
after:
- type: execute
action: milestone
with:
name: fuga-milestone
scenario: # シナリオ
# Actor1 が /hoge を実行する。
- type: execute
action: command_dispatch
with:
command: "/hoge"
sender: Actor1
timeout: 20 # タイムアウト:20 tick
# fuga というメッセージが(Actor1 に)表示される。
- type: expect
action: message
with:
content: "fuga"
recipient: "${scenario.scenario.0.sender}" # 変数:前のアクションの実行者を指定
# Actor1 が死亡する。
- type: expect
action: player_death
with:
target: "${scenario.scenario.0.sender}" # 変数:前のアクションの実行者を指定
その他のシナリオファイルの例については, こちらを参照してください。
✨ Scenamatica では自己テストをしています!✨
Scenamatica は, Scenamatica 自体のデバッグとデグレードの監視に使用されます。
ソースコードを GitHub にプッシュすると, CI によって自動的に Scenamatica のテストが実行されます。