מעבדה לבדיקת Firebase מפעילה

אתה יכול להפעיל פונקציה בתגובה להשלמת מטריצת הבדיקה במעבדת הבדיקות של Firebase. לדוגמה, תוכל להודיע ​​לערוץ 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 ...
});