Vandaag kondigen we met trots Chrome for Testing aan, een nieuwe Chrome-variant die specifiek is ontworpen voor het testen en automatiseren van webapplicaties. In dit artikel leggen we uit waarom het Chrome-team dit nodig vond en geven we concrete voorbeelden van hoe Chrome for Testing u als ontwikkelaar van dienst kan zijn.
Achtergrond
Browsertesten is een essentieel onderdeel van het creëren van een hoogwaardige webervaring, ongeacht of dit handmatig of automatisch gebeurt. Tegelijkertijd is het opzetten van een adequate testomgeving voor browsers notoir moeilijk, zozeer zelfs dat het steevast wordt genoemd als een van de grootste pijnpunten voor webontwikkelaars. Vandaag kondigen we een wijziging aan die hopelijk een deel van deze pijn zal verlichten.
Automatische updates: geweldig voor gebruikers, lastig voor ontwikkelaars.
Een van de meest opvallende kenmerken van Chrome is de automatische updatefunctie. Gebruikers zijn blij te weten dat ze altijd beschikken over een actuele en veilige browserversie met moderne webplatformfuncties, browserfuncties en bugfixes.
Als ontwikkelaar die een reeks end-to-end tests uitvoert, heb je echter wellicht een heel ander perspectief:
- Je wilt consistente, reproduceerbare resultaten bij herhaalde testruns, maar dit is mogelijk niet het geval als het uitvoerbare bestand of de binaire code van de browser zichzelf tussen twee runs door bijwerkt.
- Je wilt een specifieke browserversie vastzetten en dat versienummer in je broncode-repository opslaan, zodat je oude commits en branches kunt uitchecken en de tests opnieuw kunt uitvoeren met de browserbinary van dat moment.
Dit alles is niet mogelijk met een automatisch updatende browserversie. Daarom is het wellicht niet aan te raden om je reguliere Chrome-installatie te gebruiken voor geautomatiseerd testen. Dit is de fundamentele discrepantie tussen wat goed is voor gewone browsergebruikers en wat goed is voor ontwikkelaars die geautomatiseerd testen.
Versiebeheerde browserbinaries
Afgezien van automatische updates, kan het ook lastig zijn geweest om een Chrome-binary met een specifieke versie te vinden. Google biedt bewust geen Chrome-downloads met versienummers aan, omdat gebruikers zich geen zorgen hoeven te maken over versienummers – ze moeten altijd zo snel mogelijk naar de nieuwste versie worden bijgewerkt. Dit is geweldig voor gebruikers, maar vervelend voor ontwikkelaars die een bugrapport in een oudere Chrome-versie moeten reproduceren.
Een concreter voorbeeld van dit probleem is wanneer je ChromeDriver wilt gebruiken voor browserautomatisering. Je moet niet alleen op de een of andere manier een Chrome-binary downloaden, maar je hebt ook een ChromeDriver-binary van de juiste versie nodig om ervoor te zorgen dat de twee binaries compatibel zijn.
Omdat er geen goede manier is om deze problemen op te lossen, weten we dat veel ontwikkelaars in plaats daarvan Chromium-binaries (in plaats van Chrome) downloaden, hoewel deze aanpak enkele nadelen heeft. Ten eerste zijn deze Chromium-binaries niet betrouwbaar beschikbaar op alle platformen. Ten tweede worden ze los van het Chrome-releaseproces gebouwd en gepubliceerd, waardoor het onmogelijk is om hun versies te koppelen aan de daadwerkelijke Chrome-releases voor gebruikers. Ten derde is Chromium anders dan Chrome.
De oplossing: Chrome voor testen.
Chrome for Testing is ontworpen om deze problemen op te lossen. Het is een speciale versie van Chrome die specifiek is ontwikkeld voor testdoeleinden, zonder automatische updates, geïntegreerd in het Chrome-releaseproces en beschikbaar bij elke Chrome-release. Het is een versiebeheerde binaire versie die zo veel mogelijk lijkt op de reguliere Chrome-versie, zonder de testfunctionaliteit negatief te beïnvloeden.
Om Chrome voor testdoeleinden te creëren, hebben we wijzigingen doorgevoerd in de Chromium- en Chrome-codebases en een infrastructuur opgezet om deze binaire bestanden te bouwen en te uploaden naar een openbaar toegankelijke opslagplaats, synchroon met het releaseproces van Chrome voor alle kanalen (stabiel, bèta, ontwikkeling en canary).
De infrastructuur rondom Chrome for Testing biedt interessante mogelijkheden die verder reiken dan Chrome zelf. Zo kunnen de eerder genoemde problemen met het vinden van een overeenkomende Chrome- en ChromeDriver- binary volledig worden opgelost door het ChromeDriver-releaseproces te integreren in de Chrome for Testing-infrastructuur . Dit lost niet alleen dit gebruikersprobleem op, maar zorgt er ook voor dat ChromeDriver-releases synchroon lopen met die van Chrome en dat het handmatige ChromeDriver-releaseproces overbodig wordt.
Hoe kan ik Chrome gebruiken om binaire bestanden te testen?
De eenvoudigste manier om de binaire bestanden van Chrome voor testen voor uw platform te downloaden, is door gebruik te maken van ons @puppeteer/browsers commandoregelprogramma , dat beschikbaar is 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 je liever je eigen geautomatiseerde scripts maakt om deze binaire bestanden te downloaden, dan zit je bij ons goed. We bieden JSON API-eindpunten met de nieuwste beschikbare versies per Chrome-releasekanaal (Stable, Beta, Dev, Canary). Raadpleeg het beschikbaarheidsdashboard van Chrome voor testen voor een snel overzicht van de actuele status.