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 Web-Apps ausgerichtet ist. In diesem Artikel wird erläutert, warum das Chrome-Team der Meinung war, dass dies erforderlich ist, und es werden konkrete Beispiele dafür gegeben, wie Chrome for Testing Ihnen als Entwickler zugutekommen kann.
Hintergrund
Browser-Tests sind ein wichtiger Bestandteil der Entwicklung hochwertiger Weboberflächen, unabhängig davon, ob sie manuell oder automatisch durchgeführt werden. Gleichzeitig ist es notorisch schwierig, eine geeignete Browser-Testumgebung einzurichten. Das wird immer wieder als einer der größten Schmerzpunkte für Webentwickler genannt. Heute geben wir eine Änderung bekannt, die hoffentlich einige dieser Probleme beseitigt.
Automatische Updates: gut für Nutzer, schlecht für Entwickler
Eine der wichtigsten Funktionen von Chrome ist die Möglichkeit, automatische Updates durchzuführen. Nutzer freuen sich, dass sie immer eine aktuelle und sichere Browserversion mit modernen Webplattformfunktionen, Browserfunktionen und Fehlerkorrekturen verwenden.
Als Entwickler, der eine Reihe von End-to-End-Tests ausfü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 Browser-Executable oder das Browser-Binärprogramm sich zwischen zwei Läufen selbst aktualisiert.
- Sie möchten eine bestimmte Browserversion anpinnen und die Versionsnummer in Ihr Quellcode-Repository einchecken, damit Sie alte Commits und Branches auschecken und die Tests mit der Browser-Binärdatei aus diesem Zeitpunkt noch einmal ausführen können.
Mit einer automatisch aktualisierten Browser-Binärdatei 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, die automatisierte Tests durchführen, gut ist.
Versionierte Browser-Binärprogramme
Abgesehen von automatischen Updates war es möglicherweise auch schwierig, eine Chrome-Binärdatei mit einer bestimmten Version zu finden. Google stellt absichtlich keine Chrome-Downloads mit Versionsnummern zur Verfügung, da Nutzer sich nicht um Versionsnummern kümmern müssen. Sie sollten immer so schnell wie möglich auf die neueste Version aktualisiert werden. Das ist zwar gut für Nutzer, aber schlecht 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 ein Chrome-Binärprogramm herunterladen, sondern auch ein entsprechendes ChromeDriver-Binärprogramm, damit die beiden Binärprogramme kompatibel sind.
Da es keine gute Möglichkeit gibt, diese Probleme zu lösen, laden viele Entwickler stattdessen Chromium-Binärdateien (nicht Chrome) herunter. Dieser Ansatz hat jedoch einige Nachteile. Erstens sind diese Chromium-Binärdateien nicht auf allen Plattformen zuverlässig verfügbar. Zweitens werden sie unabhängig vom Chrome-Releaseprozess erstellt und veröffentlicht. Daher ist es unmöglich, ihre Versionen den Chrome-Releases zuzuordnen, die Nutzer tatsächlich verwenden. 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 Anwendungsfall von Tests, ohne automatische Updates, die in den Chrome-Releaseprozess integriert ist und für jeden Chrome-Release verfügbar ist. Ein versioniertes Binärprogramm, das so nah wie möglich an der regulären Chrome-Version ist, ohne den Anwendungsfall für Tests negativ zu beeinflussen.
Für Chrome zum Testen haben wir Änderungen an den Chromium- und Chrome-Codebases vorgenommen und eine Infrastruktur eingerichtet, um diese Binärdateien parallel zum Chrome-Releaseprozess in allen Versionen (Stabil, Beta, Entwickler und Canary) zu erstellen und in einen öffentlich verfügbaren Bucket hochzuladen.
Die Infrastruktur rund um Chrome for Testing bietet interessante Möglichkeiten, die über Chrome hinausgehen. Die zuvor erwähnten Schwierigkeiten, ein passendes Binärprogramm für Chrome und ChromeDriver zu finden, können beispielsweise durch die Integration des ChromeDriver-Releaseprozesses in die Chrome for Testing-Infrastruktur vollständig beseitigt werden. Dadurch wird nicht nur dieses Problem für Nutzer behoben, sondern auch die ChromeDriver-Releases werden an die Chrome-Releases angepasst und der manuelle ChromeDriver-Releaseprozess entfällt.
Wo erhalte ich Binärdateien für Chrome for Testing?
Die einfachste Möglichkeit, Binärdateien von Chrome for Testing für Ihre Plattform herunterzuladen, ist die Verwendung unseres @puppeteer/browsers-Befehlszeilentools, 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ärdateien erstellen möchten, haben wir das Richtige für Sie. Wir bieten JSON API-Endpunkte mit den neuesten verfügbaren Versionen für jede Chrome-Release-Version (Stabil, Beta, Entwickler, Canary). Einen schnellen Überblick über den aktuellen Status finden Sie im Verfügbarkeits-Dashboard für Chrome for Testing.