טריגרים של 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 ...
});