@akashic/engine-files-reftest-helper
v1.3.0
Published
engine-files-reftestでコンテンツを自動実行するためのライブラリ
Keywords
Readme
engine-files-reftest-helper
engine-files-reftest-helperは、engine-files-reftestでコンテンツを自動実行させるための補助ツールです。 このツールでできることは以下の通りです。
- playlogのうち、MessageEventを受け取って
data.typeがscenarioの時、msg.data.command.nameの値に応じて処理を実行します。msg.data.command.nameがscreenshotの時、スクリーンショットをBASE64でエンコードした文字列を指定された形式で出力します。- engine-files-reftest側で、その文字列をデコードして
msg.data.command.options.fileNameで指定されたファイル名でその画像を保存します。
- engine-files-reftest側で、その文字列をデコードして
msg.data.command.nameがfinishの時、engine-files-reftest側にスクリーンショット取得処理の要求を意味する文字列を指定された形式で出力します。msg.data.command.nameがinitの時に、以下のように出力形式を指定することができます。msg.data.command.options.outputType:consoleでコンソール出力して、postで任意の HTTP エンドポイントに POST リクエストを送信します。出力形式はデフォルトではコンソール出力になっています。msg.data.command.options.outputUrl:postの時の送信先URLを指定します。
- コンテンツ側で g.game.external.reftest の以下のプロパティを利用することができます。
- screenshot: (fileName: string, base64: string) => Promise<Response | void>
- 指定された画像情報を engine-files-reftest 側でスクリーンショットとして取得します
- finish: () => Promise<Response | void>
- engine-files-reftest の実行が終了します
- getImageDataUrlFromCanvas: () => string
- この関数を実行した時点でのゲーム画面のスクリーンショットを base64 形式で取得します
- postConsole: (param: ConsoleApiParameter) => Promise
- 指定したコマンドの実行ができますが、
screenshot()やfinish()の内部で実行されるので、通常コンテンツ側で利用する必要はありません
- 指定したコマンドの実行ができますが、
- outputType: OutputType
- コマンドの出力形式を参照・変更できますが、通常コンテンツ側で利用する必要はありません
- consoleApiUrl: string
- コマンド API の URL を参照・変更できますが、通常コンテンツ側で利用する必要はありません
- screenshot: (fileName: string, base64: string) => Promise<Response | void>
使い方
engine-files-reftestのテスト対象コンテンツのディレクトリで以下のコマンドを実行します。
akashic install @akashic/engine-files-reftest-helperそのコンテンツのエントリーポイントで以下のコードを追記します
require("@akashic/engine-files-reftest-helper");ビルド方法
engine-files-reftest-helper はTypeScriptで書かれたjsモジュールであるため、ビルドにはNode.jsが必要です。
npm run build によりビルドできます。
npm install
npm run buildテスト方法
がそれぞれ実行されます。
npm test注意事項
本ライブラリはブラウザ上で使うことを想定していますが、IE11等globalThis.fetchが無い環境では正しく動作しませんので、globalThis.fetchが存在する環境で本ライブラリを使用してください。
TODO: globalThis.fetchが無い環境でも動作できるようにする
開発者向け
本ツールの publish について
- 以下の手順を踏むことで publish が行われます。
- package.json の version を更新したコミットを作成
- 1 のコミットで master ブランチを更新する
- GitHub Actions のリリースワークフローが実行される
- package-lock.json が原因で publish に失敗した場合は、
npm i --before <実行時の7日前の日付(yyyy-mm-dd)>を実行して package-lock.json を更新し、再度 publish 処理を行なってください。
ライセンス
本リポジトリは MIT License の元で公開されています。 詳しくは LICENSE をご覧ください。
ただし、画像ファイルおよび音声ファイルは CC BY 2.1 JP の元で公開されています。
