Check out what’s new from Firebase at Google I/O 2022. Learn more

מפעילים של 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 ...
});