Chrome for Testing: zuverlässige Downloads für die Browserautomatisierung

Mathias Bynens
Mathias Bynens

Wir freuen uns, heute Chrome for Testing vorzustellen, eine neue Chrome-Variante, die speziell auf das Testen und die Automatisierung von Webanwendungen ausgerichtet ist. In diesem Artikel wird erläutert, warum das Chrome-Team dies für nötig hielt. Außerdem finden Sie konkrete Beispiele, in denen Chrome for Testing Sie als Entwickler nutzen könnte.

Hintergrund

Browsertests sind eine wichtige Komponente zur Schaffung eines qualitativ hochwertigen Weberlebnisses, unabhängig davon, ob sie manuell oder automatisch durchgeführt werden. Gleichzeitig ist das Einrichten einer geeigneten Browser-Testumgebung bekanntlich schwierig, sodass diese einheitlich als die größten Probleme von Webentwicklern gemeldet wird. Heute geben wir eine Änderung bekannt, die hoffentlich einige dieser Probleme lindert.

Automatische Updates: hervorragend für Nutzer, lästig für Entwickler

Eine der wichtigsten Funktionen von Chrome sind automatische Updates. Die Nutzer freuen sich, dass sie eine aktuelle und sichere Browserversion mit modernen Webplattform-Funktionen, Browserfunktionen und Fehlerkorrekturen verwenden.

Wenn Sie als Entwickler eine Reihe von End-to-End-Tests ausführen, haben Sie jedoch möglicherweise eine ganz andere Perspektive:

  • Sie möchten konsistente, reproduzierbare Ergebnisse über wiederholte Testläufe hinweg. Dies geschieht jedoch möglicherweise nicht, wenn die ausführbare oder binäre Datei des Browsers zwischen zwei Testläufen aktualisiert wird.
  • Sie möchten eine bestimmte Browserversion anpinnen und diese Versionsnummer in Ihrem Quellcode-Repository prüfen, damit Sie alte Commits und Zweige abrufen und die Tests für die Browser-Binärdatei ab diesem Zeitpunkt noch einmal ausführen können.

Mit einem Browser-Binärprogramm, das automatisch aktualisiert wird, ist dies nicht möglich. Daher sollten Sie Ihre reguläre Chrome-Installation nicht für automatisierte Tests verwenden. Dies ist die grundlegende Diskrepanz zwischen dem, was für normale Browsernutzer wert ist, und dem, was für Entwickler bei automatischen Tests nützlich ist.

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 die Nutzer sich keine Gedanken über Versionsnummern machen müssen. Sie sollten immer so schnell wie möglich auf die neueste Version aktualisieren. Das ist zwar toll für Nutzer, aber ärgerlich für Entwickler, die einen Fehlerbericht in einer älteren Chrome-Version reproduzieren müssen.

Ein konkreteres Beispiel für dieses Problem ist die Verwendung von ChromeDriver für die Browserautomatisierung. Sie müssen nicht nur 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 zur Lösung dieser Probleme gibt, wissen wir, dass viele Entwickler stattdessen Chromium-Binärprogramme (nicht Chrome) herunterladen. Dieser Ansatz hat jedoch einige Schwächen. Erstens sind diese Chromium-Binärprogramme nicht zuverlässig auf allen Plattformen verfügbar. Zweitens werden sie getrennt vom Chrome-Release-Prozess erstellt und veröffentlicht, sodass es unmöglich ist, ihre Versionen echten, für Nutzer sichtbaren Versionen zuzuordnen. Drittens unterscheidet sich Chromium von Chrome.

Die Lösung: Chrome for Testing

Chrome for Testing wurde entwickelt, um diese Probleme zu lösen, und ist eine spezielle Chrome-Variante, die auf den Testanwendungsfall ausgerichtet ist. Es gibt keine automatischen Updates, die in den Chrome-Release-Prozess eingebunden sind und für jede Chrome-Version verfügbar sind. Eine versionierte Binärdatei, die der regulären Chrome-Version so nahe wie möglich kommt, ohne den Testanwendungsfall zu beeinträchtigen.

Bei der Entwicklung von Chrome for Testing haben wir Änderungen an der Chromium- und Chrome-Codebasis vorgenommen und eine Infrastruktur eingerichtet, um diese Binärprogramme zu erstellen und in einen öffentlich zugänglichen Bucket hochzuladen. Dabei wird der Chrome-Veröffentlichungsprozess auf allen Kanälen (Stable, Beta, Entwickler und Canary) berücksichtigt.

Die Infrastruktur rund um Chrome for Testing eröffnet interessante Möglichkeiten, die über Chrome selbst hinausgehen. Die bereits erwähnten Schwierigkeiten bei der Suche nach einem passenden Binärprogramm für Chrome und ChromeDriver können beispielsweise vollständig beseitigt werden, indem der ChromeDriver-Release-Prozess in die Chrome for Testing-Infrastruktur integriert wird. Dadurch wird nicht nur dieses nutzerseitige Problem gelöst, sondern es wird auch die Version von ChromeDriver an die Chrome-Releases angeglichen, sodass der manuelle ChromeDriver-Release-Prozess entfällt.

Wie erhalte ich Chrome for Testing-Binärprogramme?

Am einfachsten können Sie Chrome for Testing-Binärprogramme für Ihre Plattform mit unserem @puppeteer/browsers-Befehlszeilendienst herunterladen, das über npm verfügbar ist. Hier sind 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 Ihre eigenen automatisierten Skripts zum Herunterladen dieser Binärprogramme erstellen möchten, können wir Ihnen helfen. Wir bieten JSON API-Endpunkte mit den jeweils neuesten verfügbaren Versionen der einzelnen Chrome-Release-Versionen (Stable, Beta, Dev, Canary) an. Einen schnellen Überblick über den aktuellen Status erhalten Sie im Chrome for Testing-Dashboard.