Chrome for Testing: téléchargements fiables pour l'automatisation des navigateurs

Nous avons le plaisir d'annoncer aujourd'hui la sortie de Chrome for Testing, une nouvelle version de Chrome spécialement conçue pour les tests d'applications Web et les cas d'utilisation de l'automatisation. Cet article explique pourquoi l'équipe Chrome a jugé cela nécessaire et présente des exemples concrets où Chrome pour les tests peut vous être utile en tant que développeur.

Arrière-plan

Les tests de navigateur sont un élément essentiel pour créer une expérience Web de haute qualité, qu'ils soient effectués manuellement ou automatiquement. En même temps, la configuration d'un environnement de test de navigateur adéquat est notoirement difficile, à tel point qu'elle est constamment signalée comme l'un des principaux points sensibles des développeurs Web. Nous annonçons aujourd'hui un changement qui, nous l'espérons, vous facilitera la tâche.

Mise à jour automatique : un avantage pour les utilisateurs, un inconvénient pour les développeurs

L'une des fonctionnalités les plus remarquables de Chrome est sa capacité à se mettre à jour automatiquement. Les utilisateurs sont ravis de savoir qu'ils utilisent une version à jour et sécurisée du navigateur, qui inclut en permanence des fonctionnalités modernes de la plate-forme Web et du navigateur, ainsi que des corrections de bugs.

Toutefois, en tant que développeur exécutant une suite de tests de bout en bout, vous pouvez avoir une perspective totalement différente :

  • Vous souhaitez obtenir des résultats cohérents et reproductibles lors des exécutions de test répétées, mais cela peut ne pas se produire si l'exécutable ou le binaire du navigateur décide de se mettre à jour entre deux exécutions.
  • Vous souhaitez épingler une version spécifique du navigateur et enregistrer ce numéro de version dans votre dépôt de code source. Vous pourrez ainsi extraire d'anciens commits et branches, puis réexécuter les tests sur le binaire du navigateur à partir de ce moment-là.

Rien de tout cela n'est possible avec un binaire de navigateur à mise à jour automatique. Par conséquent, vous ne souhaiterez peut-être pas utiliser votre installation Chrome habituelle pour les tests automatisés. Il s'agit d'une incompatibilité fondamentale entre ce qui est bon pour les utilisateurs de navigateurs classiques et ce qui est bon pour les développeurs qui effectuent des tests automatisés.

Binaires de navigateur versionnés

En plus des mises à jour automatiques, il peut être difficile de trouver un binaire Chrome avec une version spécifique. Google ne propose pas intentionnellement de téléchargements de versions spécifiques de Chrome, car les utilisateurs ne devraient pas avoir à se soucier des numéros de version. Ils devraient toujours être mis à jour vers la dernière version dès que possible. C'est une bonne chose pour les utilisateurs, mais c'est une source de difficultés pour les développeurs qui doivent reproduire un rapport de bug dans une ancienne version de Chrome.

Un exemple plus spécifique de ce problème se produit lorsque vous souhaitez utiliser ChromeDriver pour l'automatisation du navigateur. Non seulement vous devez télécharger un binaire Chrome, mais vous avez également besoin d'un binaire ChromeDriver de version correspondante pour vous assurer que les deux binaires sont compatibles.

Comme il n'existe pas de bonne façon de résoudre ces problèmes, nous savons que de nombreux développeurs téléchargent plutôt des binaires Chromium (et non Chrome), bien que cette approche présente quelques inconvénients. Tout d'abord, ces binaires Chromium ne sont pas disponibles de manière fiable sur toutes les plates-formes. Deuxièmement, elles sont créées et publiées séparément du processus de publication de Chrome, ce qui rend impossible de faire correspondre leurs versions aux versions de Chrome destinées aux utilisateurs. Troisièmement, Chromium est différent de Chrome.

La solution : Chrome for Testing

Conçu pour résoudre ces problèmes, Chrome for Testing est une version de Chrome dédiée aux tests, sans mise à jour automatique, intégrée au processus de publication de Chrome et disponible pour chaque version de Chrome. Un binaire versionné aussi proche que possible de Chrome standard, sans affecter négativement le cas d'utilisation des tests.

Pour créer Chrome pour le test, nous avons apporté des modifications aux bases de code Chromium et Chrome et configuré une infrastructure permettant de compiler et d'importer ces binaires dans un bucket accessible au public, en même temps que le processus de publication de Chrome sur tous les canaux (stable, bêta, développement et Canary).

L'infrastructure autour de Chrome pour les tests offre des opportunités intéressantes au-delà de Chrome lui-même. Par exemple, les difficultés que nous avons mentionnées précédemment concernant la recherche d'un binaire Chrome et ChromeDriver correspondant peuvent être complètement éliminées en intégrant le processus de publication de ChromeDriver à l'infrastructure Chrome for Testing. En plus de résoudre ce problème pour les utilisateurs, cela permet d'aligner les versions de ChromeDriver sur celles de Chrome et d'éliminer le processus manuel de publication de ChromeDriver.

Comment obtenir les binaires Chrome pour les tests ?

Le moyen le plus simple de télécharger les binaires Chrome for Testing pour votre plate-forme consiste à utiliser notre utilitaire de ligne de commande @puppeteer/browsers, disponible via npm. Voici quelques exemples :

# 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

Si vous préférez créer vos propres scripts automatisés pour télécharger ces binaires, nous avons ce qu'il vous faut. Nous proposons des points de terminaison d'API JSON avec les dernières versions disponibles pour chaque version de Chrome (stable, bêta, développement et Canary). Pour obtenir un aperçu rapide du dernier état, consultez le tableau de bord de disponibilité de Chrome pour les tests.