توسيع نطاق مركز الاختبار الافتراضي لمنصة Firebase باستخدام دوال السحابة الإلكترونية


بدء دالة عند اكتمال 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 ...
});