メインコンテンツまでスキップ
CharacterCharacterCharacterCharacterCharacterCharacter
Scenamatica

With your Scenario, Build your Plugin, Run your Tests automatically.

Let's enhance your PaperMC plugin quality with Scenamatica: YAML-defined scenarios, CI/CD integration

Scenamatica の YAML で定義されたテスト, CI/CD 統合で, PaperMCプラグインの品質を向上させましょう。

概要

Scenamaticaは, PaperMC プラグインに特化したエンドツーエンドのテスト自動化フレームワークです。 YAML で予め定義されたマルチシナリオのテストにより, プラグイン機能の正常性と異常性を自動的に検証します。 Scenamaticaの活用により, リグレッションテストをスピーディに実施でき, PaperMCプラグインの開発にエンジニアが集中できるようになります。 このプロセスにより, プラグインの品質が向上し, ユーザーと開発者, 両者にとってより優れたエクスペリエンスが提供されます。 また, 既存の CI/CD パイプラインと統合することで, プラグインの品質を継続的に監視できます。

YAML でシナリオをかんたん定義

YAML でシナリオを直感的に記述しましょう!

ローカライズされたインタフェース

もちろん関西弁にも対応しています!

テスト環境をかんたん構築

クライアントの用意から開放されましょう!

CI-CD との統合

プラグインの品質を継続的に監視しましょう。

YAML でシナリオをかんたん定義

Scenamatica のシナリオは, 右のようなかんたんな YAML で定義されます。 この例では, 仮想的なプレイヤにネザーでコマンドを実行してもらい, それによって発火したプラグインの機能のふるまいを検証しています。

YAML でシナリオを定義することで, Java でテストを書くよりも, より簡潔に, かつより直感的にテストを記述できます。 さらに, 非プログラマの方でもシナリオを書けるため, チームでのプラグイン開発がはかどります。

Scenamatica は, PaperMC プラグインのテスト駆動開発にはもってこいです!

scenamatica: "0.8.0"
name: "test-hoge-success"
description: "hoge 機能の正常系テスト"

context:
actors:
- name: Actor1
permissions:
- "hogeplugin.commands.hoge"
stage:
env: NETHER
seed: 114514

on:
- type: on_load
- type: manual_dispatch

scenario:
# Actor1 が /hoge を実行する。
- type: execute
action: command_dispatch
with:
command: "/hoge"
sender: Actor1
# 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 は, 日本語をはじめとする数種類の言語に対応しています。

特に, プラグインの出力は完全にローカライズされています!

対応している言語

  • 日本語(日本)
  • English(US)
  • 関西弁(関西やで)

※Scenamatica では, 現在翻訳してくれるとても優しい方を募集しています!

詳しくは上の ボタンからリポジトリをご覧ください。

CI-CD との統合

CI-CD との統合により, プラグインの品質を継続的に監視できます。 例えば, GitHub Actions と組み合わせることで, プッシュされたときや プルリクエストが更新されたときに, 自動的にテストを実行させられます。 マージ前に自動でテストを実行して, リグレッションを防ぎましょう。

また GitHub Actions と統合した場合は, さらに便利な機能が使えます。 例えばテストの結果は表とグラフ, およびガントチャートで表示されます。 さらに, プルリクエストで実行した場合は, 自動で結果のコメントが追加されます。 コメントは最新のコミット用に自動で更新されるため, スパムになる心配はありません。

チーム全員とテスト結果を共有して, よりよい開発体験を目指します。

サマリ
アクタ

テスト環境をかんたん構築

Scenamatica を利用すると, テストに必要なプレイヤ(アクタ)とワールド(ステージ), エンティティを自動で準備できます。 シナリオの実行ごとに初期化して生成されるため, 前の状態を引き継いでしまう心配はありません。

アクタは, 外部からの接続なしに, サーバに本物のプレイヤとして認識されます。 これにより, プラグインは通常のプレイヤを処理するのと同じように, 仮想的なプレイヤを処理できます。

ステージは, 既存のワールドをコピーするモードと, 新規に生成するモードをサポートしています。 プラグインのテスト専用のワールドを用意することで, 限定的な環境下でのテストを実現できます。 また, 新規に生成するモードを活用すると, ランダムな条件でのテストを実現できます。