Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Firebase Test Lab 트리거

Firebase Test Lab에서 테스트 매트릭스 완료에 대한 응답으로 함수를 트리거할 수 있습니다. 예를 들어 테스트에 실패하면 Slack 채널에 알리거나 이메일을 보낼 수 있습니다.

사용 사례의 예를 더 보려면 Cloud Functions로 무엇을 할 수 있나요?를 참조하세요.

TestMatrix 완료 시 함수 트리거

functions.testLab.testMatrix().onComplete() 이벤트 핸들러를 사용하여 TestMatrix가 완료되면 트리거되는 새로운 함수를 생성합니다.

exports.sendEmailNotification = functions.testLab.testMatrix().onComplete((testMatrix) => {
  // ...
});

테스트 상태 및 결과 처리

함수를 실행할 때마다 매트릭스의 최종 상태 및 문제 이해를 돕는 세부정보가 포함된 TestMatrix가 전달됩니다.

exports.handleTestMatrixCompletion = functions.testLab.testMatrix().onComplete(testMatrix => {
  const matrixId = testMatrix.testMatrixId;
  switch (testMatrix.state) {
    case 'FINISHED':
      console.log(`TestMatrix ${matrixId} finished with outcome: ${testMatrix.outcomeSummary}`);
      break;
    case 'INVALID':
      console.log(`TestMatrix ${matrixId} was marked as invalid: ${testMatrix.invalidMatrixDetails}`);
      break;
    default:
      console.log(`TestMatrix ${matrixId} completed with state ${testMatrix.state}`);
  }
  return null;
});

클라이언트 세부정보 액세스

테스트 매트릭스는 다양한 소스 또는 워크플로에서 생성될 수 있습니다. 따라서 대부분의 경우 테스트의 소스 또는 기타 중요 컨텍스트를 기반으로 다양한 작업을 수행하는 함수를 생성하는 것이 바람직합니다. 이를 위해 gcloud를 사용하면 테스트 시작 시 임의의 정보를 전달할 수 있으며 이후 함수에서 이 정보에 액세스할 수 있습니다. 예를 들면 다음과 같습니다.

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

함수 예시:

exports.notifyOnPullRequestFailure = functions.testLab.testMatrix().onComplete(testMatrix => {
  if (testMatrix.clientInfo.details['testType'] != 'pr') {
    // Not a pull request
    return null;
  }

  if (testMatrix.state == 'FINISHED' && testMatrix.outcomeSummary == 'SUCCESS') {
    // No failure
    return null;
  }

  const link = testMatrix.clientInfo.details['link'];
  let message = `Test Lab validation for pull request ${link} failed. `;

  if (!!testMatrix.resultStorage.resultsUrl) {
    message += `Test results available at ${testMatrix.resultStorage.resultsUrl}. `;
  }

  // Send notification here ...
});