Test Lab tetikleyicileri (1. nesil)

TestMatrix tamamlandığında bir işlevi tetikleme

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

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

Test durumlarını ve sonuçlarını işleme

İşlevinizin her yürütme işlemine, matrisin son durumunu ve sorunları anlamaya yardımcı olacak ayrıntıları içeren bir TestMatrix iletilir.

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, testin kaynağına veya diğer önemli bağlamına göre farklı işlemler gerçekleştiren işlevler oluşturmak genellikle tercih edilir. Bu konuda yardımcı olmak için gcloud, bir test başlatırken daha sonra işlevinizde erişilebilecek rastgele bilgiler iletmenize olanak tanır. Ö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 ...
});