Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Step-by-step implementation with Jira automation

  1. .In Jira's project settings, under Automation, create the Jira automation rule
    1. define the trigger; we can have a manual trigger that will provide an action from the issue screen or a trigger based on creating a specific issue type. In this case, it would probably make the most sense to have a trigger based on the transition to some status (e.g., "Done"). We can also restrict this to the issue types "Test Execution" and "Sub-Test Execution" using an IF condition.
      1. Info
        titlePlease note

        Xray provides an automatic mechanism to transition Test Execution issues if all of its tests have a final status (i.e., if all tests have reported results). This is useful whenever uploading test automation results from a CI/CD pipeline. Please read the available configuration options to enable this under the Miscellaneous tab in Xray global settings.

  2. make a IF THEN ELSE block to adjust the text message and image of the notification, to tailor our notification for successful and unsuccessful testing case
    1. We can compare the number of tests that passed vs the total number of tests on the Test Execution, to identify wether all test results were successful or not. We'll use information from the "Test Execution Status" custom field that is associated with the Test Execution issue; if you want to see what's within this field, you can use the "Add value to the audit log"

      1. Code Block
        collapsetrue
        {{Test Execution Status.statuses.get(1).name}} {{Test Execution Status.statuses.get(10).statusCount}}
        
        ...
        
        {{Test Execution Status.count}}
    2. Note: we could also do it by looking at the number of failed tests using the expression {{Test Execution Status.statuses.get(01).statusCount)}}
  3. send the notification by using a "Send web request" to invoke the webhook on Teams (two requests, one for success and another if tests failed)
    1. If not all tests passed, we can send the following content.


      1. Code Block
        collapsetrue
        {
            "@type": "MessageCard",
            "@context": "http://schema.org/extensions",
            "themeColor": "0076D7",
            "summary": "{{issue.summary}}",
            "sections": [{
                "activitySubtitle": "{{issue.summary}}",
                "activityTitle": "Test results for project {{project.name}}",
                "activityImage": "https://docs.getxray.app/s/e1tqew/8402/f0863dd17de361916f7914addff17e0432a0be98/_/images/icons/emoticons/error.png",
                "facts": [
               {
                    "name": "Test Execution",
                    "value": "[{{issue.key}}]({{issue.url}})"
                }, {
                    "name": "Reporter",
                    "value": "{{issue.reporter.displayName}}"
                }, {
                    "name": "Version",
                    "value": "{{issue.fixVersions.name}}"
                }, {
                    "name": "Revision",
                    "value": "{{issue.Revision}}"
                }, {
                    "name": "Test Environment(s)",
                    "value": "{{issue.Test Environments}}"
                }, {
                    "name": "Test Plan",
                    "value": "[{{issue.Test Plan}}]({{baseUrl}}/browse/{{issue.Test Plan}})"
                }, {
                    "name": "Total tests",
                    "value": "{{Test Execution Status.count}}"
                }, {
                    "name": "Passed tests",
                    "value": "{{Test Execution Status.statuses.get(10).statusCount}}"
                }, {
                    "name": "Failed tests",
                    "value": "{{Test Execution Status.statuses.get(01).statusCount}}"
                }, {
                    "name": "Other tests",
                    "value": "{{#=}}{{Test Execution Status.count}} - {{Test Execution Status.statuses.get(0).statusCount}} - {{Test Execution Status.statuses.get(1).statusCount}}{{/}}"
                }],
                "markdown": true
            }]
        }
    2. If all tests passed, within the "ELSE" section of the IF block, we can send the following content.



      1. Code Block
        collapsetrue
        {
            "@type": "MessageCard",
            "@context": "http://schema.org/extensions",
            "themeColor": "0076D7",
            "summary": "{{issue.summary}}",
            "sections": [{
                "activitySubtitle": "{{issue.summary}}",
                "activityTitle": "Test results for project {{project.name}}",
                "activityImage": "https://docs.getxray.app/s/e1tqew/8402/f0863dd17de361916f7914addff17e0432a0be98/_/images/icons/emoticons/check.png",
                "facts": [
               {
                    "name": "Test Execution",
                    "value": "[{{issue.key}}]({{issue.url}})"
                }, {
                    "name": "Reporter",
                    "value": "{{issue.reporter.displayName}}"
                }, {
                    "name": "Version",
                    "value": "{{issue.fixVersions.name}}"
                }, {
                    "name": "Revision",
                    "value": "{{issue.Revision}}"
                }, {
                    "name": "Test Environment(s)",
                    "value": "{{issue.Test Environments}}"
                }, {
                    "name": "Test Plan",
                    "value": "[{{issue.Test Plan}}]({{baseUrl}}/browse/{{issue.Test Plan}})"
                }, {
                    "name": "Total tests",
                    "value": "{{Test Execution Status.count}}"
                }, {
                    "name": "Passed tests",
                    "value": "{{Test Execution Status.statuses.get(1).statusCount}}"
                }, {
                    "name": "Failed tests",
                    "value": "{{Test Execution Status.statuses.get(0).statusCount}}"
                }, {
                    "name": "Other tests",
                    "value": "{{#=}}{{Test Execution Status.count}} - {{Test Execution Status.statuses.get(0).statusCount}} - {{Test Execution Status.statuses.get(1).statusCount}}{{/}}"
                }],
                "markdown": true
            }]
        }

...