مشغلات Firebase Test Lab


قم بتشغيل دالة عند إكمال TestMatrix

أنشئ دالة جديدة يتم تشغيلها عند اكتمال TestMatrix باستخدام وظائف معالج الأحداث functions.testLab.testMatrix().onComplete() :

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