@@ -36,10 +36,10 @@ inputs:
3636outputs :
3737 testExecutionLinks :
3838 description : ' Outputs a comma-separated list of Orchestrator links for viewing test results'
39- value : ${{ steps.parse_test_results.outputs.testExecutionLinks }}
39+ value : ${{ steps.parse_test_results.outputs.testExecutionLinks || steps.parse_test_results_tm.outputs.testExecutionLinks }}
4040 testResults :
4141 description : ' Markdown formatted table listing the tests that have been run and whether they passed or failed'
42- value : ${{ steps.parse_test_results.outputs.testResults }}
42+ value : ${{ steps.parse_test_results.outputs.testResults || steps.parse_test_results_tm.outputs.testResults }}
4343 containsPublishableTestCases :
4444 description : ' Boolean value indicating whether any test cases set as publishable were found in the repository'
4545 value : ${{ steps.run_tests.outputs.containsPublishableTestCases }}
@@ -205,8 +205,8 @@ runs:
205205 fi
206206
207207 - id : parse_test_results
208- name : Parse test results
209- if : always()
208+ name : Parse test results (Standard)
209+ if : always() && inputs.projectKey == ''
210210 shell : bash
211211 run : |
212212 testResults="${{ steps.run_tests.outputs.testResults }}"
@@ -247,3 +247,54 @@ runs:
247247
248248 echo "$testExecutionLinks"
249249 echo "$testResults"
250+
251+ - id : parse_test_results_test_manager
252+ name : Parse test results (Test Manager)
253+ if : always() && inputs.projectKey != ''
254+ shell : bash
255+ run : |
256+ testResults="${{ steps.run_tests.outputs.testResults }}"
257+ testExecutionUrls=""
258+ testResultsFolder="${{ steps.run_tests.outputs.testResultsFolder }}"
259+ folderId="${{ steps.get_folder_id.outputs.folderId }}"
260+
261+ # Loop through all JSON files in the test results folder
262+ while IFS= read -r testResultFilePath; do
263+ echo "Processing test result file: $testResultFilePath"
264+ testResultData=$(cat "$testResultFilePath" | jq '.')
265+
266+ # Loop through each TestManagerTestSetRuns entry
267+ while IFS= read -r testSetRun; do
268+ testSetRunId=$(echo "$testSetRun" | jq -r '.Id')
269+ testSetRunName=$(echo "$testSetRun" | jq -r '.Name')
270+ testSetExecutionLink="${{ inputs.orchestratorUrl }}${{ inputs.orchestratorLogicalName }}/${{ inputs.orchestratorTenant }}/testmanager_/${{ inputs.projectKey }}/testexecutions/$testSetRunId"
271+
272+ echo "Test execution can be viewed in Test Manager by clicking this link: $testSetExecutionLink"
273+
274+ testResultsTable="| Test case | Result |\n| :-- | :-- |"
275+ # Loop through each TestCaseExecution within this TestManagerTestSetRun
276+ while IFS= read -r testCase; do
277+ testName=$(echo "$testCase" | jq -r '.Name')
278+ testCaseId=$(echo "$testCase" | jq -r '.TestCaseId')
279+ testStatus=$(echo "$testCase" | jq -r '.Status')
280+ testCaseLink="${{ inputs.orchestratorUrl }}${{ inputs.orchestratorLogicalName }}/${{ inputs.orchestratorTenant }}/testmanager_/${{ inputs.projectKey }}/testexecution-results/$testSetRunId/$testCaseId"
281+ testResultsTable+="\n| [$testName]($testCaseLink) | $(if [ "$testStatus" == "Passed" ]; then echo ":white_check_mark: Passed"; else echo ":x: Failed"; fi) |"
282+ done <<< $(echo "$testSetRun" | jq -c '.TestCaseExecutions[]')
283+
284+ testResults+="\n### [Test results for $testSetRunName]($testSetExecutionLink)\n$testResultsTable"
285+
286+ if [ -z "$testExecutionURLs" ]; then
287+ testExecutionURLs="$testSetExecutionLink"
288+ else
289+ testExecutionURLs+=", $testSetExecutionLink"
290+ fi
291+ done <<< $(echo "$testResultData" | jq -c '.TestManagerTestSetRuns[]')
292+ done < <(find "$testResultsFolder" -type f -name "*.json")
293+
294+ echo "testExecutionLinks=$testExecutionURLs" >> $GITHUB_OUTPUT
295+ echo -e "testResults<<EOF\n$testResults\nEOF" >> $GITHUB_OUTPUT
296+
297+ echo -e "$testResults" >> $GITHUB_STEP_SUMMARY
298+
299+ echo "$testExecutionLinks"
300+ echo "$testResults"
0 commit comments