Chrome for Testing is een Chrome-variant die specifiek is ontworpen voor het testen en automatiseren van webapplicaties. Dit document legt uit waarom het Chrome-team dit nodig vond en geeft concrete voorbeelden van hoe Chrome for Testing u als ontwikkelaar van dienst kan zijn.
Achtergrond
Browsertesten zijn 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 browsertestomgeving notoir moeilijk, zozeer zelfs dat het steevast wordt genoemd als een van de grootste pijnpunten voor webontwikkelaars.
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, downloaden veel ontwikkelaars in plaats daarvan Chromium-binaries (in plaats van Chrome) , 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 gericht op testen, 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 Chrome-releaseproces 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.