Cypress Integration mit Xray - End-to-End Tests

🕒 Lesedauer: 5 Minuten

Seit der Erstveröffentlichung in 2017 ist Cypress zu einer Schlüsselfigur im Testingumfeld geworden: Mit mehr als 4.000.000 wöchentlichen Downloads ist es ohne Zweifel eines der beliebteren Packages in npm, dem Paketmanager für Node.js. Aus Testersicht überzeugt Cypress durch Schnelligkeit, der Zugänglichkeit der doch großen Fülle an Features und der nahtlosen Integration vieler bereits bekannter Frameworks wie Mocha oder Chai. Einen Überblick über weitere Vor-und Nachteile bietet dieser Blogbeitrag.

Aber wie schaut es mit dem Reporting aus? Klar, Cypress kann eigenständig Screenshots machen und Videos aufnehmen. Mit Plugins kann man die Testergebnisse sogar zu HTML-Reports zusammenfügen. Auch ein Export der Testergebnisse in eine JUnit-XML-Datei lässt sich einrichten, die man dann beispielsweise in Xray importieren kann. Das Problem dabei: In diese Dateien lassen sich keine Screenshots von auftretenden Fehlern einbetten. Weiterhin ist es oft mühsam, Cypress zu sagen, dass es bitte die in den Werkzeugen definierten Testfälle wiederverwenden soll.Für viele Testamanager werden unzureichende Anbindungen sicherlich ein Ausschlusskriterium für Cypress sein, trotz der vielen Vorteile. Bei Qytera wurden deswegen mit dem Cypress Xray Plugin eine Brücke geschlagen, welche Xray - das meistgenutzte Testmanagement-Tool in Jira nahtlos in Cypress integriert.Die grundlegende Verwendung des Xray Plugins wird in diesem Blogbeitrag demonstriert.

Testfälle

Das Plugin lässt sich am einfachsten anhand von ein paar winzigen Testfällen demonstrieren. Die Testfälle, die in diesem Blogbeitrag vorkommen, verwenden dabei example.org als Testobjekt. Auf der Seite gibt es nicht viel zu sehen, abgesehen von etwas Text – insbesondere keine Bilder. Insgesamt gibt es drei Testfälle:

  • Es wird überprüft, dass die Seite eine Überschrift mit Text Example Domain enthält.
  • Es wird überprüft, dass die Seite einen Hyperlink mit www.iana.org/domains/example als Ziel enthält.
  • Es wird überprüft, dass die Seite ein Bild enthält. Dieser Testfall wird immer fehlschlagen (und soll das auch), da die Seite wie erwähnt kein Bild enthält.

Im Screenshot ist der entsprechende Testcode in Cypress zu sehen und welche der Elemente von den Funktionen jeweils abgedeckt werden.

 

Image
Cypress-mit-upload-nach-Xray-Bild_1.jpg

Bild: Die Elemente des Testobjekts, die mit den drei Testfällen abgedeckt werden. Oder auch nicht, da das Testobjekt kein Bild enthält. [Quelle: atlassian.com]

Bei der Ausführung der Tests meldet Cypress wie erwartet, dass zwei von drei Tests fehlerfrei laufen und lediglich der dritte fehlschlägt (“failed to find element: img"). Zusätzlich wird für den dritten Test automatisch ein Screenshot abgespeichert, der den Zustand zum Zeitpunkt des Scheiterns dokumentiert.

 

Image
Cypress-mit-upload-nach-Xray-Bild_2.jpg
Bild: Ganz ohne Plugins findet Reporting in Cypress ausschließlich über die Standardausgabe statt. [Quelle: atlassian.com]

Für denjenigen, der die Tests entwickelt, reicht diese Dokumentation möglicherweise vollkommen aus. In einem Projektrahmen sollte aber persistentes Reporting stattfinden, idealerweise mit einem zentralen Ort zur Verwaltung der Testfälle. Das Xray-Plugin ermöglicht mit der Anbindung an Xray genau diese beiden Aspekte.

Verwendung des Xray-Plugins

Das Xray-Plugin ist sehr schlank gehalten und bietet aktuell eine einfache Funktionalität, die Testergebnisse hochladen kann und in Xray entsprechende Issues erstellt oder wiederverwendet. Es lassen sich zwei Richtungen identifizieren, in die die Informationen zu einzelnen Testfällen fließen können.

Erst Cypress, dann Xray

Die erste Richtung ist die von Cypress nach Xray. Das heißt, dass zu Testfällen, die in Cypress ausgeführt werden, in Xray automatisch entsprechende Issues angelegt werden. Die Namen der Issues werden dabei von den Namen der einzelnen Testfälle übernommen.

 

 

Jede Testausführung legt dabei ein Test Execution Issue an, in der die ausgeführten Test Issues verlinkt sind. Sollte für einen Testfall bereits ein Test Issue mit identischem Namen existieren, wird es wiederverwendet (für mehr Informationen siehe Abschnitt Creating Test Issues in der Xray API Dokumentation).

Vermutlich wird in dieser Variante jedoch die Verwaltung der Issues in Xray unübersichtlich aufgrund sich schnell mal ändernder Namen bei Cypress-Testfällen. Für jeden neuen Namen würde immer wieder ein neues Test Issue erstellt werden. Deswegen empfiehlt es sich, bestehende Test Issues wie im folgenden Abschnitt explizit wiederzuverwenden. Als Bonus bleiben dann auch die Testanalysten im Projekt glücklich, die weiterhin ein ordentlich gepflegtes Xray vorfinden wollen.

Erst Xray, dann Cypress

Die zweite Richtung ist die von Xray nach Cypress. In diesem Fall existieren in Xray bereits alle Test Issues, man muss Cypress lediglich beibringen, durch welche Testfällen sie abgebildet werden. Dazu reicht es aus, die Issue-Keys in die Namen der Testcases mit aufzunehmen. Bei der Testausführung ist das Plugin dann in der Lage, die Zuordnung auszulesen und den Upload anzupassen.

 

 

Insgesamt wird hierbei dann typischerweise ein neues Test Execution Issue angelegt, welches die ausgeführten Test Issues referenziert. Eine zentrale Verwaltung der Testfälle in Xray wird somit möglich gemacht.

Webinar: Cypress Testautomatisierung & Xray in der CI/CD - End-to-End Tests

 

 

Fazit

Das Cypress-Xray-Plugin bietet eine gute Möglichkeit, Testfälle in Xray mit Testausführungen in Cypress zu verbinden. Es erlaubt eine automatische Übermittlung der Cypress-Testergebnisse nach Xray und erleichtert die Analyse und das Management von Testfällen- und läufen. Auch die bereits bestehenden Issues in Xray können nach Minimalanpassungen in Cypress wiederverwendet werden. Alles, was man neben Cypress zur Verwendung des Plugins braucht, ist eine betriebsbereite Xray-Instanz. Ob es sich dabei um eine Server- oder eine Cloudvariante handelt, spielt keine Rolle.

Genauere Anleitungen sowie weitere Features - beispielsweise die Integration mit Cucumber - können dem offiziellen Repository entnommen werden. In der nächsten Zeit werden hier zum Thema Integration von Cypress und Xray weitere spannende Blogbeiträge erscheinen.

 

Veröffentlicht am 24.Januar 2023

Aktualisiert am 19.November 2024

Sebastian Vollbrecht

Junior Test Automation Engineer

Sebastian Vollbrecht ist nach Erhalt seines M. Sc. Informatik direkt im Testing gelandet. Dort konnte er als Consultant innerhalb kürzester Zeit bereits mehrere Projekte erfolgreich abschließen und weiß mittlerweile, dass das Reporting von (Test-)Ergebnissen oft eines der wichtigsten Elemente gelungener Projektarbeit ist. Zurzeit ist er als Test Automation Engineer für die Qytera Software Testing Solutions GmbH tätig.

Finden Sie weitere interessante Artikel zum Thema: