You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Next »

Importing Cucumber Tests


The following endpoint is provided to import a Cucumber .feature file or a zip file containing multiple .feature files. The files in the zip file may be in folders/subfolders.

Cucumber ".feature" file/rest/raven/1.0/import/feature


Each .feature file will be processed as follows.

Tests:

  1. try to find the Test by key (in that project), if found then update it; else...
  2. try to find the Test having both
    1. a label with the original relative path of .feature (e.g. "core/sample_addition.feature)
    2. a label named "id:xxx", where xxx is some number (e.g. "id:1", "id:32"); this label comes from a scenario/scenario outline's tag
  3. try to find the Test having both
    1. a label with the original relative path of .feature (e.g. "core/sample_addition.feature)
    2. the same summary
  4. try to find the Test by summary (in that project), if found then update it; else...
  5. create Test in that project and add a label with the relative path of the feature, and another label corresponding to a tag "id:xxx" (if it exists)

Pre-Conditions:

  1. try to find the Pre-Condition by key (in that project), if found then update it; else...
  2. try to find the Pre-Condition having both
    1. a label with the original relative path of .feature (e.g. "core/sample_addition.feature)
  3. try to find the Pre-Condition by summary (in that project), if found then update it; else...
  4. create Pre-Condition in that project and add a label with the relative path of the feature


The mapping from the Scenario/Scenario Outline present in the .feature files to the Test issues in Jira would be as follows:

Scenario/Scenario OutlineTest in JIRA
name of the Scenario/Scenario Outline"Summary" field
steps"Scenario" field
tags of the Scenario/Scenario Outlinelabels


The "Feature" section is not imported since the feature itself should exist previously as a Jira requirement issue (e.g., story).

The exception is the tags before the "Feature: " section; if a requirement issue is found for the specified key, then a "Tests" link is created between the Test and the requirement issue.

If the Cucumber feature has a background, a Pre-Condition issue will be created, if the issue key in the tag does not exist in JIRA, or updated, containing the information provided in that background.

If the background has no name, then the Summary of the Pre-Condition is going to be a string containing the keys of the Tests of that Cucumber feature (e.g. "Background for: CALC-1, CALC-2").

Below is an example of a .feature file containing a Scenario Outline and two Pre Conditions:


@REQ_CALC-889
Feature: As a user, I can calculate the sum of 2 numbers     
       
	Background:
		#@PRECOND_TX-114
		Given that the calculator is configurated
		Then turn on the calculator
		And set the mode to advanced
		#@PRECOND_TX-115
		Given that the calculator is configurated
		Turn on the basic mode

	@UI @core
	Scenario Outline: Cucumber Test As a user, I can calculate the sum of 2 numbers
		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     | 
		    | 4       | 50      | add    | 54     |


In this other hypotetical example, a feature file is shown containing one Background and two tests: one Scenario Outline and a Scenario. Each Scenario/Scenario Outline is identified by an internal "id:xxx", in order to uniquely identify the scenario within the feature file.


@REQ_CALC-1910
Feature: As a user, I can calculate the sum of two numbers

Background:
  Given I have a calculator
  And I have some fingers


@id:1 @fast
Scenario Outline: Cucumber Test As a user, I can calculate the sum of two positive numbers
  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 	| 
| 4  		| 50 		| add 	| 54 	| 
| 5  		| 50 		| add 	| 55 	| 


@id:2
Scenario: Cucumber Test As a user, I can calculate the sum of two negative numbers
  Given I have entered -1 into the calculator
  And I have entered -3 into the calculator
  When I press add
  Then the result should be -4 on the screen


Whenever this feature is imported for the first time, assuming it was imported from file named "features/addition.feature" in a zip file,

  • a Pre-Condition with the summary  "Background for: <issue_key_of_first_test>,<issue_key_of_second_test>" will be created;
  • a Cucumber Test of type "Scenario Outline" will be created, having the summary "Cucumber Test As a user, I can calculate the sum of two positive numbers". The Test will have the label "fast";
  • a Cucumber Test of type "Scenario" will be created, having the summary "Cucumber Test As a user, I can calculate the sum of two negative numbers";
  • All previous Tests will be linked to the requirement CALC-1910


Whenever this same feature is imported for the second and following times, assuming it was imported from file named "features/addition.feature" in a zip file,

  • a Pre-Condition with the summary  "Background for: <issue_key_of_first_test>,<issue_key_of_second_test>" and the label "features/addition.feature" will be updated;
  • a Cucumber Test  having the labels "features/addition.feature" and "id:1" will be updated with the specification of the Scenario Outline; The Test will have the label "fast" (added if needed);
  • a Cucumber Test  having the labels "features/addition.feature" and "id:1" will be updated with the specification of the Scenario;
  • All previous Tests will be linked to the requirement CALC-1910


Request

QUERY PARAMETERS

parameter
type
description
projectKeyString

key of the project where the tests and pre-conditions are going to be created.

multipart/form-data:

"file" : a MultipartFormParam containing a ".feature" file or a ZIP file to import.

Example Request

curl -H "Content-Type: multipart/form-data" -u admin:admin -F "file=@1.feature" http://yourserver/rest/raven/1.0/import/feature?projectKey=DEMO

curl -H "Content-Type: multipart/form-data" -u admin:admin -F "file=@features.zip" http://yourserver/rest/raven/1.0/import/feature?projectKey=DEMO

Responses

200 OK : application/octet-stream : Successful. The cucumber features where successfully imported to Jira.

Example Output
[
	{
		"id":"14400","key":"DEV-915","self":"http://localhost:8727/rest/api/2/issue/14400"
	}
]


400 BAD_REQUEST : text/plain : Returns the error.

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

500  INTERNAL SERVER ERROR : text/plain : An internal error occurred when generating the feature file(s).

  • No labels