Image
Playwright

Überblick zum begehrten Testautomatisierungs Tool Playwright - Open Source End-To-End Tests

🕒 Lesedauer: 4 Minuten

Im Bereich der Open-Source End-To-End Test-Frameworks gesellt sich seit Kurzem ein neuer Player hinzu, nämlich Playwright. Wer mit Playwright loslegen will, braucht lediglich das Node.js Paket zu installieren, das alle nötigen Erweiterungen beinhaltet. Es beinhaltet auch alle nötigen Browser-Treiber, sodass nicht wie in Selenium jeder einzelne Browser-Treiber von Hand installiert werden muss.

Da es sich bei Playwright um ein UI-basiertes Automatisierungstool für Webanwendungen handelt, lassen sich Aktionen wie beispielsweise das Anlicken von Schaltflächen oder Ausfüllen von Textfeldern ganz bequem automatisieren. Zu den unterstützten Programmiersprachen zählen Java, Python, .NET C#, TypeScript und JavaScript. Unter den Browsern werden Firefox, Chromium und Webkit unterstützt auf sowohl Windows, Linux und Mac OS.

Warum Testautomatisierung?

Testautomatisierung kann zur Simulierung des Benutzerverhaltens verwendet und eingesetzt werden. Dabei wird getestet, ob auch Applikationen das gewünschte Verhalten aufweisen. Testautomatisierung sorgt in allererster Linie für bessere Software-Qualität, da Tests wesentlich schneller und effizienter durchgeführt werden können. Fehler, die beim stetigen manuellen Testen durch den Faktor Mensch auftreten können, können dadurch enorm reduziert werden. Auch können Entwicklerkapazitäten für wichtigere Aufgaben eingesetzt werden statt sich auf das repetitive Testen zu konzentrieren.

Die wichtigen Aspekte der Testautomatisierung

  • Geschwindigkeit, Effizienz und Skalierbarkeit: Da in der Regel die Verarbeitungszeit vom Computer viel schneller als die vom Menschen ist, werden auch die Tests entsprechend innerhalb von Sekunden ausgeführt. Das spart zum einen Zeit und kann auch nach Belieben parallel skaliert werden.
  • Reduzieren von Fehlern: Da Menschen nicht stetig produktiv arbeiten können, können insbesondere beim manuellen Testen Fehler auftreten. Weil automatisierte Tests davon in der Regel nicht betroffen sind, lassen sich so viele Fehlerherde eindämmen, womit auch eine zusätzliche Konsistenz und Zuverlässigkeit einhergeht.
  • Schnelleres Auffinden von Bugs: Je früher mit der Testautomatisierung in einem Projekt begonnen wird, desto früher können unerwünschte Bugs gefunden und rechtzeitig behoben werden, was die Effizienz innerhalb des Teams steigert.
  • Schnellerer Entwicklungszyklus: Automatisierte Tests können personenunabhängig zu jeder Zeit wiederholt ausgeführt werden und somit den Entwicklungsprozess beschleunigen.

Geschichte von Playwright und Selenium

Selenium

Mit einem Alter von fast 20 Jahren ist Selenium im Gegensatz zu Playwright eindeutig das ältere Gegenstück. Dieses entwickelte Jason Huggins im Jahre 2004 im Rahmen eines internen Projekts in seiner Firma ThoughtWorks, das als primäres Ziel das Testen von Webseiten verfolgte. Im Laufe der Zeit schlossen sich immer mehr Mitarbeiter dem Projekt an, inklusive Paul Hammant, der auch als Initiator die Entwicklung von Selenium Remote Control vorantrieb.

Im Jahre 2007 wechselte Huggins dann zu Google und führte dort weitere Verbesserungen an Selenium fort, während zur selben Zeit Simon Stewart parallel in ThoughtWorks die Browsersteuerung Webdriver entwickelte. Beide erkannten aber schnell, dass zwei getrennte Projekte am selben Entwicklungsobjekt wenig Sinn machen würden, weshalb beide dann zum Selenium Webdriver – auch Selenium 2.0 genannt – vereint wurden. Der Sprung auf Selenium 3.0 erfolgte dann am 13. Oktober 2016, das bis heute verwendet wird.

Playwright

Wesentlich kürzer auf dem Markt ist Playwright, das am 31. Januar 2020 von Microsoft veröffentlicht wurde. Die Köpfe, die hinter dessen Entwicklung steckten, waren auch diejenigen, die an der Entwicklung von Googles Puppeteer mitwirkten. Wie auch Selenium verfolgt Playwright das Testen von Webseiten. Trotz seines jungen Alters erfreut sich das Testing-Tool stetiger Beliebtheit, was sich auch aus den Zahlen sowie aus dem darauffolgenden Diagramm ersehen lässt. Zu erwähnen wäre, dass es sich hier um die JavaScript-Versionen handelt.

Download-Zahlen Trend von Selenium und Playwright (JavaScript-Version)

 

Image
selenium-playwright-downloadzahlen-weekly-downloads-29-11-2023.png

Bild: Die wöchentlichen Downloads von Selenium und Playwright - Stand: 29.11.2023 [Quelle: GitHub]

 

Vor- und Nachteile von Playwright zu Selenium

Playwright

  • Auto-Waits: Wartet automatisch, bis auch die Elemente verfügbar und für Interaktionen bereit sind
  • Vorhandensein eines Trace Viewers, der es erlaubt, verfolgen zu können, wo Playwright beim Test exakt ausgestiegen ist und welche Aktionen ausgeführt wurden. Zudem gibt es die Möglichkeit einer Videoaufnahme, sodass auch die durchgeführten Tests von überall her erneut abgespielt werden können
  • API-Anbindung: Playwright kann auch auf API-Schnittstellen zugreifen, was zu sehr viel schnelleren und stabileren Tests führt. Zudem können Requests abgefangen und nach Belieben manipuliert werden, um schwer zu erreichende Zustände im Frontend zuverlässig zu erzeugen.
  • Mit etwas Aufwand ist die Anbindung an Test-Management Tools möglich
  • Da Playwright noch relativ neu auf dem Markt ist, hat es entspechend eine kleinere Community als Selenium

Selenium

  • Keine Auto-Waits: Es muss manuell angegeben werden, wo man warten will, bis die Elemente verfügbar sind, was aufwändiger zu implementieren ist
  • Kein Trace Viewer und keine Videoaufnahme vorhanden
  • Keine API-Anbindung vorhanden
  • Mit etwas Aufwand ist die Anbindung an Test-Management Tools möglich
  • Da Selenium wesentlich länger im Geschäft ist, ist es auch entsprechend weiter verbreitet

CI-CD

Aufgrund der umfassenden Dokumentation von Playwright ist eine bequeme Integration dessen in Azure DevOps und Jenkins möglich, um effektiv seine Tests durch die vorhergesehenen Pipelines laufen zu lassen. Falls ein Test in der Pipeline fehlschlagen sollte, wird auch innerhalb dessen angezeigt, warum dieser fehlgeschlagen ist:

 Running 124 tests using 6 workers
 [24/124] [regression] › name-overview/name-list/names/testcase.spec.ts:12:34 › 123456 Verify name › Max Mustermann
 3) [regression] › name-overview/name-list/names/testcase.spec.ts:12:3 › 123456 Detect invalid names › Tim Mustermann 
 
 Error: expect(received).toBe(expected) // Object.is equality
 
 Expected: "the name does not exist"
 Received: null
 
 20 | await addName.clickNext(true);
 21 | const nameError = await addName.getNameError();
 > 22 | expect(nameError).toBe(nameError.Undefined);
 | ^
 23 | });
 

Wer hingegen einen weiteren Performance-Boost benötigt, für den bietet Playwright den kostenpflichtigen Microsoft Playwright Testing Service an, der es erlaubt, via Cloud die Parallelinstanzen auf das Mehrfache zu skalieren, womit der Durchlauf von Tests in der Pipeline um das Vielfache beschleunigt werden kann. Das nächste Bild zeigt einen Testdurchlauf von Playwright mit rund 3000 Tests verteilt auf 50 Parallelinstanzen, die innerhalb von nur 32 Sekunden abgearbeitet werden:


 

 

Image
demo-testdurchlauf-von-playwright-mit-rund-3000-tests-und-50-instanzen (1).png

Bild: Demo Testdurchlauf von Playwright mit rund 3000 Tests und 50 Instanzen [Quelle: Playwright]

 

Trace Viewer

Wie schon vorher erwähnt, ist einer der größten Vorzüge von Playwright der Trace Viewer, der das Auffinden von Problemen ungemein erleichtert. Das folgende Bild gibt einen kurzen Einblick dazu:


 

Image
trace-viewer-playwright.png

Bild: Der Trace Viewer von Playwright [Quelle: Playwright]

 

Fazit

Als Newcomer im Bereich der Testautomatisierung bietet Playwright eine Bandbreite von Features, die Selenium leider missen lässt. Darunter sind insbesondere der Trace Viewer, die API-Anbindung sowie die Auto-Waits, die zum einen ein einfacheres Debugging ermöglichen, zum anderen für stabilere und performantere Tests sorgen.

Auch wenn Selenium auf dem Markt noch weit verbreitet ist, zeigen die wöchentlichen Downloads, dass sich langsam ein Abwärtstrend erkennen lässt, wohingegen Playwright immer mehr an Bedeutung gewinnt. Das hat auch unter anderem damit zu tun, dass Playwright die Defizite von Selenium erkannt und entsprechend optimiert bzw. ausgebaut hat. Für zukunftsorientiertes Automatisieren ist daher Playwright zu empfehlen. Wer hingegen auf ein aktuell weit verbreitetes Testing-Tool mit etablierter Community setzt, der sollte einen Blick auf Selenium werfen.

Link-Verzeichnis

 

Veröffentlicht am 20.Dezember 2023

Aktualisiert am 17.April 2024

Valerius Schmidt

Junior Testautomation Engineer, Test Analyst

Ursprünglich als Sprachwissenschaftler für die antike sowie mittel und neuzeitliche Welt, war ich während und nach meiner aufbauenden Ausbildung zum Fachinformatiker für Anwendungsentwicklung in diversen Projekten in den Unternehmen wie der Trout GmbH und der fino digital GmbH involviert. Themenschwerpunkte waren dort zum einen die Softwareentwicklung, die Datenqualität sowie das Testen von Software und der Automatisierung. Seit August 2023 bin ich als Junior Testautomation Engineer und Test Analyst bei der Qytera GmbH tätig, wo mein Fokus aktuell auf dem Testen mit dem Automatisierungswerkzeug Playwright liegt.

Finden Sie weitere interessante Artikel zum Thema: