Page tree
Skip to end of metadata
Go to start of metadata

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

 

Creating and Editing Tests - JIRA REST API

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

 

 

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

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

 

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

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

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

 

"Manual Test Steps" custom field value format

{
   "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 full Test creation example using JIRA's REST API endpoint for creating issues.

 

 POST /rest/api/2/issue

Creates a Test in a project.

Request

Example 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
Example 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



Example 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.

Example 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 you need to specify the keys, the id of the filter or jql query of the issues you want to export, at least one query parameter has to be specified but all 3 can be sent at the same time.

 

 GET /rest/raven/1.0/api/test

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. 

Example 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.

Example 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.

Exporting Test Runs

To export the test runs of a 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.

 

 GET /rest/raven/1.0/api/test/{key}/testruns

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 '\'

Example 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.

Example 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.

Exporting Test Sets

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

 

 GET /rest/raven/1.0/api/test/{key}/testsets

Return a json with the exported test sets.

Request

PATH PARAMETERS
parametertypedescription
keyString

- Test Key

Example 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.

Example 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.

Exporting Test Executions

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

 

 GET /rest/raven/1.0/api/test/{key}/testexecutions

Return a json with the exported test executions.

Request

PATH PARAMETERS
parametertypedescription
keyString

- Test Key

Example 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.

Example 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.

Exporting Test Plans

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

 

 GET /rest/raven/1.0/api/test/{key}/testplans

Return a json with the exported test plans.

Request

PATH PARAMETERS
parametertypedescription
keyString

- Test Key

Example 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.

Example 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.

  • No labels