Chrome for Testing: betrouwbare downloads voor browserautomatisering

Mathias Bynens
Mathias Bynens

Vandaag kondigen we met genoegen Chrome for Testing aan, een nieuwe Chrome-variant die specifiek gericht is op het testen van web-apps en gebruiksscenario's voor automatisering. In dit artikel wordt uitgelegd waarom het Chrome-team vond dat dit nodig was, en worden concrete voorbeelden gegeven waarbij Chrome for Testing nuttig voor u als ontwikkelaar kan zijn.

Achtergrond

Browsertests zijn een essentieel onderdeel van het creëren van een hoogwaardige webervaring, ongeacht of dit handmatig of automatisch wordt gedaan. Tegelijkertijd is het opzetten van een adequate browsertestomgeving notoir moeilijk, zo erg zelfs dat het consequent wordt gerapporteerd als een pijnpunt voor topwebontwikkelaars. Vandaag kondigen we een verandering aan die hopelijk een deel van deze pijn zal verzachten.

Automatische update: geweldig voor gebruikers, pijnlijk voor ontwikkelaars

Een van de meest opvallende kenmerken van Chrome is de mogelijkheid om automatisch te updaten. Gebruikers zijn blij te weten dat ze te allen tijde een up-to-date en veilige browserversie gebruiken, inclusief moderne webplatformfuncties, browserfuncties en bugfixes.

Als ontwikkelaar die een reeks end-to-end-tests uitvoert, heeft u echter mogelijk een heel ander perspectief:

  • U wilt consistente, reproduceerbare resultaten bij herhaalde testruns, maar dit gebeurt mogelijk niet als het uitvoerbare of binaire bestand van de browser besluit zichzelf tussen twee runs door bij te werken.
  • U wilt een specifieke browserversie vastzetten en dat versienummer in uw broncoderepository controleren, zodat u oude commits en branches kunt bekijken en de tests vanaf dat moment opnieuw kunt uitvoeren met het binaire bestand van de browser.

Niets van dit alles is mogelijk met een binair browserbestand dat automatisch wordt bijgewerkt. Als gevolg hiervan wilt u uw normale Chrome-installatie mogelijk niet gebruiken voor automatisch testen. Dit is de fundamentele discrepantie tussen wat goed is voor gewone browsergebruikers en wat goed is voor ontwikkelaars die geautomatiseerde tests uitvoeren.

Versiebeheerde binaire browserbestanden

Afgezien van automatische updates, vond je het misschien ook moeilijk om een ​​Chrome-binair bestand met een specifieke versie te vinden. Google stelt met opzet geen Chrome-downloads met versiebeheer beschikbaar, omdat gebruikers zich geen zorgen hoeven te maken over versienummers; ze moeten altijd zo snel mogelijk worden bijgewerkt naar de nieuwste versie. Dit is geweldig voor gebruikers, maar pijnlijk voor ontwikkelaars die een bugrapport moeten reproduceren in een oudere Chrome-versie.

Een specifieker voorbeeld van dit probleem is wanneer u ChromeDriver wilt gebruiken voor browserautomatisering. Niet alleen moet u op de een of andere manier een binair Chrome-bestand downloaden, u hebt ook een ChromeDriver-binair bestand met de overeenkomstige versie nodig om ervoor te zorgen dat de twee binaire bestanden compatibel zijn.

Omdat er geen goede manier is om deze problemen op te lossen, weten we dat veel ontwikkelaars in plaats daarvan binaire bestanden van Chromium (niet Chrome) downloaden, hoewel deze aanpak enkele tekortkomingen vertoont. Ten eerste zijn deze Chromium-binaire bestanden niet op betrouwbare wijze beschikbaar op alle platforms. Ten tweede worden ze afzonderlijk van het Chrome-releaseproces gebouwd en gepubliceerd, waardoor het onmogelijk is om hun versies terug te koppelen aan echte, op gebruikers gerichte Chrome-releases. Ten derde verschilt Chromium van Chrome.

De oplossing: Chrome om te testen

Chrome for Testing is ontworpen om deze problemen op te lossen en is een speciale variant van Chrome die zich richt op het testgebruik, zonder automatische updates, geïntegreerd in het Chrome-releaseproces en beschikbaar gesteld voor elke Chrome-release. Een binair bestand met versiebeheer dat zo dicht mogelijk bij het gewone Chrome ligt zonder de testgebruikssituatie negatief te beïnvloeden.

Om Chrome for Testing te maken, hebben we wijzigingen aangebracht in de Chromium- en Chrome-codebases en een infrastructuur opgezet om deze binaire bestanden te bouwen en te uploaden naar een openbaar beschikbare bucket, parallel aan het Chrome-releaseproces voor alle kanalen (stabiel, bèta, ontwikkelaars en Kanarie).

De infrastructuur rond Chrome for Testing ontgrendelt interessante mogelijkheden buiten Chrome zelf. De problemen die we eerder noemden bij het vinden van een overeenkomend binair bestand voor Chrome en ChromeDriver kunnen bijvoorbeeld volledig worden geëlimineerd door het releaseproces van ChromeDriver te integreren in de Chrome for Testing-infrastructuur . Naast het oplossen van dit gebruikersgerichte pijnpunt, worden hiermee ook ChromeDriver-releases op één lijn gebracht met die van Chrome, en wordt het handmatige releaseproces van ChromeDriver geëlimineerd.

Hoe kan ik Chrome verkrijgen voor het testen van binaire bestanden?

De eenvoudigste manier om Chrome te downloaden voor het testen van binaire bestanden voor uw platform is door gebruik te maken van ons opdrachtregelprogramma @puppeteer/browsers , beschikbaar via npm . Hier zijn enkele voorbeelden:

# 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

Als u er de voorkeur aan geeft uw eigen geautomatiseerde scripts te bouwen voor het downloaden van deze binaire bestanden, dan hebben wij de oplossing voor u. We bieden JSON API-eindpunten met de nieuwste beschikbare versies per Chrome-releasekanaal (Stable, Beta, Dev, Canary). Voor een snel overzicht van de laatste status raadpleegt u het Chrome for Testing-beschikbaarheidsdashboard .