Zum Inhalt springen

Suchen...

Cypress, Playwright oder WebdriverIO

Playwright oder Cypress für Komponenten- und End-to-End-Tests? Welches Tool heute die Nase vorn hat und wann ein Wechsel wirklich lohnt.

7 Min. Lesezeit
Cover für Cypress, Playwright oder WebdriverIO

Frontend-Testautomatisierung umfasst heute drei etablierte Werkzeuge: Cypress, Playwright und Webdriver I/O. Playwright hat dabei die Nase vorn, weil es die gesamte Testpyramide abdeckt, von Komponententests bis zu End-to-End-Tests, ohne die technischen Einschränkungen von Cypress bei Multi-Tab-Anwendungen und Cross-Domain-Tests.

Das Wichtigste in Kürze

  • Playwright hat Cypress bei den End-to-End-Tests in einem zentralen Punkt überholt: Multi-Tab-Anwendungen und Cross-Domain-Tests sind in Cypress technologisch nicht lösbar, weil das Tool im Browser-Fenster gefangen bleibt.
  • Komponententests im Frontend funktionieren wie Unit-Tests im Backend: Sie prüfen isoliert Validierungen, Events und Netzwerk-Requests einer einzelnen UI-Komponente, bevor kostspielige End-to-End-Tests nötig werden.
  • Playwright nutzt das Chrome-DevTools-Protokoll für Fehleranalyse und erlaubt damit direktes Nachvollziehen von Netzwerkverkehr, Tracing und Testschritten, inklusive Sprung zur Fehlerstelle im Code.
  • Wer ein laufendes Cypress-Projekt nicht migrieren will, kann neue Features mit Playwright abdecken und beide Suiten parallel betreiben, weil beide auf TypeScript basieren und sich die Syntax ähnelt.
  • Bei der Tool-Wahl im Frontend zählt auch, wer dahintersteht: Playwright wird von Microsoft aktiv gefördert, Cypress hat ein kommerzielles Produkt, während Webdriver I/O ohne vergleichbare Ressourcen sichtbar zurückbleibt.

Frontend-Tests brauchen die ganze Testpyramide, nicht nur End-to-End

Eine Frontend-Teststrategie deckt zwei Ebenen ab: End-to-End-Tests über das Gesamtsystem und Komponententests auf der Ebene einzelner UI-Bausteine. Beide gehören zusammen, auch wenn sie unterschiedliche Werkzeuge und Denkweisen verlangen.

Ein End-to-End-Test prüft einen Use Case vom Anfang bis zum Ende und integriert dabei alles: Frontend, Backend, Datenbank. Er simuliert einen echten Endbenutzer. Dafür braucht es ein Tool, das den Browser automatisieren kann, weil sich dieser Durchlauf sonst nicht abbilden lässt.

Komponententests sind das Frontend-Pendant zum klassischen Unit-Test. Die Unit ist hier keine Funktion im Backend, sondern eine Komponente: ein Button, ein Eingabefeld oder eine ganze Maske. Auf dieser Ebene lassen sich Validierungen prüfen, ausgelöste Events kontrollieren und Netzwerk-Requests verifizieren, lange bevor ein End-to-End-Test nötig wird.

Der Sinn dahinter ist der gleiche wie im Backend: alle Varianten, Alternativen und Fehlerbehandlungen möglichst weit unten in der Pyramide abdecken. Was der Komponententest erledigt, muss der teure End-to-End-Test nicht mehr leisten.

Wie Komponententests technisch funktionieren

Komponententests laufen über ein Testbett, das pro Frontend-Technologie passend sein muss. Für eine React-Komponente braucht es ein React-Testbett, das das jeweilige Framework bereitstellt.

Die Komponente wird in dieses Testbett integriert, also gemountet. Danach greift dieselbe Mechanik, die auch beim End-to-End-Test arbeitet. Genau deshalb sind es vor allem die etablierten End-to-End-Tools, die inzwischen auch Komponententests beherrschen.

Der Weg verläuft offenbar nur in eine Richtung gut: Von der End-to-End-Ebene zur Komponentenebene zu kommen ist einfacher als umgekehrt. Cypress war lange das einzige Tool, das diesen kompletten Stack abgebildet hat. Playwright zog beim Component-Testing nach, später folgte auch WebdriverIO.

Warum Playwright Cypress inzwischen überholt

Playwright deckt dieselbe Testpyramide ab wie Cypress, ohne dessen technische Limitierungen. Das macht es für neue Projekte zur naheliegenden Wahl.

Cypress ist durch seine Architektur auf ein einzelnes Browser-Fenster festgelegt. Multi-Tab-Anwendungen und Cross-Domain-Tests sind dadurch schwierig bis unmöglich, weil die Tests faktisch in einem iframe gefangen sind. Playwright hat diese Einschränkung nicht und bildet solche Szenarien deutlich leichter ab.

Playwright ist außerdem nicht auf TypeScript und JavaScript beschränkt, sondern unterstützt weitere Sprachen und lässt sich leichter in andere Test-Tools integrieren. Cypress bleibt sehr entwicklungsnah, aber eben enger gefasst.

Bei der Fehleranalyse setzt Playwright das fort, was Cypress mit seinem Daumenkino bekannt gemacht hat: das Nachvollziehen über die Zeit, was in der Anwendung passiert ist. Playwright nutzt dafür das Chrome-DevTools-Protokoll, inklusive Tracing und Netzwerkverkehr. Für Entwickler ist das vertraut, und aus Visual Studio Code lässt sich direkt zur betreffenden Stelle im Test springen. Das geht bei Cypress nicht.

Die Auswahlkriterien für ein Frontend-Test-Tool

Bei der Bewertung eines Test-Tools entscheidet weniger das einzelne Feature als die Frage, welche Zielgruppen und Szenarien es bedienen muss. Vier Kriterien tragen die Entscheidung.

  • Bedienbarkeit und Nähe zur Entwicklung: End-to-End-Tests entstehen oft in der Testabteilung, Komponententests in der Entwicklung. Das Werkzeug muss flexibel genug für beide Gruppen sein.
  • Mocking-Fähigkeiten: Auf Komponentenebene zählt, wie gut sich Netzwerkverkehr und Event-Handling simulieren lassen.
  • Fehleranalyse: Wie schnell findest du die Ursache eines Testfehlers, also die problematische Stelle in der Anwendung?
  • Szenario-Abdeckung: Multi-Tab- und Cross-Domain-Tests trennen die Tools spürbar voneinander.

WebdriverIO schneidet in diesem Vergleich deutlich schwächer ab. Der wahrscheinliche Grund ist wirtschaftlicher Natur: Hinter Playwright steht Microsoft mit Interesse an der Integration in die eigene Werkzeuglandschaft, etwa Visual Studio Code. Cypress hat ein kommerzielles Produkt im Rücken. WebdriverIO ist Open Source ohne vergleichbar große Player, und das bremst die Entwicklungsgeschwindigkeit sichtbar.

Für neue Projekte ist Playwright die erste Wahl

Wer heute ein neues Projekt startet, sollte direkt zu Playwright greifen. Cypress käme dafür kaum noch in Frage.

Cypress hat im Detail Stärken. Der Roundtrip wirkt subjektiv einen Tick schneller. Dafür erlaubt Playwright das gezielte Ausführen einzelner Tests, einzelner Testdateien oder mehrerer ausgewählter Tests, während Cypress immer eine ganze Testdatei abarbeitet.

Eine offene Frage bleibt der Angular-Support für Komponententests in Playwright. Ein Merge-Request dazu hängt seit längerem mit einem langen Thread fest. Bei der Geschwindigkeit der Entwicklung kann das Thema aber bald erledigt sein.

Wenn ich heute nochmal anfangen würde mit einem Projekt, dann würde ich sofort auf Playwright gehen. Ich würde gar nicht mehr Cypress nehmen. Dehla Sokenou

Wann sich der Umstieg lohnt und wann nicht

Ein bestehendes Test-Suite migriert man nicht aus Prinzip, sondern nach einer Kosten-Nutzen-Rechnung. Brauchst du die Stärken von Playwright im laufenden Projekt nicht, gibt es keinen zwingenden Grund zu wechseln.

Ein Projekt mit hunderten Cypress-Tests, das keine Multi-Tab-Szenarien benötigt und ohnehin irgendwann ausläuft, bleibt sinnvollerweise auf Cypress. Bei einem langlebigen Produkt sieht die Rechnung anders aus, weil sich die Investition über die längere Lebensdauer eher trägt. Neue Projekte beginnst du direkt mit Playwright.

Eine technische Einschränkung bleibt aber im Blick: Cypress wird seine Limitierung nicht überwinden, solange sich die Architektur nicht grundlegend ändert. Das eine Browser-Fenster und die Probleme beim Cross-Domain-Testing sind strukturell, nicht eine Frage einzelner Releases.

Migration nach dem Pathfinder-Prinzip statt Big Bang

Ein paralleler Betrieb zweier Frameworks ist ein gangbarer Weg, kein Problemfall. Die Migration läuft schrittweise statt als großer Umbau.

Das Pathfinder-Prinzip funktioniert so: Immer wenn du einen Test ohnehin anfassen musst, entscheidest du, ob du ihn jetzt überträgst oder im alten Tool belässt. So wandert der Bestand nach und nach, ohne dass jemand einen kompletten Stillstand für eine große Migration einplanen muss.

Manche Bereiche bleiben dabei dauerhaft im alten Tool, und das ist in Ordnung. Komponenten-Bibliotheken mit konsolidierten Bausteinen wie Button, Liste oder Tabelle werden selten angefasst. Wo niemand vorbeikommt, gibt es auch keinen Migrationsbedarf. Wichtig ist nur, dass bekannt bleibt, dass diese alten Tests existieren.

Der Wechsel fällt leicht, weil beide Tools entwicklungsnah sind. Tests sind ohnehin oft in TypeScript geschrieben, analog zur Anwendung. Syntax und Semantik unterscheiden sich, das Prinzip bleibt ähnlich. Lagerst du wiederkehrende Teile wie das Mounten einer Komponente in Fixtures aus, gleichen sich die Tests zusätzlich an.

Zum Ausprobieren bietet sich der Einstieg über die End-to-End-Tests an. Nach der Testpyramide gibt es davon an der Spitze ohnehin weniger als Komponententests an der Basis, das Umschreiben ist also überschaubar. Ein Teil davon lässt sich sogar automatisieren, weil viele Konstrukte einfach von einer Syntax in die andere übertragen werden.

Wann du den Markt beobachten solltest

Beobachte den Markt vor allem dann, wenn du ein neues Projekt startest. Das ist der natürliche Moment, um zu prüfen, was an deinem aktuellen Stand noch State of the Art ist und was veraltet.

Nicht jeder neue Zug ist es wert, aufgesprungen zu werden. Gerade im Frontend kommen und gehen Technologien schnell. Tools, die nur von einem einzelnen Open-Source-Entwickler gepflegt werden, landen schnell in der Sackgasse, sobald dieser keine Zeit mehr hat. Was sich kurz toll anfühlt, hilft dir nichts, wenn die Weiterentwicklung stoppt.

Die bessere Faustregel: Setze auf etablierte Technologien, besonders bei langlebigen Projekten, aber prüfe regelmäßig, ob du noch am Puls der Zeit bist. Erkennst du eine Sackgasse, reagiere lieber früh, auch wenn der Umbau erst Aufwand kostet. In der Sackgasse zu verharren ist teurer.

Bemerkenswert robust ist dabei die Kompatibilität der Test-Frameworks selbst. Cypress hatte vor einigen Jahren einen größeren Bruch, der ein Refactoring erzwang, läuft seither aber stabil. Bei Playwright wird Kompatibilität ebenfalls großgeschrieben. Der Schmerz kommt heute eher vom Frontend: Ein Update auf eine neue Angular- oder React-Version ist meist aufwändiger als das Update des Test-Frameworks.

Diese Seite teilen

Ähnliche Beiträge