Xray Exporter

Xray Exporter is a tool used to export test cases into Jira Xray Plugin.

Features:

  • Create and update manual and cucumber test cases

  • Set Jira labels for test cases

  • Set Jira components for test cases

  • Link test cases to stories they belong to

JIRA Configuration

The exporter requires configuration of JIRA instance to work with.

To configure connector to JIRA instance use jira. prefix followed by arbitrary sequence of alphanumerical characters that determine unique JIRA instance key and followed by the properties listed in the following table:

The properties marked with bold are mandatory.
Property Name Description

project-key-regex

The regular expression to match JIRA project keys.

endpoint

The JIRA Endpoint.

any of general, authentication or SSL handshake properties

The HTTP properties.

fields-mapping

The mapping between human-readable fields used by VIVIDUS and fields used by JIRA.

Example 1. jira.properties
jira.vividus.project-key-regex=(VIVIDUS|VSCODE|REACTAPP)
jira.vividus.endpoint=https://vividusframework.atlassian.net/
jira.vividus.http.auth.username=admin
jira.vividus.http.auth.password=5401a7d27b291c5d
jira.vividus.http.socket-timeout=10000
jira.vividus.fields-mapping.test-case-type=customfield_10002

In the example above the vividus is a key that can be used to refer this JIRA instance.

Xray Export Properties

Property Required Description

xray-exporter.jira-instance-key

false

The key of the configured JIRA instance, in case of missing value it will be evaluated automatically based on issue keys being exported

xray-exporter.json-results-directory

true

Path to directory with test execution JSON results.

The path is managed by the bdd.report-directory property which default value is output/reports/jbehave relatively to the tests directory.

Please make sure that the bdd.configuration.formats property includes JSON value in order to generate test execution results.

xray-exporter.project-key

true

Key of a Jira project where new test cases should be created

xray-exporter.assignee

false

Username of Jira user that will be used as assignee for newly created test cases

xray-exporter.editable-statuses

false

Statuses of test cases allowed to update

xray-exporter.test-execution-key

false

The key of a Test Execution to which the exported test cases along with their statuses will be added

xray-exporter.test-set-key

false

The key of a Test Set to which the exported test cases will be added

Jira Fields Mapping

The Xray is a Jira plugin that uses custom Jira fields for it’s data, one of the ways to find out custom field names for particular field used by Xray on Jira UI (if access to Jira configuration is prohibited) is to request description of some issue like https://jira.example.com/rest/api/latest/issue/DUMMY-1.

Manual Test Case Properties

Manual test case view

Index Property Description

1

jira.<jira-instance-key>.fields-mapping.test-case-type

Key of a field containing test case type

2

jira.<jira-instance-key>.fields-mapping.manual-steps

Key of a field containing collection of manual steps

Cucumber Test Case Properties

Cucumber test case view

Index Property Description

1

jira.<jira-instance-key>.fields-mapping.test-case-type

Key of a field containing test case type

2

jira.<jira-instance-key>.fields-mapping.cucumber-scenario-type

Key of a field containing type of cucumer scenario

3

jira.<jira-instance-key>.fields-mapping.cucumber-scenario

Key of a field containing body of cucumber scenario

Authentication

  • If the authentication through basic schema is available on your JIRA instance use jira.<jira instance key placeholder>.http.auth.username and jira.<jira instance key placeholder>.http.auth.password properties, both properties must be set.

    jira.<jira instance key placeholder>.http.auth.username=admin
    jira.<jira instance key placeholder>.http.auth.password=5401a7d27b291c5d
  • In case of two-factor authentication or any other complex authentication process it’s possible to set session cookies into request headers like the following example shows (jira.<jira instance key placeholder>.http.auth.username and jira.<jira instance key placeholder>.http.auth.password properties must be empty in this case).

    jira.<jira instance key placeholder>.http.headers.Cookie=SESSIONID=298zf09hf012fh2

Scenario Meta Attributes

Name Example Description

testCaseId

@testCaseId STUB-0

Map scenario to Jira test case in 1 to 1 relation

requirementId

@requirementId STUB-0

Link scenario to Jira issue with "Tests" link type in 1 to 1 relation

xray.labels

@xray.labels label-1;label-2

Set labels to the exported test case

xray.components

@xray.components component-1;component-2

Set components to the exported test case

xray.skip-export

@xray.skip-export

Skip test case while exporting

Cucumber Test Cases

Any scenario that doesn’t correspons to the manual test case rules is considered as cucumber test case

Example 2. Cucumber.story
Scenario: Verify link
Meta: @testCaseId TEST-231
      @requirementId STORY-783
      @xray.labels link
      @xray.components web

Given I am on a page with the URL '${vividus-test-site-url}/links.html'
When I wait until the page has the title 'Links'
Then number of elements found by `<locator>` is equal to `1`
Examples:
|locator                        |
|By.linkUrl(#ElementId)         |
|By.linkUrlPart(Element)        |
|By.linkText(Link to an element)|
Example 3. CucumberWithManualPart.story
Scenario: Verify link
Meta: @testCaseId TEST-566
      @requirementId STORY-983
      @xray.labels link
      @xray.components web

!-- Step: Open main app page
!-- Step: Wait for page with title is loaded
!-- Step: Verify number of links
!-- Data: * link url is '#ElementId'
!-- * link url part is 'Element'
!-- * link text is 'Link to an element'
!-- Result: The number of links for all locators is equal to 1

Given I am on a page with the URL '${vividus-test-site-url}/links.html'
When I wait until the page has the title 'Links'
Then number of elements found by `<locator>` is equal to `1`
Examples:
|locator                        |
|By.linkUrl(#ElementId)         |
|By.linkUrlPart(Element)        |
|By.linkText(Link to an element)|

Manual Test Cases

  • Scenario is considered as Manual Test Case if all of its lines start with !-- prefix.

  • The Manual Test Case step must start with Step: used to specify action to perform and can optionally contain Data: and Result: for specifying action data and action expected result respectively.

  • The Manual Test Case step parts are allowed to have multilines.

  • The JBehave Keywords values (e.g. Given, When, Then …​) on new lines not prefixed with Step:, Data: or Result must be escaped with - sign.

Example 4. Manual.story
Scenario: Buy an item
Meta: @testCaseId TEST-435
      @requirementId STORY-234
      @xray.labels shopping; payment
      @xray.components web

!-- Step: Go to the test item with the following id
!-- Data: 39914061
!-- Result: The current stock is 1

!-- Step: Add the item to the shopping cart
!-- Result: Shopping cart now displays one 39914061 item and no items in stock

!-- Step: In the backoffice app update the stock to 0 on item

!-- Step: Back in the browser, proceed to checkout.
!-- Go through all the steps and confirm the payment method.
!-- Result: Then you should get an error message mentioning that there are no more items in the stock.
!-- - Then payment method was not made

Export

  • Go to the corresponding GitHub Packages repository

  • Find the link with name vividus-to-xray-exporter-0.4.8.jar

  • Click the link and download the exporter JAR-file

  • Create a new file with name application.properties and put all necessary properties there

  • Run the following command replacing <jar-file name> with the name of the JAR-file downloaded previously

java -jar <jar-file name> -Dspring.config.location=classpath:/application.properties,./application.properties