Firebase Test Lab tetikleyicileri


TestMatrix tamamlandığında bir işlevi tetikleyin

TestMatrix, etkinlik işleyici ile tamamlandığında tetiklenen yeni bir işlev oluşturun functions.testLab.testMatrix().onComplete():

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

Test durumlarını ve sonuçlarını yönetme

İşlevinizin her yürütme işlemi için bir TestMatrix iletilir matrisin son durumunu ve problemleri anlamanıza yardımcı olacak ayrıntıları içerir.

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;
});

İstemci ayrıntılarına erişme

Test matrisleri farklı kaynaklardan veya iş akışlarından oluşturulabilir. Bu nedenle, genellikle kaynağına veya diğer önemli bağlama göre farklı işlemler gerçekleştiren işlevler deneyin. Bu konuda yardımcı olmak için gcloud, teste başlarken rastgele bilgileri aktarmanıza olanak tanır bu dosyaya daha sonra işlevinizde erişebilirsiniz. Örneğin:

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

Örnek işlev:

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 ...
});