Blog
Cypress - Lassen Sie sich nicht vom Dialog aufhalten

Heutzutage entwickelt sich Cypress schnell zum Standard für die UI-Testautomatisierung. Mit der browserübergreifenden Unterstützung, die ab Anfang Juni 2020 verfügbar sein wird, sehen wir bei Xebia, dass die Zugkraft immer größer wird. Wir haben kürzlich zu diesem Wachstum beigetragen, indem wir ein Plugin zur Verfügung gestellt haben, das sicherstellt, dass Cypress-Tests mit Datei-Download-Dialogen aus dem Browser umgehen können. In diesem Blog erläutern wir die Hintergründe und wie wir an die Sache herangegangen sind.
Präludium
Vor einiger Zeit kam einer unserer Kunden auf uns zu und bat uns um Hilfe bei der weiteren Optimierung seiner Cypress-basierten Testautomatisierungseinrichtung. Dieser Kunde war dabei, eine neue Webanwendung zu entwickeln, die die Prozessabläufe seines Unternehmens unterstützen sollte. Als Teil dieses Ablaufs sollte es möglich sein, zu bestimmten Zeitpunkten eine PDF-Datei mit einem detaillierten Überblick über den Prozessstatus herunterzuladen.
Hier begann der schwierige Teil. Zu diesem Zeitpunkt hatten wir mehrere Cypress-Tests laufen, die kontinuierlich Teile dieser Prozessabläufe überprüften. Wenn jedoch ein Ablauf das Herunterladen der PDF-Datei beinhaltete, blieb der entsprechende Cypress-Test stecken. Die Ursache dafür war der Dialog "Speichern unter..." des Browsers. Cypress bot (zu diesem Zeitpunkt) nicht die Funktionalität, um dies korrekt zu behandeln und den automatisierten Test fortzusetzen.
Unter der Haube
Innerhalb des Entwicklungsteams erhielten wir die Bitte, dieses Problem zu lösen. Wir gingen der Sache nach und kamen zu dem Schluss, dass Cypress nicht in der Lage war, mit dem nativen Download-Fenster zu interagieren. Wir beschlossen, der bestehenden Struktur zu folgen und ein Cypress-Plugin einzurichten - mit einem Cypress-Befehl, der dann eine Cypress-Aufgabe auslöst, die die Magie bewirkt. Da der Code hinter dem Plugin eine Interaktion mit dem Dateisystem ermöglichen sollte (Herunterladen und Speichern der Datei), wurde der Code hinter dem Plugin mit nodeJS entwickelt. Das Plugin lädt die Datei herunter und speichert sie an einem Ort, der während des Tests angegeben wird. Anschließend kann die heruntergeladene Datei in einer CI-Lösung Ihrer Wahl archiviert werden. Bei unserem Kunden haben wir Jenkins verwendet. Also beschlossen wir, die heruntergeladene PDF-Datei mit den Cypress-Testergebnissen zu speichern. Mit dieser Lösung erhielten wir einen einzigen Überblick über alle heruntergeladenen und/oder generierten Dateien. Das half dem Testmanager, wenn er am Ende des Sprints den Beteiligten über das Ergebnis berichten sollte. Er konnte anhand der Jenkins-Ergebnisse leicht feststellen, dass alles "in Ordnung" war.
Derzeit bieten wir keinen PDF-Vergleich an. Wir sind der Meinung, dass andere Tools dafür besser geeignet sind. Schließlich könnte dies auch Teil von Komponententests oder sogar Unit-Tests sein.
Nachdem wir das Plugin zunächst für das Herunterladen von PDF-Dateien eingerichtet hatten, haben wir den Code später allgemeiner gestaltet, damit es für jede Art von Dateidownload funktioniert. Wir haben außerdem beschlossen, das Plugin im Juni 2019 als Open Source zu veröffentlichen. Nachdem wir die Leute von Cypress.io angeschrieben hatten, waren sie so freundlich, unser Plugin in ihre Liste der Plugins auf ihrer Website aufzunehmen(Custom Commands | Cypress Documentation ).
Wir haben einen Anstieg der Popularität dieses Plugins festgestellt. Ursprünglich Ende Juli 2019 gestartet (erster Download am 24. Juli 2019), hat das Plugin seither einen stetigen Anstieg der Anzahl der Downloads verzeichnet. Schauen Sie sich das Plugin ruhig selbst an: Cypress Downloadfile.

Nächste Schritte und Ausblick
Cypress entwickelt sein Produkt ständig weiter, so dass es eine Herausforderung ist, das Plugin für alle zukünftigen Versionen zu pflegen. Wir werden Bugs und Funktionswünsche genau im Auge behalten und versuchen, sie so schnell wie möglich zu lösen.
Dieses Plugin hat sich für alle, die in ihren End-to-End-Tests mit Dateidownloads zu tun haben, als nützlich erwiesen. Wir hoffen, dass es auch Ihnen bei der Testautomatisierung mit Cypress behilflich sein kann!
Wir befähigen Unternehmen, zuverlässige und hochwertige Software zu liefern. Haben Sie Fragen? Wir sind für Sie da! www.qxperts.io
Verfasst von
Xavier Viuda
Unsere Ideen
Weitere Blogs
Contact



