عوامل تشغيل مركز الاختبار الافتراضي لمنصة 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 ...
});