Firebase Test Lab のトリガー

Firebase Test Lab では、テスト マトリックスの完了に応じて関数をトリガーできます。たとえば、テストが失敗した場合に、Slack チャンネルに通知したりメールを送信したりできます。

TestMatrix の完了時に関数をトリガーする

Firebase Test Lab 関数をトリガーするには、firebase-functions/v2/testLab サブパッケージを使用します。onTestMatrixCompleted() イベント ハンドラを使用して、TestMatrix が完了したときに関数をトリガーできます。

この例では、関数は CloudEvent オブジェクトから TestMatrix データを取得し、対応するテスト結果を Slack チャンネルに送信します。

exports.posttestresultstoslack = onTestMatrixCompleted(
    {secrets: ["SLACK_WEBHOOK_URL"]},
    async (event) => {
    // Obtain Test Matrix properties from the CloudEvent
      const {testMatrixId, state, outcomeSummary} = event.data;

      // Create the title of the message
      const title = `${getSlackmoji(state)} ${getSlackmoji(
          outcomeSummary,
      )} ${testMatrixId}`;

      // Create the details of the message
      const details = `Status: *${state}* ${getSlackmoji(
          state,
      )}\nOutcome: *${outcomeSummary}* ${getSlackmoji(outcomeSummary)}
    `;

      // Post the message to slack
      const slackResponse = await postToSlack(title, details);

      // Log the response
      logger.log(slackResponse);
    });

クライアントの詳細にアクセスする

テスト マトリックスはさまざまなソースやワークフローから作成される場合があります。そのため、テストのソースやその他の重要なコンテキストに基づいてさまざまなアクションを実行する関数を作成することが望ましい場合がよくあります。これを実現するため、gcloud ではテストの開始時に任意の情報を渡すことができ、後で関数内でこの情報にアクセスすることができます。次に例を示します。

gcloud beta firebase test android run \
    --app=path/to/app.apk \
    --client-details testType=pr,link=<path/to/pull-request>