WebDriver BiDi : l'avenir de l'automatisation multinavigateur

Dans notre article précédent, nous avons examiné les protocoles d'automatisation existants, à savoir WebDriver "Classic" et le protocole Chrome DevTools (CDP), ainsi que leurs avantages et contraintes respectifs.

Découvrez WebDriver BiDi, l'avenir de l'automatisation des navigateurs. Il s'agit d'un nouveau protocole d'automatisation de navigateur standard actuellement en cours de développement, qui vise à combiner le meilleur de WebDriver "classique" et de CDP. WebDriver BiDi promet une communication bidirectionnelle, ce qui le rend rapide par défaut. Il est également doté d'un contrôle de bas niveau.

WebDriver BiDi
WebDriver "classique" Protocole Chrome DevTools (CDP)
Compatibilité optimale avec les navigateurs Messagerie bidirectionnelle rapide
Norme W3C Fournit un contrôle de bas niveau
Conçu pour les tests

L'objectif de WebDriver BiDi est de vous permettre d'écrire des tests à l'aide de vos outils préférés et de les automatiser dans n'importe quel navigateur ou pilote, ce qui vous offre une flexibilité totale.

La vision derrière WebDriver BiDi
La vision derrière WebDriver BiDi

Standardisation

Le groupe de travail WebDriver BiDi comprend un groupe diversifié de fournisseurs de navigateurs, de projets d'automatisation de navigateurs Open Source et d'entreprises proposant des solutions d'automatisation de navigateurs. Cette collaboration promet un avenir prometteur pour l'automatisation des navigateurs.

Groupe de travail WebDriver BiDi
Groupe de travail WebDriver BiDi

La plupart du travail est effectué dans ce dépôt GitHub. Des réunions mensuelles sont organisées avec tous les principaux fournisseurs de navigateurs pour faire état des progrès réels et discuter des détails discutables et inconnus. Le groupe de travail interentreprises s'assure que les décisions sont en adéquation avec toutes les parties prenantes.

Établir et implémenter un nouveau protocole n'est pas une mince affaire. Il nécessite des efforts concertés de la part de différents fournisseurs qui collaborent et travaillent ensemble. Ce processus implique les étapes suivantes:

  • Spécification: processus de demande de commentaires (RFC) permettant de recueillir des commentaires sur la proposition.
  • Validation: série de tests pouvant être exécutés sur différentes plates-formes, servant de source de vérité pour toutes les implémentations.
  • Implémentation: les navigateurs implémentent les protocoles conformément aux spécifications et réussissent les tests de validation.

Défis

Dans cette section, nous allons examiner les défis de l'implémentation de WebDriver BiDi, qui vise à trouver un équilibre entre la compatibilité, la facilité d'utilisation et l'implémentabilité.

Au-delà d'un clone de CDP: adopter la compatibilité multinavigateur

Le CDP, avec ses éléments spécifiques à Chrome et aux outils pour les développeurs, ne peut pas être directement répliqué dans la spécification BiDi WebDriver. L'implémentation du CDP tel quel serait impossible pour les autres navigateurs, ce qui rendrait inutile une spécification qui ne fait que décrire comment procéder.

Garantir une faible latence

WebDriver BiDi doit être conçu pour gérer une latence élevée sans compromettre les performances. Dans CDP, la latence est faible, car le client et le serveur sont presque toujours exécutés sur la même machine physique. Ce n'est pas le cas dans WebDriver BiDi. Par conséquent, WebDriver BiDi doit réduire au maximum le nombre d'allers-retours entre le client et le serveur.

Prioriser l'ergonomie dans le mode bidirectionnel

Bien que les développeurs ne soient pas tenus de créer des clients WebDriver BiDi à partir de zéro, il est essentiel d'éviter de trop compliquer le protocole. Un système bidirectionnel trop complexe serait non seulement difficile à implémenter, mais aussi à utiliser, ce qui freinerait son adoption et son utilisation.

Assurer l'implémentabilité du mode bidirectionnel

La fonctionnalité BiDi de WebDriver doit être réalisable, en tenant compte des limites des différents navigateurs. Par exemple, conserver tous les objets JavaScript exposés aux clients par BiDi pourrait entraîner des fuites de mémoire, tandis que ne conserver aucun d'eux entraverait le débogage et l'interaction avec le code JavaScript d'une page. Il est essentiel de trouver le juste équilibre pour permettre une automatisation efficace du navigateur sans compromettre les performances.

Surmonter les défis

Dans cette section, nous allons examiner les stratégies employées pour relever les défis de l'implémentation de WebDriver BiDi.

Prototypage rapide

Pour que la bidirectionnalité soit un succès, il est essentiel de relever le défi de l'implémentation. Pour accélérer la progression de la spécification et des tests, nous avons adopté une approche de prototypage rapide à l'aide de NodeJS. Cela nous permet non seulement d'expérimenter différentes solutions, mais aussi de faciliter le développement des tests de la plate-forme Web.

Concevoir en gardant à l'esprit les performances

Cette décision de conception est basée sur les performances, car dans certains cas, la latence est élevée dans WebDriver bidi. Par exemple, lorsque vous récupérez un ID d'objet et une valeur à partir du navigateur, WebDriver BiDi ne nécessite qu'un aller-retour, tandis que CDP en nécessite deux. En effet, WebDriver bidi peut renvoyer à la fois l'ID et la valeur dans une seule réponse (le résultat ne doit pas être sérialisable en JSON), tandis que CDP doit les renvoyer séparément.

Mise l'accent sur les tests de plate-forme Web (WPT)

Les tests de la plate-forme Web jouent un rôle important dans les travaux de BiDi. Actuellement, WPT couvre WebDriver "Classic" et WebDriver BiDi, et sert de référence fiable pour toutes les implémentations. Ces tests sont conçus pour être exécutés et transmis dans différentes implémentations, ce qui garantit une exécution cohérente du protocole entre les navigateurs, ce qui est essentiel pour le succès de WebDriver BiDi. Consultez le dernier résultat du test de vitesse Web dans le tableau de bord.

Quel est le plan et quel est l'avancement actuel ?

Consultez la feuille de route WebDriver BiDi pour comprendre l'orientation du projet. La feuille de route est en cours d'élaboration et évolue en permanence.

Reportez-vous aux derniers tests de la plate-forme Web pour connaître l'état de l'implémentation dans les différents navigateurs, car ils constituent la source de référence.

Suivez les jalons du projet pour en surveiller la progression.

Découvrez les réalisations de 2023 et restez informé des derniers développements.

Prise en charge de la bidirectionnalité WebDriver: comment nous aider

L'avenir de l'automatisation des navigateurs avec WebDriver BiDi vous intéresse-t-il ? Voici comment vous pouvez montrer votre soutien:

  • Devenez un testeur et un utilisateur précoce, et contribuez à façonner l'avenir de WebDriver BiDi.
  • Parlez-en autour de vous Partagez le projet sur les réseaux sociaux en utilisant le hashtag #WebDriverBiDi.
  • Demandez de l'aide. Envoyez une demande de fonctionnalité ou demandez à vos outils préférés s'ils prévoient d'adopter WebDriverBiDi.
  • Participez à la RFC en donnant votre avis sur les API.

Questions fréquentes

WebDriver BiDi va-t-il remplacer le protocole Chrome DevTools (CDP) ?

Non. Les navigateurs basés sur Chromium continueront d'utiliser CDP à des fins de débogage, tandis que WebDriver BiDi est la nouvelle spécification pour répondre aux besoins de test avec une API plus ergonomique.

Étant donné que Puppeteer utilise CDP, cela signifie-t-il que Puppeteer sera abandonné ?

Non. Toutefois, WebDriver BiDi permettra à Puppeteer de devenir un outil d'automatisation multinavigateur.

Avez-vous une feuille de route publique ?

Oui, consultez notre feuille de route sur GitHub.