مشغلات Firebase Test Lab

يمكنك تشغيل وظيفة استجابة لاستكمال مصفوفة الاختبار في Firebase Test Lab. على سبيل المثال ، يمكنك إعلام قناة Slack أو إرسال بريد إلكتروني في حالة فشل الاختبار.

لمزيد من أمثلة حالات الاستخدام ، راجع ماذا يمكنني أن أفعل بوظائف السحابة؟ .

تشغيل دالة عند إكمال 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 ...
});