コンテンツにスキップ

継続的インテグレーションで API テストを自動化する

インターフェースで組み立てたシナリオは、そのままパイプラインで実行できます。 このガイドでは、それを本格的に運用に載せる方法を扱います。

  • Pro または Enterprise プラン。
  • CI のシークレットストアに格納する 組織トークンrstk_…)。 (ダッシュボードからセルフサービスでこのトークンを作成する機能は、近日提供 予定です。)
Terminal window
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 が権限の拒否です。

Restorm はデスクトップアプリケーションです。ウィンドウを表示しない場合でも、 ディスプレイサーバーを必要とします。Linux のランナーでは xvfb-run -a を 前に付けてください。

Terminal window
xvfb-run -a restorm --open ./api.restorm --run "Tests de fumée" --headless

シークレットをプロジェクトの中に書き込んではいけません。機密性の高い変数は、 シークレットソースとして 環境変数 を指定して宣言します。CI のシークレット ストアが値を注入し、Restorm がそれを読み取ります。 シークレット を参照してください。

env:
API_TOKEN: ${{ secrets.API_TOKEN }}

環境ごとにパラメーター化する

Section titled “環境ごとにパラメーター化する”

補完的な 2 つのアプローチがあります。

  1. environment 型のシナリオパラメーター--param Env=staging。 同じシナリオを任意のターゲットに対して実行できます。
  2. 単純なパラメーター--param baseUrl=…--param tenant=…

変換はパラメーターの 宣言された型 に従います。変換できない場合は、誤った 値で実行するのではなく、起動時にただちに失敗します。 変数とデータ を参照してください。

--out run.log はログを逐次書き出します。ジョブが失敗したときも含めて、 成果物として公開してください。役に立つのはまさにそういう場面です。

- uses: actions/upload-artifact@v4
if: always()
with:
name: journal-restorm
path: run.log

CI で読みやすいシナリオを書く

Section titled “CI で読みやすいシナリオを書く”

深夜 3 時に赤いジョブが出たときに、大きな差を生むいくつかの習慣です。

  • 明示的なアサーションメッセージ。 アサーション アクションの message 欄がログに表示される内容です。期待していたことをそこに書いてください。
  • 要所でのログ出力。 --all-logs を付けない場合、出力されるのは Log アクションのエントリーだけです。これが全体の流れを語る筋書きになります。
  • フィールドごとのアサーションよりスキーマ検証。 スキーマを検証するerrors 出力を Log につなげば、違反の正確な一覧が得られます。
  • 重要な else 出力には Throw をつないで、終了コードが失敗を反映するように します。
  • 不安定なネットワーク呼び出しの周りには Retry を置き、断続的に失敗する テストを受け入れないようにします。 制御 を参照してください。

後片付けはメインのシナリオの done ポートにつなげます。doneサブグラフ全体 が終わるのを待ちます。 ポートと接続 を参照してください。

落とし穴解決方法
ジョブが入力を待って止まる--paramすべて のパラメーターを渡してください。ヘッドレスでは何も尋ねられません
Toast アクションが表示されない正常な動作です。ヘッドレスでは効果がありません。Log を使ってください
MCP サーバーが現れない意図した動作です。実際のディスプレイがなければ起動しません
終了コード 3トークンまたはプランの問題です。4 つのケースのどれに当たるかはメッセージが示します
プロジェクトファイルが移動した--open はリポジトリからの相対パスを受け付けます。相対パスのままにしてください

GitHub Actions と GitLab CI のパイプラインは ヘッドレス実行と CI にあります。