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.
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.
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.