Lösen Sie nach Abschluss von TestMatrix eine Funktion aus
Erstellen Sie eine neue Funktion, die ausgelöst wird, wenn eine TestMatrix mit dem Ereignishandler functions.testLab.testMatrix().onComplete()
abgeschlossen wird:
exports.sendEmailNotification = functions.testLab.testMatrix().onComplete((testMatrix) => {
// ...
});
Behandeln Sie Testzustände und -ergebnisse
Bei jeder Ausführung Ihrer Funktion wird eine TestMatrix
übergeben, die den Endzustand der Matrix und Details zum besseren Verständnis von Problemen enthält.
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;
});
Greifen Sie auf Kundendaten zu
Testmatrizen können aus verschiedenen Quellen oder Arbeitsabläufen erstellt werden. Daher ist es häufig wünschenswert, Funktionen zu erstellen, die basierend auf der Quelle oder einem anderen wichtigen Kontext des Tests unterschiedliche Aktionen ausführen. Um dies zu unterstützen, können Sie gcloud
beim Starten eines Tests beliebige Informationen übergeben, auf die später in Ihrer Funktion zugegriffen werden kann. Zum Beispiel:
gcloud beta firebase test android run \
--app=path/to/app.apk \
--client-details testType=pr,link=https://path/to/pull-request
Beispielfunktion:
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 ...
});