Heute freuen wir uns, Chrome for Testing anzukündigen, eine neue Chrome-Variante, die speziell auf Anwendungsfälle für das Testen und die Automatisierung von Webanwendungen ausgerichtet ist. In diesem Artikel wird erläutert, warum das Chrome-Team diese Variante für erforderlich hielt, und es werden konkrete Beispiele dafür genannt, wie Chrome for Testing Ihnen als Entwickler zugutekommen kann.
Hintergrund
Browser-Tests sind ein wichtiger Bestandteil der Entwicklung hochwertiger Webanwendungen, unabhängig davon, ob sie manuell oder automatisch durchgeführt werden. Gleichzeitig ist die Einrichtung einer geeigneten Browser-Testumgebung bekanntermaßen schwierig, sodass sie immer wieder als eines der größten Probleme für Webentwickler genannt wird. Heute kündigen wir eine Änderung an, die hoffentlich einige dieser Probleme lindert.
Automatische Updates: großartig für Nutzer, schmerzhaft für Entwickler
Eines der bemerkenswertesten Features von Chrome ist die Möglichkeit, automatische Updates durchzuführen. Nutzer freuen sich, dass sie immer eine aktuelle und sichere Browserversion mit modernen Webplattform-Features, Browser-Features und Fehlerkorrekturen verwenden.
Als Entwickler , der eine Reihe von End-to-End-Tests durchführt, haben Sie jedoch möglicherweise eine ganz andere Perspektive:
- Sie möchten konsistente, reproduzierbare Ergebnisse bei wiederholten Testläufen. Das ist jedoch möglicherweise nicht der Fall, wenn die ausführbare Datei oder das Binärprogramm des Browsers zwischen zwei Läufen aktualisiert wird.
- Sie möchten eine bestimmte Browserversion festlegen und diese Versionsnummer in Ihr Quellcode-Repository einchecken, damit Sie alte Commits und Branches auschecken und die Tests mit dem Browser-Binärprogramm von diesem Zeitpunkt an noch einmal ausführen können.
Mit einem automatisch aktualisierten Browser-Binärprogramm ist das alles nicht möglich. Daher sollten Sie Ihre reguläre Chrome-Installation möglicherweise nicht für automatisierte Tests verwenden. Das ist der grundlegende Unterschied zwischen dem, was für normale Browsernutzer gut ist, und dem, was für Entwickler gut ist, die automatisierte Tests durchführen.
Versionierte Browser-Binärprogramme
Abgesehen von automatischen Updates war es möglicherweise auch schwierig, ein Chrome-Binärprogramm mit einer bestimmten Version zu finden. Google stellt absichtlich keine versionierten Chrome-Downloads zur Verfügung, da sich Nutzer nicht um Versionsnummern kümmern müssen. Sie sollten immer so schnell wie möglich auf die neueste Version aktualisiert werden. Das ist großartig für Nutzer, aber schmerzhaft für Entwickler, die einen Fehlerbericht in einer älteren Chrome-Version reproduzieren müssen.
Ein konkreteres Beispiel für dieses Problem ist, wenn Sie ChromeDriver für die Browserautomatisierung verwenden möchten. Sie müssen nicht nur irgendwie ein Chrome-Binärprogramm herunterladen, sondern auch ein entsprechend versioniertes ChromeDriver-Binärprogramm, um sicherzustellen, dass die beiden Binärprogramme kompatibel sind.
Da es keine gute Möglichkeit gibt, diese Probleme zu lösen, laden viele Entwickler stattdessen Chromium-Binärprogramme (nicht Chrome) herunter, obwohl dieser Ansatz einige Mängel aufweist. Erstens sind diese Chromium-Binärprogramme nicht zuverlässig auf allen Plattformen verfügbar. Zweitens werden sie unabhängig vom Chrome-Releaseprozess erstellt und veröffentlicht, sodass ihre Versionen nicht den Chrome-Releases für Nutzer zugeordnet werden können. Drittens unterscheidet sich Chromium von Chrome.
Die Lösung: Chrome for Testing
Chrome for Testing wurde entwickelt, um diese Probleme zu lösen. Es ist eine spezielle Chrome-Variante für den Testanwendungsfall, ohne automatische Updates, in den Chrome-Releaseprozess integriert und für jedes Chrome-Release verfügbar. Ein versioniertes Binärprogramm, das so nah wie möglich an Chrome ist, ohne den Testanwendungsfall negativ zu beeinflussen.
Um Chrome for Testing zu erstellen, haben wir Änderungen an den Chromium- und Chrome-Codebasen vorgenommen und eine Infrastruktur eingerichtet, um diese Binärprogramme parallel zum Chrome-Releaseprozess in allen Versionen (Stabil, Beta, Entwickler und Canary) zu erstellen und in einen öffentlich zugänglichen Bucket hochzuladen.
Die Infrastruktur rund um Chrome for Testing bietet interessante Möglichkeiten, die über Chrome hinausgehen. So können beispielsweise die zuvor erwähnten Schwierigkeiten beim Finden eines passenden Chrome- und ChromeDriver-Binärprogramms vollständig beseitigt werden, indem der ChromeDriver-Releaseprozess in die Chrome for Testing-Infrastruktur integriert wird. Dadurch wird nicht nur dieses Problem für Nutzer gelöst, sondern auch die ChromeDriver-Releases an Chrome angepasst und der manuelle ChromeDriver-Releaseprozess überflüssig.
Wie erhalte ich Chrome for Testing-Binärprogramme?
Die einfachste Möglichkeit, Chrome for Testing-Binärprogramme für Ihre Plattform herunterzuladen, ist die Verwendung von unserem @puppeteer/browsers Befehlszeilenprogramm, das über npm verfügbar ist. Hier einige Beispiele:
# Download the latest available Chrome for Testing binary corresponding to the Stable channel.
npx @puppeteer/browsers install chrome@stable
# Download a specific Chrome for Testing version.
npx @puppeteer/browsers install chrome@116.0.5793.0
# Download the latest available ChromeDriver version corresponding to the Canary channel.
npx @puppeteer/browsers install chromedriver@canary
# Download a specific ChromeDriver version.
npx @puppeteer/browsers install chromedriver@116.0.5793.0
Wenn Sie lieber eigene automatisierte Skripts zum Herunterladen dieser Binärprogramme erstellen möchten, sind Sie bei uns genau richtig. Wir bieten JSON-API-Endpunkte mit den neuesten verfügbaren Versionen pro Chrome-Releaseversion (Stabil, Beta, Entwickler, Canary). Eine schnelle Übersicht über den aktuellen Status finden Sie in der Chrome for Testing-Dashboard zur Verfügbarkeit.