Uruchamianie funkcji po zakończeniu TestMatrix
Utwórz nową funkcję, która zostanie uruchomiona po zakończeniu TestMatrix za pomocą funkcji obsługi zdarzeń:functions.testLab.testMatrix().onComplete()
exports.sendEmailNotification = functions.testLab.testMatrix().onComplete((testMatrix) => {
// ...
});
Obsługa stanów i wyników testów
Każde wykonanie funkcji otrzymuje parametr TestMatrix
, który zawiera stan końcowy macierzy i szczegóły ułatwiające zrozumienie problemów.
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;
});
Dostęp do danych klienta
Macierz testów może być tworzona na podstawie różnych źródeł lub procesów roboczych. Dlatego często warto tworzyć funkcje, które wykonują różne działania na podstawie źródła lub innego ważnego kontekstu testu. Aby Ci to ułatwić, funkcja gcloud
umożliwia przekazywanie dowolnych informacji podczas uruchamiania testu, do których można później uzyskać dostęp w ramach funkcji. Przykład:
gcloud beta firebase test android run \
--app=path/to/app.apk \
--client-details testType=pr,link=https://path/to/pull-request
Przykładowa funkcja:
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 ...
});