Page tree

Versions Compared

Key

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

You can manage Tests directly through the JIRA Jira REST API. Xray provides additional methods for managing Test Steps andexporting the Test definitions and test runs.

 

Table of Contents
maxLevel1

Children Display

Creating and Editing Tests -

...

 Jira REST API

Xray Test issues can be created and edited through thethough the JIRA Jira REST API

 


Info
titleLearn more

https://developer.atlassian.com/display/JIRADEV/JIRA+REST+API+Example+-+Create+Issue

https://developer.atlassian.com/display/JIRADEV/JIRA+REST+API+Example+-+Edit+issues

 


All Test issue custom fields provided by Xray add-on can be modified using the JIRA Jira REST API:

  • Test Type (default JIRA Jira select field)
  • Cucumber Test Type (default JIRA Jira select field)
  • Cucumber Scenario (default JIRA Jira text field)
  • Manual Test Steps (JSON format; example below)

 


Info

The custom field IDs can be discovered be obtained using the JIRA Jira REST API Browser tool included in JIRAJira. Each ID is of the form "customfield_ID".

Another option, which does not require JIRA Jira administration rights, can be invoking  is to invoke the "Get edit issue meta" in an existing issue (e.g., in a Test issue) as mentioned here.

ExExample: GET http://yourserver/rest/api/2/issue/CALC-1/editmeta 

 


"Manual Test Steps" custom field value format

Code Block
languagejavascript
{
   "fields": {
       "customfield_10004": {
       		"steps": [
       			{
       				"index": 0,
       				"step": "Step 1",
       				"data": "input Data 1",
       				"result": "Excepted result 1"
       			},
       			{
       				"index": 1,
       				"step": "Step 2",
       				"data": "input Data 2",
       				"result": "Excepted result 2"       				
       			},
       			{
       				"index": 2,
       				"step": "Step 3",
       				"data": "input Data 3",
       				"result": "Excepted result 3"       				
       			},
				{
       				"index": 3,
       				"step": "Step 4",
       				"data": "input Data 4",
       				"result": "Excepted result 4"       				
       			}
       		]
       	}
   }
}

 


Please see next  a Below is a full Test creation example using JIRAJira's REST API endpoint for creating issues.

 


Expand
titlePOST /rest/api/2/issue
Panel
borderColor#ccc
borderStylesolid

Creates a Test in a project.

Request

Code Block
titleExample Input for Manual Test
{
    "fields": {
       "project":
       { 
          "key": "ABC"
       },
       "summary": "Sum of two numbers",
       "description": "example of manual test",
       "issuetype": {
          "name": "Test"
       },

       "customfield_10200": { "value": "Manual" },              
       "customfield_10004": {
            "steps": [
                {
                    "index": 0,
                    "step": "Step 1",
                    "data": "input Data 1",
                    "result": "Excepted result 1"
                },
                {
                    "index": 1,
                    "step": "Step 2",
                    "data": "input Data 2",
                    "result": "Excepted result 2"                      
                },
                {
                    "index": 2,
                    "step": "Step 3",
                    "data": "input Data 3",
                    "result": "Excepted result 3"                      
                },
                {
                    "index": 3,
                    "step": "Step 4",
                    "data": "input Data 4",
                    "result": "Excepted result 4"                      
                }
            ]
        }
  
   }
}

where:

  • "customfield_10200" corresponds to the "Test Type" custom field
  • "customfield_10004" corresponds to the "Manual Test Steps" custom field
Code Block
titleExample Input for automated test (Cucumber Scenario)
{
    "fields": {
       "project":
       { 
          "key": "ABC"
       },
       "summary": "Sum of two numbers",
       "description": "example of cucumber automated test - Scenario",
       "issuetype": {
          "name": "Test"
       },
         
         
       "customfield_10200": { "value": "Cucumber" },
       "customfield_10201": { "value": "Scenario" },
       "customfield_10202": "Given I have a calculator\nWhen I press 1\nAnd I press +\nAnd I press 2\nAnd I press =\nThen I should see 3"  
  
   }
}

where:

  • "customfield_10200" corresponds to the "Test Type" custom field
  • "customfield_10201" corresponds to the "Cucumber Test Type" custom field
  • "customfield_10202" corresponds to the "Cucumber Scenario" custom field



Code Block
titleExample Input for automated test (Generic)
{
    "fields": {
       "project":
       { 
          "key": "ABC"
       },
       "summary": "Sum of two number",
       "description": "example of generic test",
       "issuetype": {
          "name": "Test"
       },
         
         
       "customfield_10200": { "value": "Generic" },
       "customfield_10203": "sum_script.sh"  
  
   }
}

where:

  • "customfield_10200" corresponds to the "Test Type" custom field
  • "customfield_10203" corresponds to the "Generic Test Definition" custom field
     

Responses

200 OK : text/plain : Successful. Return a json.

Code Block
titleExample Output
{
    "id": "10700",
    "key": "ABC-53",
    "self": "http://127.0.0.1:8080/rest/api/2/issue/10700"
}

400 BAD_REQUEST : application/jsno : Returns the error.

401 UNAUTHORIZED : text/plain : Unauthorized request.

500  INTERNAL SERVER ERROR : text/plain : An internal error occurred.

 


Exporting Tests

To export tests to json JSON, you need to specify the keys, the id ID of the filter or jql JQL query of the issues you want to export, at . At least one query parameter has to be specified, but all 3 can be sent at the same time.

 


Expand
titleGET /rest/raven/1.0/api/test
Panel
borderColor#ccc
borderStylesolid

Return a json with the exported tests.

Request

QUERY PARAMETERS
parametertypedescription
keysString

- list of keys of the tests separated by ';'.

filterLong- id of the filter.
 jqlString - jql query. 
Tip
titleExample Request

curl -H "Content-Type: application/json" -X GET -u admin:admin http://yourserver/rest/raven/1.0/api/test?keys=TEST-123;TEST-321

curl -H "Content-Type: application/json" -X GET -u admin:admin http://yourserver/rest/raven/1.0/api/test?filter=12030

curl -H "Content-Type: application/json" -X GET -u admin:admin http://yourserver/rest/raven/1.0/api/test?jql=project%20=%2011000%20and%20issuetype%20=%207

curl -H "Content-Type: application/json" -X GET -u admin:admin http://yourserver/rest/raven/1.0/api/test?keys=TEST-123;TEST-321&filter=12030&jql=project%20=%2011000%20and%20issuetype%20=%207

Its necessary to url escape the jql.

Responses

200 OK : text/plain : Successful. Return a json.

Code Block
titleExample Output
[   
   {   
      "key":"PER-1098",
      "self":"http://yourserver/rest/api/2/issue/15798",
      "reporter":"admin",
      "assignee":"admin",
      "precondition":[   
         {   
            "preconditionKey":"PER-1232",
            "self":"http://yourserver/rest/api/2/issue/16000",
            "reporter":"admin",
            "assignee":"admin",
            "type":"Automated[Cucumber]",
            "condition":"Condition example"
         }
      ],
      "type":"Automated[Cucumber]",
	  "status":"TODO",
      "definition":"Given I have entered <input_1> into the calculator\nAnd I have entered <input_2> into the calculator\nWhen I press <button>\nThen the result should be <output> on the screen\n\nExamples: \n    | input_1 | input_2 | button | output |\n    | 20      | 30      | add    | 50     |\n    | 2       | 5       | add    | 7      |\n    | 0       | 40      | add    | 40     |"
   },
   {   
      "key":"PER-1099",
      "self":"http://yourserver/rest/api/2/issue/15799",
      "reporter":"admin",
      "assignee":"admin",
      "precondition":[   

      ],
      "type":"Automated[Generic]",
	  "status":"FAIL",
      "definition":"Test definition example"
   },
   {   
      "key":"PER-1233",
      "self":"http://yourserver/rest/api/2/issue/16001",
      "reporter":"admin",
      "assignee":"admin",
      "precondition":[   

      ],
      "type":"Manual",
	  "status":"PASS",
      "definition":{   
         "steps":[   
            {   
               "id":10940,
               "index":1,
               "step":{   
                  "raw":"step1",
                  "rendered":"<p>step1</p>"
               },
               "data":{   
                  "raw":"data1",
                  "rendered":"<p>data1</p>"
               },
               "result":{   
                  "raw":"result1",
                  "rendered":"<p>result1</p>"
               },
               "attachments":[   

               ]
            },
            {   
               "id":10941,
               "index":2,
               "step":{   
                  "raw":"step2",
                  "rendered":"<p>step2</p>"
               },
               "data":{   
                  "raw":"data2",
                  "rendered":"<p>data2</p>"
               },
               "result":{   
                  "raw":"result2",
                  "rendered":"<p>result2</p>"
               },
               "attachments":[   

               ]
            }
         ]
      }
   }
]

400 BAD_REQUEST : text/plain : Returns the error.

401 UNAUTHORIZED : text/plain : The Xray for JIRA license is not valid.

500  INTERNAL SERVER ERROR : text/plain : An internal error occurred getting the test steps.

...

To export the test runs of a test Test, you need to specify the key of the Test you wish to export the test runs from. You can filter the Test runs by Test Environment.

 


Expand
titleGET /rest/raven/1.0/api/test/{key}/testruns
Panel
borderColor#ccc
borderStylesolid

Return a json with the exported test runs.

Request

PATH PARAMETERS
parametertypedescription
keyString

- Test Key

QUERY PARAMETERS
parametertypedescription
testEnvironmentsString

- Test execution environments separated by ','

if the environment contains a comma escape it with '\'

Tip
titleExample Request

curl -H "Content-Type: application/json" -X GET -u admin:admin http://yourserver/rest/raven/1.0/api/test/{key}/testruns

curl -H "Content-Type: application/json" -X GET -u admin:admin http://yourserver/rest/raven/1.0/api/test/{key}/testruns?testEnvironments=IOS,Android

Responses

200 OK : text/plain : Successful. Return a json.

Code Block
titleExample Output
[   
   {   
      "id":1587,
      "status":"FAIL",
	  "testKey":"CALC-12",
	  "testExecKey":"CALC-13",
      "assignee":"admin",
      "executedBy":"admin",
      "startedOn":"2016-10-11T17:15:05+01:00",
      "finishedOn":"2016-10-24T14:58:34+01:00",
	  "duration":1115009068,
      "defects":[   
         {   
            "id":12410,
            "key":"PER-174",
            "summary":"Test Bug",
            "status":"Open"
         }
      ],
      "evidences":[   
         {   
            "id":383,
            "fileName":"result.json",
            "fileSize":"15 kB",
            "created":"Today 5:41 PM",
            "author":"admin",
            "fileURL":"http://JIRASERVER/plugins/servlet/raven/attachment/383/result.json"
         }
      ],
      "scenarioOutline":"Given I have entered <input_1> into the calculator And I have entered <input_2> into the calculator When I press <button> Then the result should be <output> on the screen Examples: | input_1 | input_2 | button | output | | 20 | 30 | add | 50 | | 2 | 5 | add | 7 | | 0 | 40 | add | 40 |",
      "examples":[   
         {   
            "id":1,
            "rank":0,
            "values":[   
               "input_1",
               "input_2",
               "button",
               "output"
            ],
            "status":"PASS"
         },
         {   
            "id":2,
            "rank":1,
            "values":[   
               "20",
               "30",
               "add",
               "50"
            ],
            "status":"FAIL"
         },
         {   
            "id":3,
            "rank":2,
            "values":[   
               "2",
               "5",
               "add",
               "7"
            ],
            "status":"PASS"
         },
         {   
            "id":4,
            "rank":3,
            "values":[   
               "0",
               "40",
               "add",
               "40"
            ],
            "status":"PASS"
         }
      ]
   },
   {   
      "id":1588,
      "status":"TODO",
	  "testKey":"CALC-12",
	  "testExecKey":"CALC-13",
      "assignee":"admin",
      "defects":[   
         {   
            "id":12410,
            "key":"PER-174",
            "summary":"Test Bug",
            "status":"Open"
         }
      ],
      "evidences":[   
         {   
            "id":383,
            "fileName":"result.json",
            "fileSize":"15 kB",
            "created":"Today 5:41 PM",
            "author":"admin",
            "fileURL":"http://JIRASERVER/plugins/servlet/raven/attachment/383/result.json"
         }
      ],
      "scenarioOutline":"Given I have entered <input_1> into the calculator And I have entered <input_2> into the calculator When I press <button> Then the result should be <output> on the screen Examples: | input_1 | input_2 | button | output | | 20 | 30 | add | 50 | | 2 | 5 | add | 7 | | 0 | 40 | add | 40 |",
      "examples":[]
   }
]

400 BAD_REQUEST : text/plain : Returns the error.

401 UNAUTHORIZED : text/plain : The Xray for JIRA license is not valid.

500  INTERNAL SERVER ERROR : text/plain : An internal error occurred getting the test steps.

...

To export the test sets of a test Test, you need to specify the key of the Test you wish to export the test sets from

 


Expand
titleGET /rest/raven/1.0/api/test/{key}/testsets
Panel
borderColor#ccc
borderStylesolid

Return a json with the exported test sets.

Request

PATH PARAMETERS
parametertypedescription
keyString

- Test Key

Tip
titleExample Request

curl -H "Content-Type: application/json" -X GET -u admin:admin http://yourserver/rest/raven/1.0/api/test/{key}/testsets

Responses

200 OK : text/plain : Successful. Return a json.

Code Block
titleExample Output
[
   {
      "id":13602,
      "key":"CALC-50",
      "summary":"Test Set for all tests",
      "self":"http://JIRASERVER/testJira/rest/api/2/issue/CALC-50",
	  "environments" : [
		"IOS",
		"Android"
	  ]
   },
   {
      "id":13600,
      "key":"CALC-51",
      "summary":"Test Set of v2.0",
      "self":"http://JIRASERVER/testJira/rest/api/2/issue/CALC-51",
	  "environments" : [
		"IOS",
		"Android"
	  ]
   }
]

400 BAD_REQUEST : text/plain : Returns the error.

401 UNAUTHORIZED : text/plain : The Xray for JIRA license is not valid.

500  INTERNAL SERVER ERROR : text/plain : An internal error occurred getting the test steps.

...

To export the test executions of a test Test, you need to specify the key of the Test you wish to export the test executions from

 


Expand
titleGET /rest/raven/1.0/api/test/{key}/testexecutions
Panel
borderColor#ccc
borderStylesolid

Return a json with the exported test executions.

Request

PATH PARAMETERS
parametertypedescription
keyString

- Test Key

Tip
titleExample Request

curl -H "Content-Type: application/json" -X GET -u admin:admin http://yourserver/rest/raven/1.0/api/test/{key}/testexecutions

Responses

200 OK : text/plain : Successful. Return a json.

Code Block
titleExample Output
[
   {
      "id":13602,
      "key":"CALC-52",
      "summary":"Test Execution for all tests",
      "self":"http://JIRASERVER/testJira/rest/api/2/issue/CALC-52"
   },
   {
      "id":13600,
      "key":"CALC-53",
      "summary":"Test Execution of v2.0",
      "self":"http://JIRASERVER/testJira/rest/api/2/issue/CALC-53"
   }
]

400 BAD_REQUEST : text/plain : Returns the error.

401 UNAUTHORIZED : text/plain : The Xray for JIRA license is not valid.

500  INTERNAL SERVER ERROR : text/plain : An internal error occurred getting the test steps.

...

To export the test plans of a test Test, you need to specify the key of the Test you wish to export the test plans from

 


Expand
titleGET /rest/raven/1.0/api/test/{key}/testplans
Panel
borderColor#ccc
borderStylesolid

Return a json with the exported test plans.

Request

PATH PARAMETERS
parametertypedescription
keyString

- Test Key

Tip
titleExample Request

curl -H "Content-Type: application/json" -X GET -u admin:admin http://yourserver/rest/raven/1.0/api/test/{key}/testplans

Responses

200 OK : text/plain : Successful. Return a json.

Code Block
titleExample Output
[
   {
      "id":13602,
      "key":"CALC-54",
      "summary":"Test Plan for all tests",
      "self":"http://JIRASERVER/testJira/rest/api/2/issue/CALC-54"
   },
   {
      "id":13600,
      "key":"CALC-55",
      "summary":"Test Plan of v2.0",
      "self":"http://JIRASERVER/testJira/rest/api/2/issue/CALC-55"
   }
]

400 BAD_REQUEST : text/plain : Returns the error.

401 UNAUTHORIZED : text/plain : The Xray for JIRA license is not valid.

500  INTERNAL SERVER ERROR : text/plain : An internal error occurred getting the test steps.