欢迎参加我们将于 2022 年 10 月 18 日举办的 Firebase 峰会(线上线下同时进行),了解 Firebase 如何帮助您加快应用开发速度、满怀信心地发布应用并在之后需要时轻松地扩大应用规模。立即报名

Firebase Test Lab tetikleyicileri

Firebase Test Lab'de bir test matrisinin tamamlanmasına yanıt olarak bir işlevi tetikleyebilirsiniz. Örneğin, bir Slack kanalını bilgilendirebilir veya bir test başarısız olursa bir e-posta gönderebilirsiniz.

Daha fazla kullanım örneği için bkz . Cloud Functions ile neler yapabilirim? .

TestMatrix tamamlamada bir işlevi tetikleyin

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

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

Test durumlarını ve sonuçlarını ele alın

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

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

Müşteri ayrıntılarına erişin

Test matrisleri farklı kaynaklardan veya iş akışlarından oluşturulabilir. Bu nedenle, testin kaynağına veya diğer önemli bağlamına dayalı olarak farklı eylemler gerçekleştiren işlevler oluşturmak genellikle istenir. Buna yardımcı olmak için gcloud , daha sonra işlevinizde erişilebilecek bir testi başlatırken isteğe bağlı bilgileri 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 fonksiyon:

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