Skip to main content

Robot Framework library for Jira, Confluence and Xray (Cloud & Data Center)

Project description

robotframework-jira-xray-confluence

Robot Framework library for Jira, Confluence and Xray (Cloud & Data Center).

Why this package exists

Teams using Robot Framework often end up with several disconnected approaches:

  • one library for Jira
  • another for Confluence
  • a partial wrapper for Xray Server/DC
  • custom scripts for Xray Cloud GraphQL
  • manual code to map Jira keys to Xray internal IDs

This package unifies those needs into a single Robot Framework library.

What this library covers

This package exposes, through one Robot Framework entry point:

  • Jira
  • Confluence
  • Service Desk
  • Xray Server / Data Center
  • Xray Cloud through the dedicated xray-cloud-for-jira client

Main design goals

  • keep one Robot Framework library instead of several wrappers
  • reuse the Python client layer for Xray Cloud
  • support implicit active sessions
  • avoid duplicating keywords
  • keep Python and Robot Framework usages aligned

💥 CORE FEATURE: Hybrid Dynamic Keywords (600+)

This library dynamically exposes 600+ keywords (Jira/Confluence/Bitbucket/JSD/Jira Xray DC)

🔧 How it works

  • introspects Python clients
  • maps public methods → RF keywords
  • injects them dynamically

🎯 Benefits

  • no wrapper maintenance
  • automatic updates
  • massive coverage

Installation

pip install robotframework-jira-xray-confluence

or with uv:

uv add robotframework-jira-xray-confluence

Dependencies

This package depends on:

  • robotframework
  • atlassian-python-api
  • wrapt
  • xray-cloud-for-jira

Package structure

robotframework-jira-xray-confluence/
├── src/robotframework_jira_xray_confluence/
│   ├── __init__.py
│   └── JiraXrayConfluence.py
├── examples/
├── pyproject.toml
├── README.md
├── LICENSE
└── .gitignore

How to import the library in Robot Framework

Recommended import:

Library    robotframework_jira_xray_confluence.JiraXrayConfluence

This form is explicit and works cleanly with the class-based implementation.

Quick start

Connect to Jira Cloud

*** Settings ***
Library    robotframework_jira_xray_confluence.JiraXrayConfluence

*** Test Cases ***
Connect To Jira Cloud
    ${jira}=    Connect To Jira
    ...    https://your-company.atlassian.net
    ...    username=your.email@company.com
    ...    password=${JIRA_API_TOKEN}
    ...    cloud=${True}

Connect to Xray Cloud

*** Settings ***
Library    robotframework_jira_xray_confluence.JiraXrayConfluence

*** Test Cases ***
Connect To Xray Cloud
    ${xray}=    Connect To Xray Cloud
    ...    ${XRAY_CLIENT_ID}
    ...    ${XRAY_CLIENT_SECRET}

Query tests from a Test Plan using the implicit active session

*** Settings ***
Library    robotframework_jira_xray_confluence.JiraXrayConfluence

*** Test Cases ***
Get Tests From Plan
    Connect To Xray Cloud    ${XRAY_CLIENT_ID}    ${XRAY_CLIENT_SECRET}
    ${tests}=    Get Tests With Test Plan    DEMO-10
    Log To Console    ${tests}

Explicit session mode

You can also pass the session explicitly if needed:

*** Settings ***
Library    robotframework_jira_xray_confluence.JiraXrayConfluence

*** Test Cases ***
Explicit Session Example
    ${session}=    Connect To Xray Cloud    ${XRAY_CLIENT_ID}    ${XRAY_CLIENT_SECRET}
    ${tests}=    Get Tests With Test Plan    ${session}    DEMO-10
    Log To Console    ${tests}

Xray GraphQL keyword

This keyword directly exposes GraphQL access for advanced use cases.

*** Settings ***
Library    robotframework_jira_xray_confluence.JiraXrayConfluence

*** Test Cases ***
Use Raw GraphQL
    Connect To Xray Cloud    ${XRAY_CLIENT_ID}    ${XRAY_CLIENT_SECRET}
    ${query}=    Catenate    SEPARATOR=\n
    ...    query($issueId: String!) {
    ...      getTest(issueId: $issueId) {
    ...        issueId
    ...        jira(fields:["key","summary"])
    ...      }
    ...    }
    ${result}=    Xray GraphQL    ${query}    {"issueId": "66925"}
    Log To Console    ${result}

Available connection keywords

  • Connect To Jira
  • Connect To Confluence
  • Connect To Xray
  • Connect To Xray Cloud
  • Connect To Service Desk

Introspection keywords

  • List Atlassian Keywords
  • Count Atlassian Keywords
  • List Xray Cloud Keywords
  • Count Xray Cloud Keywords

Xray Cloud keywords exposed automatically

The library dynamically exposes the public methods of XrayCloudClient, including:

  • Get Test
  • Get Test Id
  • Get Test Plan Id
  • Get Test Execution Id
  • Get Tests By Jql
  • Get Test Plans By Jql
  • Get Test Executions By Jql
  • Get Tests With Test Plan
  • Get Tests With Test Execution
  • Get Test Runs
  • Create Test Execution
  • Add Tests To Test Plan
  • Update Test Run Status
  • Import Robot Results
  • Import Junit Results
  • Import Cucumber Results
  • Add Evidence To Test Run

The names above follow Robot Framework keyword rendering rules based on the Python method names.

Why the Xray Cloud part is separate

atlassian-python-api is very useful, but it does not cover the full Xray Cloud GraphQL use case the way this project needs it.

That is why this library imports and reuses the dedicated package:

  • xray-cloud-for-jira

This lets the Robot Framework layer stay thin while the Xray Cloud logic lives in a reusable Python package.

Session behavior

This library supports two modes:

1. Implicit session mode

Once you call a Connect To ... keyword, the session is stored internally and reused automatically by the following keywords.

2. Explicit session mode

If you pass a session object as the first argument, that session is used instead.

This design keeps test cases short, while still allowing advanced flows.

Cloud and Data Center coverage

Jira

  • Cloud through email + API token
  • Server/DC through token-based usage supported by atlassian-python-api

Confluence

  • Cloud through email + API token
  • Server/DC through token-based usage supported by atlassian-python-api

Xray

  • Server/DC through atlassian.Xray
  • Cloud through xray-cloud-for-jira

Service Desk

  • Cloud and Server/DC via atlassian-python-api

Example: mixed usage in one suite

*** Settings ***
Library    robotframework_jira_xray_confluence.JiraXrayConfluence

*** Test Cases ***
Unified Example
    Connect To Jira
    ...    https://your-company.atlassian.net
    ...    username=your.email@company.com
    ...    password=${JIRA_API_TOKEN}
    ...    cloud=${True}

    Connect To Xray Cloud    ${XRAY_CLIENT_ID}    ${XRAY_CLIENT_SECRET}

    ${issue}=    Get Issue    DEMO-6
    ${tests}=    Get Tests With Test Plan    DEMO-10

    Log To Console    ${issue}
    Log To Console    ${tests}

Development install

Clone both repositories locally if you want to work on both packages together.

Install the core Xray package first

git clone https://github.com/orenault/xray-cloud-for-jira.git
cd xray-cloud-for-jira
pip install -e .

Then install the Robot Framework package

git clone https://github.com/orenault/robotframework-jira-xray-confluence.git
cd robotframework-jira-xray-confluence
pip install -e .

or with uv:

uv sync

Build

uv build

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

robotframework_jira_xray_confluence-0.1.0.tar.gz (6.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file robotframework_jira_xray_confluence-0.1.0.tar.gz.

File metadata

File hashes

Hashes for robotframework_jira_xray_confluence-0.1.0.tar.gz
Algorithm Hash digest
SHA256 180c13390a263057cda74ef92489ea5bf50ca807ed87360dc9d6c7e7569c17f8
MD5 e6e1704e3d50f73a1e632424faf778e8
BLAKE2b-256 ab9988cfd4a32de15c25948a2e9ef80ea02834cb7c7e128f0fe3ddf7be5a3bfd

See more details on using hashes here.

File details

Details for the file robotframework_jira_xray_confluence-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for robotframework_jira_xray_confluence-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9322b5d2753f520bf1448e66b645213a77178c9f7c7b975c74b64e826c8214df
MD5 2a451e97ae993c5fe847cfd64ee80e8a
BLAKE2b-256 9dd5ce323365011ab6268c385960bee6eb046f531a809f46f5fd27855500206f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page