Cloud Functions ile Firebase Test Lab'in Kapsamını Genişletin


TestMatrix tamamlandığında bir işlevi tetikleyin

Bir TestMatrix, etkinlik işleyiciyle 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ütmesi, matrisin son durumunu ve sorunları anlamanıza yardımcı olacak ayrıntıları içeren bir TestMatrix'den geçer.

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 testin kaynağına veya diğer önemli bağlamına göre farklı işlemler gerçekleştiren işlevler oluşturulması önerilir. Bu konuda yardımcı olmak için gcloud, işlevinizde daha sonra erişilebilen bir test başlatırken rastgele bilgiler aktarmanıza olanak tanır. Örnek:

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