Repository: test-results-reporter/reporter
Pull request #157 (2024-03-18 17:06:47)

152 extension ci details


Patch:
diff --git a/package-lock.json b/package-lock.json
index 342dd18..06bed9b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
 {
   "name": "test-results-reporter",
-  "version": "1.1.2",
+  "version": "1.1.3",
   "lockfileVersion": 2,
   "requires": true,
   "packages": {
     "": {
       "name": "test-results-reporter",
-      "version": "1.1.2",
+      "version": "1.1.3",
       "license": "ISC",
       "dependencies": {
         "async-retry": "^1.3.3",
diff --git a/package.json b/package.json
index e76802c..af38b70 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "test-results-reporter",
-  "version": "1.1.2",
+  "version": "1.1.3",
   "description": "Publish test results to Microsoft Teams, Google Chat, Slack and InfluxDB",
   "main": "src/index.js",
   "types": "./src/index.d.ts",
diff --git a/src/extensions/ci-info.js b/src/extensions/ci-info.js
index be67799..0795c0d 100644
--- a/src/extensions/ci-info.js
+++ b/src/extensions/ci-info.js
@@ -43,7 +43,15 @@ function get_repository_elements(inputs) {
     elements.push({ label: 'Repository', key: ci.repository_name, value: ci.repository_url, type: 'hyperlink' });
   }
   if (inputs.show_repository_branch && ci && ci.repository_ref) {
-    elements.push({ key: 'Branch', value: ci.repository_ref.replace('refs/heads/', '') });
+    if (ci.repository_ref.includes('refs/pull')) {
+      const pr_url = ci.repository_url + ci.repository_ref.replace('refs/pull/', 'pull/');
+      const pr_name = ci.repository_ref.replace('refs/pull/', '').replace('/merge', '');
+      elements.push({ label: 'Pull Request', key: pr_name, value: pr_url, type: 'hyperlink' });
+    } else {
+      const branch_url = ci.repository_url + ci.repository_ref.replace('refs/heads/', 'tree/');
+      const branch_name = ci.repository_ref.replace('refs/heads/', '');
+      elements.push({ label: 'Branch', key: branch_name, value: branch_url, type: 'hyperlink' });
+    }
   }
   return elements;
 }
@@ -57,7 +65,7 @@ function get_build_elements(inputs) {
   const ci = getCIInformation();
   if (inputs.show_build && ci && ci.build_url) {
     const name = (ci.build_name || 'Build') + (ci.build_number ? ` #${ci.build_number}` : '');
-    elements.push({ key: name, value: ci.build_url, type: 'hyperlink' });
+    elements.push({ label: 'Build', key: name, value: ci.build_url, type: 'hyperlink' });
   }
   if (inputs.data) {
     elements = elements.concat(inputs.data);
diff --git a/src/helpers/ci.js b/src/helpers/ci.js
index 9320da0..3c19c7a 100644
--- a/src/helpers/ci.js
+++ b/src/helpers/ci.js
@@ -20,7 +20,7 @@ function getGitHubActionsInformation() {
     repository_name: ENV.GITHUB_REPOSITORY,
     repository_ref: ENV.GITHUB_REF,
     repository_commit_sha: ENV.GITHUB_SHA,
-    build_url: ENV.GITHUB_SERVER_URL + '/' + ENV.GITHUB_REPOSITORY + '/commit/' + ENV.GITHUB_SHA + '/checks/' + ENV.GITHUB_RUN_ID,
+    build_url: ENV.GITHUB_SERVER_URL + '/' + ENV.GITHUB_REPOSITORY + '/actions/runs/' + ENV.GITHUB_RUN_ID,
     build_number: ENV.GITHUB_RUN_NUMBER,
     build_name: ENV.GITHUB_WORKFLOW,
     user: ENV.GITHUB_ACTOR,


Test patch:
diff --git a/test/ext-ci-info.spec.js b/test/ext-ci-info.spec.js
index 5db1fea..12eb480 100644
--- a/test/ext-ci-info.spec.js
+++ b/test/ext-ci-info.spec.js
@@ -97,7 +97,7 @@ describe('extensions - ci-info', () => {
     process.env.SYSTEM_TEAMPROJECT = 'test';
     process.env.BUILD_REPOSITORY_URI = 'https://github.com/test/test';
     process.env.BUILD_REPOSITORY_NAME = 'test/test';
-    process.env.BUILD_SOURCEBRANCH = '/refs/heads/feature-test';
+    process.env.BUILD_SOURCEBRANCH = '/refs/pull/123/merge';
     process.env.BUILD_SOURCEVERSION = 'sha';
     process.env.BUILD_BUILDID = 'id-123';
     process.env.BUILD_BUILDNUMBER = 'number-123';
@@ -131,6 +131,53 @@ describe('extensions - ci-info', () => {
     assert.equal(mock.getInteraction(id).exercised, true);
   });
 
+  it('should send test-summary with azure devops ci information to chat and extra data', async () => {
+    process.env.GITHUB_ACTIONS = 'GITHUB_ACTIONS';
+    process.env.GITHUB_SERVER_URL = 'https://github.com';
+    process.env.GITHUB_REPOSITORY = 'org/repo';
+    process.env.GITHUB_REF = '/refs/heads/feature-test';
+    process.env.GITHUB_SHA = 'sha';
+    process.env.GITHUB_RUN_ID = 'id-123';
+    process.env.GITHUB_RUN_NUMBER = 'number-123';
+    process.env.GITHUB_WORKFLOW = 'Build';
+    const id = mock.addInteraction('post test-summary with ci-info to chat');
+    await publish({
+      config: {
+        targets: [
+          {
+            name: 'chat',
+            inputs: {
+              url: 'http://localhost:9393/message'
+            },
+            extensions: [
+              {
+                name: 'ci-info',
+                inputs: {
+                  data: [
+                    {
+                      "key": "Download Logs",
+                      "value": "{LOGS_URL}",
+                      "type": "hyperlink"
+                    }
+                  ]
+                }
+              }
+            ]
+          }
+        ],
+        results: [
+          {
+            type: 'testng',
+            files: [
+              'test/data/testng/single-suite.xml'
+            ]
+          }
+        ]
+      }
+    });
+    assert.equal(mock.getInteraction(id).exercised, true);
+  });
+
   afterEach(() => {
     mock.clearInteractions();
   });
diff --git a/test/mocks/chat.mock.js b/test/mocks/chat.mock.js
index b8fd259..f039138 100644
--- a/test/mocks/chat.mock.js
+++ b/test/mocks/chat.mock.js
@@ -548,4 +548,36 @@ addInteractionHandler('post test-summary with metadata to chat', () => {
       status: 200
     }
   }
+});
+
+addInteractionHandler('post test-summary with ci-info to chat', () => {
+  return {
+    request: {
+      method: 'POST',
+      path: '/message',
+      body: {
+        "cards": [
+          {
+            "sections": [
+              {
+                "@DATA:TEMPLATE@": "CHAT_RESULT_SINGLE_SUITE"
+              },
+              {
+                "widgets": [
+                  {
+                    "textParagraph": {
+                      "text": "<b>Repository:</b> <a href=\"https://github.com/org/repo\">org/repo</a> ｜ <b>Branch:</b> <a href=\"https://github.com/org/repo/tree/feature-test\">/feature-test</a><br><b>Build:</b> <a href=\"https://github.com/org/repo/actions/runs/id-123\">Build #number-123</a> ｜ <a href=\"LOGS_URL\">Download Logs</a>"
+                    }
+                  }
+                ]
+              }
+            ]
+          }
+        ]
+      }
+    },
+    response: {
+      status: 200
+    }
+  }
 });
\ No newline at end of file
diff --git a/test/mocks/slack.mock.js b/test/mocks/slack.mock.js
index 67a5afe..ce42c68 100644
--- a/test/mocks/slack.mock.js
+++ b/test/mocks/slack.mock.js
@@ -631,7 +631,7 @@ addInteractionHandler('post test-summary with ci-info to slack', () => {
                 "type": "section",
                 "text": {
                   "type": "mrkdwn",
-                  "text": "*Repository:* <https://github.com/test/test|test/test> ｜ *Branch:* /feature-test\n<https://dev.azure.com/test/_build/results?buildId=id-123|Build #number-123>"
+                  "text": "*Repository:* <https://github.com/test/test|test/test> ｜ *Pull Request:* <https://github.com/test/test/pull/123/merge|/123>\n*Build:* <https://dev.azure.com/test/_build/results?buildId=id-123|Build #number-123>"
                 }
               }
             ]
diff --git a/test/mocks/teams.mock.js b/test/mocks/teams.mock.js
index 1673f93..7ff965d 100644
--- a/test/mocks/teams.mock.js
+++ b/test/mocks/teams.mock.js
@@ -1556,7 +1556,7 @@ addInteractionHandler('post test-summary with ci-info to teams', () => {
                 },
                 {
                   "type": "TextBlock",
-                  "text": "**Repository:** [test/test](https://github.com/test/test) ｜ **Branch:** /feature-test\n\n[Build #number-123](https://github.com/test/test/commit/sha/checks/id-123)",
+                  "text": "**Repository:** [test/test](https://github.com/test/test) ｜ **Branch:** [/feature-test](https://github.com/test/test/tree/feature-test)\n\n**Build:** [Build #number-123](https://github.com/test/test/actions/runs/id-123)",
                   "wrap": true,
                   "separator": true
                 }