Create Xray test execution for test via "Send web request"-action

Christopher Dick January 10, 2023

Hello there,

Referring to the following post, I would like to know how to create a linked test execution for an Xray test via web request.

Manual linking of test and test execution is not possible via issue links because Xray has internal linking logic.

The following fields are to be filled in:

2023-01-10 13_32_28-Einstellungen - JIRA.png

Many Greetings,

Christopher

1 answer

1 accepted

0 votes
Answer accepted
Stefan Salzl
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
January 14, 2023

Hi @Christopher Dick 

Just to make sure I´m on the same page:

You already have a Test and created a test execution out of this test? --> there is already a test run for the test within your test execution.

And you would like to add a jira standard issue link between those issues?

is that right?

Just a personal question: What´s the use case behind it (as there is an xray-linking between those issues)?

 

If the above mentioned assumption is correct you would have to call the Jira RestAPI as the standard issue linking is a Jira functionality (not xray).

See the following link how issue linking is done via RestAPI:
https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-links/#api-rest-api-3-issuelink-post

 

Please let me know if this was helpful or if you need any further support.

Best
Stefan

Stefan Salzl
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
January 14, 2023

btw:

Hab im Screenshot gesehen, dass deine Screens auf Deutsch sind :) Du kannst mir gerne auch auf Deutsch antworten ;)

 

LG

Stefan

Christopher Dick January 16, 2023

Hi Stefan,

erstmal Danke für deine Unterstützung :)

Anwendungsfall:

  • User Story (Jira Vorgang) in Projekt A erreicht Status "Testing".
  • Via Trigger wird ein Test (Xray Vorgang) in Projekt B mit zwei zugehörigen Testausführungen (Xray Vorgang) erzeugt. Beide Testausführungen basieren auf dem selben Test und werden unterschiedlichen Benutzern zugewiesen.
    • Testausführung 1: Entwicklertest (Zugewiesene Person: Entwickler)
    • Testausführung 2: Abnahmetest (Zugewiesene Person: Fachlicher Anforderer)

Eine Standardverknüpfung ist hierfür nicht ausreichend, weil die Testausführung dann nicht korrekt in Xray mit dem Test verknüpft wird.

Im verknüpften Beitrag wird eine Erzeugung mit Verknüpfung über eine Webanfrage angesprochen.

Viele Grüße,

Christopher

Christopher Dick January 25, 2023

Guten Morgen @Stefan Salzl

konntest du den Anwendungsfall nachvollziehen, oder fallen dir bereits erste Lösungsansätze ein?

 

Viele Grüße,

Christopher

Stefan Salzl
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
January 28, 2023

Hi @Christopher Dick 

Ich kann noch nicht ganz nchvollziehen wieso ein gesonderter Link der test executions notwendig ist, da test executions immer in einem testcase referenziert sind (über xray logik, im test erscheint eine liste der test executioms in welchen dieser test ausgeführt wird).

LG

Stefan

Stefan Salzl
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
February 11, 2023

Hi @Christopher Dick 

Hach.....Ich hatte da einen kompletten Denkfehler. Sorry for the confusion.

Ich hab´s jetzt gecheckt und ich glaub ich bin der Lösung auf der Spur. Kleiner Teaser: Ich denke über die GraphQL API lässt sich das lösen. Ist auch für mich was neues, daher muss ich noch ein wenig tüfteln. 

Ich geb Bescheid sobald ich Neuigkeiten hab.

LG

Stefan

Stefan Salzl
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
February 11, 2023

Hej @Christopher Dick 

So....ich denke die Tüftlerei hat sich ausgezahlt.

So sieht meine Automation Rule gesamt aus. Ich werde dann im Anschluss die einzelnen Komponenten genauer beschreiben:

image.png

Dein Trigger ist ja so weit klar. In deinem Fall müsstest du die Statusübergängen auf deine Anforderungen anpassen.

Nächster Schritt: Testcase erstellen

image.png

In deinem Fall musst du hier das andere Projekt eingeben, in welchem du den Testcase erstellen möchtest. Beim Erstellen des Testcases wird auch der Issue-Link "Tests" erstellt. Dies ist der Standard-Link für XRAY tests. 

 

Nächsten 2 Schritte: Test Executions erstellen

image.png

Diese Schritte/Actions sind straight forward create issue actions.

 

Letzter Schritt: WebRequest um Test Exeuctions dem TestCase zuzuordnen

image.png

Hierzu wird die qrapql-api verwendet. Für die Authorization muss ein xray token erstellt werden. Details dazu findest du hier:
https://docs.getxray.app/display/XRAYCLOUD/GraphQL+API

Die Authentifizierung erfolgt dann mittels Bearer Token. 

Payload:

{"query":"mutation{addTestExecutionsToTest(issueId:\"{{createdissues.get(0).id}}\", testExecIssueIds: [\"{{createdissues.get(1).id}}\",\"{{createdissues.get(2).id}}\"]){addedTestExecutions warning}}"}

Die smart values {{createdissues.get(index).id}} liefern jeweils die indizes der erstellten issues, die für den api call benötigt werden. 

 

In meiner Testumgebung hats funktioniert. Ich hoffe das funktioniert auch bei dir und löst deine Anforderung.

 

LG
Stefan

Christopher Dick February 15, 2023

Hi @Stefan Salzl,

vielen Dank für deine Unterstützung.

Die Lösung sieht bereits sehr gut aus, aber leider habe ich Schwierigkeiten mit den letzten "Feinheiten":

  • Wie lassen sich zwei separate Testausführungen an einem Test für unterschiedliche Benutzer erstellen?
    • Die Benutzer sind in einem Custom-Field im Triggervorgang gespeichert und jeder soll seine eigene Ausführung zugewiesen bekommen.

Die Idee ist einen fachlichen Benutzer für den Test einzubinden und einen Entwickler.

Viele Grüße,

Christopher

Christopher Dick February 16, 2023

Hi @Stefan Salzl

leider schlägt die Autorisierung fehl:

2023-02-16 12_38_43-Einstellungen - JIRA.png

Muss ich bei der Erstellung des Token noch etwas beachten? Oder kannst du einen anderen Fehler erkennen?

Viele Grüße,

Christopher

Stefan Salzl
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
February 16, 2023

Hi @Christopher Dick 

bzgl. Authorization: bist du wie folgt vorgegangen:

API key in XRAY settings erstellen

für die xray api wird ein eigener key benötigt. Dazu klicke rechts oben das Admin-Zahnrad und wähle "Apps", dann in den XRAY settings auf "API Keys" klicken:

image.png

Hier klickst du dann auf "Create API key". Damit erstellst du für deinen User ein key pair mit ClientID und ClientSecret. Diese beiden Strings kopieren, die benötigst du anschließend um den Token generieren zu können.

 

Token erstellen

Mit diesen Daten wird anschließend der authenticate-endpoint der API aufgerufen und damit der Token generiert. Hier der Link zur Beschreibung mit Beispielen des aufrufs:

https://docs.getxray.app/display/XRAYCLOUD/Authentication+-+REST

Ich mach das über folgendes Beispiel:
curl -H "Content-Type: application/json" -X POST --data '{ "client_id": "deine ClientID aus dem vorherigen Step","client_secret": "<dein_Secret" }'  https://xray.cloud.getxray.app/api/v1/authenticate

Dieser Aufruf liefert dir eine lange Zeichenkette zurück --> der Token (Bearer-Token)

 

Konfiguration der Authorization in WebRequest-Action

Diesen Token verwendest du mit Angabe des Bearer Service im Feld "Authorization" in deiner WebRequest action:

image.png

Aus den Screenshots kann ich sonst keine Infos ziehen, was da eventuell falsch sein könnte. Wie oben erwähnt: Wichtig ist, die Info mit zu senden, dass es sich um einen Bearer Token handelt.

 

LG

Stefan

Stefan Salzl
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
February 16, 2023

@Christopher Dick 

bzgl. Testexecution pro user:

Du musst natürlich die create issue action 2 mal aufrufen. Innerhalb der action wird auch gleich der assignee definiert. 

Voraussetzend, dass diese beiden User in einem MultiUser-Picker Feld eingetragen sind bekommt man bei der Abfrage des Feldes die beiden User als "Liste". Also über den smart value {{triggerIssue.dein_customFieldName}} bekommst du eine Liste der eingetragenen User. Diese Liste kannst du anschließend wie ein Array behandeln (in deinem GraphQL Api call wird das auch so verwendet). Über list.get(index) können wir die einzelnen Einträge verwenden (siehe dazu folgenden Link)
https://support.atlassian.com/cloud-automation/docs/jira-smart-values-lists/#list.get-index-

Das sieht dann in der Action wie folgt aus (in meinem System heißt das custom field "Reviewers"):

image.png

LG

Stefan

Christopher Dick February 16, 2023

Guten Morgen @Stefan Salzl

nach dem Hinzufügen des Wortes "Bearer" vor dem Token, hat sich die Fehlermeldung verändert:

Vorher

  • Fehler beim Veröffentlichen der Web-Anfrage. HTTP-Status der Antwort:
    401
    HTTP-Text der Fehlerantwort:
    {"error":"Could not find authentication data on request"}

Nachher

  • Fehler beim Veröffentlichen der Web-Anfrage. HTTP-Status der Antwort:
    401
    HTTP-Text der Fehlerantwort:
    {"error":"Invalid JWT: JsonWebTokenError: jwt malformed"}
  • 2023-02-17 07_41_08-Testmanagement - Details - JIRA.png

Das einzige was ich hierzu gefunden habe: LINK

Viele Grüße,

Christopher

Stefan Salzl
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
February 17, 2023

Hi @Christopher Dick 

hast du den token mit „“ im feld angefürhrt? also so:

Bearer „167.exxxF87…“

Falls ja: lass die quotes weg und nimm nur den string den du bei der authentication zurück bekommen hast.

LG

Stefan

Christopher Dick February 17, 2023

Hi @Stefan Salzl

ich habe noch keinen Token erstellt mit Client ID und Client Secret.

Welches Programm nutzt man hierfür und wie sehen die Befehlszeilen aus?

VG

Christopher

Christopher Dick February 17, 2023

Leider habe ich nicht die Möglichkeit Curl zu installieren.

Ist eine Token Erstellung auch mit Postman möglich?

Falls ja, wie würde das funktionieren?

VG

Stefan Salzl
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
February 17, 2023

Hi @Christopher Dick ,

das sollte mit postman genau so funktionieren. Ist nur ein anderes tool um mit der api zu kommunizieren.

Wie das in postman genau aussieht kann ich dir leider nicht sagen, da ich mit dem tool keine erfahrung habe. Dazu gibts aber bestimmt einiges an hilfen zu finden.

Den Token brauchst du jedenfalls, wie in einem meiner Posts beschrieben.

LG
Stefan

Christopher Dick February 20, 2023

Hi @Stefan Salzl

die Token Erstellung war nun erfolgreich. Es handelte sich zuvor um die falschen Credentials.

Nach dem Test deiner aufgeführten Automation ist die Testausführung leider nicht mit dem Test verknüpft.

Bitte siehe Screenshot.

Viele Grüße,

Christopher

2023-02-20 13_55_59-.png

Like Stefan Salzl likes this
Stefan Salzl
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
February 20, 2023

Hi @Christopher Dick 

kannst du bitte einen Screenshot vom Audit Log/Protokoll diese Ausführung senden. 

Weiters wird in deiner Automation Rule nur 1 TestExecution erstellt, wodurch "createdIssue.get(2)" vermutlich was falsches oder leeres zurückschickt, da dieser Index in der Liste nicht existiert.

Du könntest also entweder versuchen, wie geplant (und wie von mir beschrieben) in der Automation Rule die 2. Test Execution zu erstellen, dann sollte es aus meiner Sicht funktionieren.

LG
Stefan

Stefan Salzl
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
February 20, 2023

Hi @Christopher Dick 

Es könnte auch sein, dass der API call zu schnell feuert und die IDs noch nicht "vorhanden" sind. Versuch bitte vor der "send webrequest" action noch eine "re-fetch issue" action ein zu fügen. Eventuell verschafft das der Automation rule mehr Zeit und der API call bekommt die richtigen Daten.

Bitte füge nach der "send webrequest" action noch eine "Log action" mit folgendem Inhalt hinzu (so können wir im Audit Log sehen was der API call macht bzw. was ihn stört):

hier per Text damit du es nicht abtippen musst:

response: {{webhookResponse}}, body: {{webhookResponse.body}}

image.png

LG

Stefan

Christopher Dick February 21, 2023

Hi @Stefan Salzl

leider ist mein Xray Token bereits nach einem Tag abgelaufen.

Die Automationsregel soll jedoch dauerhaft hinterlegt werden.

Gibt es eine Möglichkeit die Gültigkeit des Token zu verlängern?

Viele Grüße,

Christopher

Stefan Salzl
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
February 21, 2023

Hi @Christopher Dick 

1 Tag expire time klingt merkwürdig - und definitiv zu wenig für eine automation rule. Genau weiß ich das leider auch nicht. Bitte lies mal die Doku ob du etwas dazu findest:
https://docs.getxray.app/display/XRAYCLOUD/Getting+started

Ansonsten schlage ich vor, den Vendor-Support damit zu kontaktieren:
https://jira.getxray.app/servicedesk/customer/portal/2/user/login?destination=portal%2F2

 

LG
Stefan

Christopher Dick February 23, 2023

Hi @Stefan Salzl

leider lässt sich die Gültigkeitsdauer des Token von 24 Stunden nicht verändern.

Es gibt jedoch eine Möglichkeit eine Autorisierung mithilfe der Credentials durchzuführen.

Welche Änderungen sind hierfür in deiner Anleitung anzuwenden?

Viele Grüße,

Christopher Dick

Stefan Salzl
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
February 23, 2023

Hi @Christopher Dick 

Ich weiß leider nicht was du damit meinst bzw. kann auch aus dem Link den du gesendet hast nichts dementsprechendes herauslesen.

Ich kenne API-technisch ausschließlich die Authentifizierung via Token.

Bitte auch Dinge selbstständig nachlesen und ausprobieren. Wir helfen hier in der Community sehr gerne bei konkreten Fragen, wenn Dinge nicht laufen. Grundsätzlich ist es aber nicht so gedacht, dass wir die Suche und das bauen von Lösungen hier übernehmen. Das machen viele von uns (ich zumindest) beruflich als Consultants.

LG
Stefan

Christopher Dick February 23, 2023

Hi @Stefan Salzl

danke für deinen Hinweis und für die damit verbundene Unterstützung.

Leider war zuvor der falsche Link enthalten --> Hier der korrekte Beitrag.

VG

Christopher

Stefan Salzl
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
February 23, 2023

Hi @Christopher Dick 

Der Artikel beschreibt nur, wie die Eingaben als "versteckt" angezeigt werden können. Weiters beschreibt es die native Jíra REST API welche (früher) authentication mittels mail & pw erlaubte (mittlerweile depricated, benötigt ebenfalls einen API key). Für deinen Anwendungsfall wird eine andere API verwendet, die eben eine andere Authentication verwendet.

Aus meiner Sicht sehe ich keine andere Möglichkeit, dein Requirement um zu setzen als mit der GraphQL-API und diese benötigt einen Token zur Authentication. Auch der "Token" ist als credential zu sehen. Das ist standard in der Anwendung von APIs. Bitte hier mit deinen Admins/Entwicklern vor Ort abstimmen, welche Möglichkeiten es da gibt.

LG
Stefan

Stefan Salzl
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
March 7, 2023

Hi @Christopher Dick 

Gibts hierzu any news? Konntest du das Thema mit deinen Admins besprechen/klären?

Falls dies hier hilfreich war/zu einer Lösung geführt hat bitte den "Accept" Button drücken, damit dieser Post als gelöst markiert wird. Das erleichtert es anderen Usern mit ähnlichen/gleichen Problemen eine Lösung zu finden.

LG
Stefan

Christopher Dick March 8, 2023

Hi @Stefan Salzl

Credentials können via HTTPS-Webanfrage im Body der Jira Automation zur regelmäßigen Tokenerstellung genutzt werden. Dann klappt alles :)

VG

Christopher

Like Stefan Salzl likes this
Stefan Salzl
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
March 8, 2023

Hi @Christopher Dick 

Vielen Dank für dein Feedback. Welche Credentials/wie verwendest du diese? Jetzt möchte ich auch dazu lernen. Das kenne ich nämlich nicht :) 

Wäre es möglich, dass du deine Lösung (evntl. mit Screenshot) hier teilst? (credentials/daten natürlich geschwärzt). Das würde sowohl mir als auch vielen anderen Usern eventuell helfen.

Vielen Dank im Vorhinein.

LG
Stefan

Christopher Dick March 9, 2023

Hi @Stefan Salzl

leider nicht, da ich es im Unternehmenskontext umgesetzt habe.

Anleitung

Viele Grüße,

Christopher

Like Stefan Salzl likes this

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events