如何从 Firebase 测试实验室获取测试用例结果?

How do I get test cases results from Firebase Test Lab?

我已经设置了一个 Google 云功能,可以在某些 documentation

的帮助下向 Slack 报告 Firebase 测试实验室结果

但是,它目前仅显示“PASSED”或“FAILED”,这没有多大帮助。我想显示通过的测试总数,例如9/20 test cases passed.

我找不到任何详细说明如何执行此操作的文档。不可能吗?

这是我当前的功能:

exports.postTestResultsToSlack = functions.testLab
  .testMatrix()
  .onComplete(async testMatrix => {

    if (testMatrix.clientInfo.details['testType'] != 'regression') {
      // Not regression tests
      return null;
    }

    const { testMatrixId, state, outcomeSummary, resultStorage } = testMatrix;

    const colour = getSlackColour(outcomeSummary)

    const title = `*Test Session: ${testMatrixId}*`;

    const details = `7/10 passed (58%)`;  // Replace hardcoded data here

    const resultURL = resultStorage.resultsUrl

    const slackResponse = await postToSlack(colour, title, details, resultURL);

    functions.logger.log(JSON.stringify(slackResponse.data));
  });

下面是我想要但找不到获取方式的数据截图:

没有直接通过 Functions SDK 获取此数据的方法。您将需要对相应的 API 端点进行 HTTPS 调用以检索它。

我手边没有 JavaScript 代码,但是例如这是调用具有此数据的端点的 curl/gcloud 命令:

curl \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "X-Goog-User-Project: <projectid>" \
https://toolresults.googleapis.com/toolresults/v1beta3/projects/<projectid>/histories/<historyid>/executions/<executionid>/environments

此测试的 historyidexecutionid 存储在 TestMatrix.resultStorage 中。不要忽视您必须在 2 个地方提供 projectid

结果将是一个包含 Environment 列表的 JSON。您需要的数据在 Environment.environmentResult.testSuiteOverviews 字段中。