mablは、Webhookを使用して現在の継続的インテグレーション (CI) ワークフローと簡単に統合できます。以下の手順を実行すると、すぐにWebhookを設定できます。

Webhookの追加

  1. 左側のナビゲーションパネルにあるリンクをクリックして、mablダッシュボードから [Settings] に移動します。
  2. [Webhooks] タブをクリックします。

  1. ページを調べます。これまでに追加したWebhookがある場合は、ここの上部に表示されます。
  2. さらに、[Add Webhook] というタイトルのセクションがあり、ワークフローインテグレーションの設定を開始できます。
  3. [Name] フィールドにWebhookの名前を、[URL] フィールドにターゲットのURLを入力します。mablは、保留中または完了した実行について記述したJSONペイロードを使用して、このURLを呼び出します (詳細は後述)。
  4. 名前とURLを追加したら、[Bound Lifestyle Stages] を実行前と実行後のどちらか、または両方に設定できます。
[Pre-execution] のWebhookは、任意のテスト実行が開始される前に起動されます。
[Post-execution] のWebhookは、すべてのテスト実行が完了した後に起動されます。
  1. 次に、結果を [On Success] と [On Failure] のどちらか、または両方に設定します。
On Failure: 実行後のWebhookで使用します。テスト実行が失敗した場合にのみ起動されます。
On Success: 実行後のWebhookで使用します。すべてのテスト実行が成功した場合にのみ起動されます。

  1. 次に、[Require a success response before executing plan] をオンまたはオフに設定できます。これは、テスト実行を続行するために、エンドポイントが2xxまたは3xxの成功レスポンスステータス (たとえば200) を返すことを要求する設定であり、返さない場合、テストは失敗します。実行前のWebhookにのみ適用されます。該当するユースケースは、テストの開始前にアプリケーションデータベースをセットアップする顧客側スクリプトです。実行後のWebhookには条件は適用されず、失敗コードを返した場合でもプランは成功としてマークされます。

  2. 最後に、必要に応じて [Strict SSL Validation] をオフにすることができます。mablは、すべての接続に有効なSSL証明書を使用するようにしますが、一部のCIサーバーは自己署名証明書を使用する場合があります。

Webhookのタイミング

特定のワークスペースのすべてのWebhookは、並行して起動されます。各Webhookは60秒以内に完了する必要があります。それ以上かかると、失敗したと見なされます。

Webhookペイロード

Webhookエンドポイントは、実行中のプランとテスト実行の情報を含むJSONを受け取ります。
注: "success" 属性は、terminated、cancelled、failedの状態が発生するまでtrueとなります。
"status" の状態は、順にqueued、scheduling、scheduled、(succeeded、failed、cancelled)、completedです。

実行前のペイロード

{
  "status": "queued",
  "status_cause": null,
  "success": true,
  "plan": {
    "id": "4ba4550d-df2b-4df2-8799-46c44dbb4b9e",
    "name": "Print click and assert Plan",
    "labels": [ "apple", "zebra"],
    "href": "https://api.mabl.com/v1/schedule/runPolicy/4ba4550d-df2b-4df2-8799-46c44dbb4b9e",
    "tags": []
  },
  "plan_execution": {
    "status": "queued",
    "status_cause": null,
    "id": "d5b96d02-c45d-4d08-8684-de55411bcede",
    "href": "https://api.mabl.com/v1/execution/runPolicyExecution/d5b96d02-c45d-4d08-8684-de55411bcede"
  },
  "journeys": [
    {
      "id": "c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0",
      "name": "Print, then assert",
      "labels": [ "apple", "zebra"],
      "href": "https://api.mabl.com/v1/test/journey/c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0",
      "tags": [
        "training"
      ]
    }
  ],
  "journey_executions": [],
  "start_time": null,
  "stop_time": null,
  "tags": [],
  "results": [],
  "message_version": "1.0.0"
}

実行後のペイロード

{
  "status": "succeeded",
  "status_cause": null,
  "success": true,
  "plan": {
    "id": "4ba4550d-df2b-4df2-8799-46c44dbb4b9e",
    "name": "Print click and assert Plan",
    "labels": [ "apple", "zebra"],
    "href": "https://api.mabl.com/v1/schedule/runPolicy/4ba4550d-df2b-4df2-8799-46c44dbb4b9e",
    "tags": []
  },
  "plan_execution": {
    "status": "succeeded",
    "status_cause": null,
    "id": "d5b96d02-c45d-4d08-8684-de55411bcede",
    "href": "https://api.mabl.com/v1/execution/runPolicyExecution/d5b96d02-c45d-4d08-8684-de55411bcede"
  },
  "journeys": [
    {
      "id": "c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0",
      "name": "Print, then assert",
      "labels": [ "apple", "zebra"],
      "href": "https://api.mabl.com/v1/test/journey/c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0",
      "tags": [
        "training"
      ]
    }
  ],
  "journey_executions": [
    {
      "status": "completed",
      "status_cause": null,
      "success": true,
      "name": "Print, then assert",
      "journey_id": "c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0",
      "journey_execution_id": "c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0",
      "start_time": 1517612117504,
      "stop_time": 1517612146280,
      "href": "https://api.mabl.com/v1/execution/runPolicyExecution/4ba4550d-df2b-4df2-8799-46c44dbb4b9e/testScriptExecution/c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0",
      "results_href": "https://app.mabl.com/workspaces/3627972b-a762-4a87-a3fb-97cde3e9c414/test/plan-executions/d5b96d02-c45d-4d08-8684-de55411bcede/journeys/c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0",
      "test_cases": [
        {
          "id": "MABL-1234"
        },
        {
          "id": "MABL-999"
        }
      ]
    }
  ],
  "start_time": 1517612110113,
  "stop_time": 1517612146368,
  "tags": [],
  "results": [
    {
      "success": true,
      "name": "Print, then assert",
      "results_href": "https://app.mabl.com/workspaces/3627972b-a762-4a87-a3fb-97cde3e9c414/test/plan-executions/d5b96d02-c45d-4d08-8684-de55411bcede/journeys/c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0"
    }
  ],
  "message_version": "1.0.0"
}