継続的インテグレーションで API テストを自動化する
インターフェースで組み立てたシナリオは、そのままパイプラインで実行できます。 このガイドでは、それを本格的に運用に載せる方法を扱います。
- Pro または Enterprise プラン。
- CI のシークレットストアに格納する 組織トークン(
rstk_…)。 (ダッシュボードからセルフサービスでこのトークンを作成する機能は、近日提供 予定です。)
基本的な使い方
Section titled “基本的な使い方”RESTORM_TOKEN=$RESTORM_TOKEN restorm \ --open ./api.restorm \ --run "Tests de fumée" \ --headless \ --all-logs \ --out run.log \ --param baseUrl=$BASE_URL終了コードは 0 が成功、1 がシナリオの失敗、2 が呼び出しのエラー、
3 が権限の拒否です。
仮想ディスプレイが必要です
Section titled “仮想ディスプレイが必要です”Restorm はデスクトップアプリケーションです。ウィンドウを表示しない場合でも、
ディスプレイサーバーを必要とします。Linux のランナーでは xvfb-run -a を
前に付けてください。
xvfb-run -a restorm --open ./api.restorm --run "Tests de fumée" --headlessシークレット
Section titled “シークレット”シークレットをプロジェクトの中に書き込んではいけません。機密性の高い変数は、 シークレットソースとして 環境変数 を指定して宣言します。CI のシークレット ストアが値を注入し、Restorm がそれを読み取ります。 シークレット を参照してください。
env: API_TOKEN: ${{ secrets.API_TOKEN }}環境ごとにパラメーター化する
Section titled “環境ごとにパラメーター化する”補完的な 2 つのアプローチがあります。
environment型のシナリオパラメーター:--param Env=staging。 同じシナリオを任意のターゲットに対して実行できます。- 単純なパラメーター:
--param baseUrl=…、--param tenant=…。
変換はパラメーターの 宣言された型 に従います。変換できない場合は、誤った 値で実行するのではなく、起動時にただちに失敗します。 変数とデータ を参照してください。
ログを公開する
Section titled “ログを公開する”--out run.log はログを逐次書き出します。ジョブが失敗したときも含めて、
成果物として公開してください。役に立つのはまさにそういう場面です。
- uses: actions/upload-artifact@v4 if: always() with: name: journal-restorm path: run.logCI で読みやすいシナリオを書く
Section titled “CI で読みやすいシナリオを書く”深夜 3 時に赤いジョブが出たときに、大きな差を生むいくつかの習慣です。
- 明示的なアサーションメッセージ。
アサーション アクションの
message欄がログに表示される内容です。期待していたことをそこに書いてください。 - 要所でのログ出力。
--all-logsを付けない場合、出力されるのは Log アクションのエントリーだけです。これが全体の流れを語る筋書きになります。 - フィールドごとのアサーションよりスキーマ検証。
スキーマを検証する の
errors出力を Log につなげば、違反の正確な一覧が得られます。 - 重要な
else出力には Throw をつないで、終了コードが失敗を反映するように します。 - 不安定なネットワーク呼び出しの周りには Retry を置き、断続的に失敗する テストを受け入れないようにします。 制御 を参照してください。
後片付けはメインのシナリオの done ポートにつなげます。done は
サブグラフ全体 が終わるのを待ちます。
ポートと接続 を参照してください。
知っておきたい落とし穴
Section titled “知っておきたい落とし穴”| 落とし穴 | 解決方法 |
|---|---|
| ジョブが入力を待って止まる | --param で すべて のパラメーターを渡してください。ヘッドレスでは何も尋ねられません |
| Toast アクションが表示されない | 正常な動作です。ヘッドレスでは効果がありません。Log を使ってください |
| MCP サーバーが現れない | 意図した動作です。実際のディスプレイがなければ起動しません |
終了コード 3 | トークンまたはプランの問題です。4 つのケースのどれに当たるかはメッセージが示します |
| プロジェクトファイルが移動した | --open はリポジトリからの相対パスを受け付けます。相対パスのままにしてください |
GitHub Actions と GitLab CI のパイプラインは ヘッドレス実行と CI にあります。