WebDriver BiDi prêt pour la production dans Firefox, Chrome et Puppeteer

Matthias Rohmer
Matthias Rohmer

La semaine dernière, avec BrowserStack, nous avons annoncé que WebDriver BiDi allait devenir prêt à être mis en production dans BrowserStack. Cette semaine, l'été WebDriver BiDi se poursuit avec Firefox 129 et Puppeteer 23 sont tous compatibles avec WebDriver BiDi, prêts pour la production.

Mozilla collabore étroitement sur WebDriver BiDi depuis plus de quatre ans. Nous avons d'abord aidé à façonner la nouvelle norme, avant de l'implémenter progressivement dans Firefox, en documentant clairement leur progression avec la newsletter WebDriver.

WebDriver BiDi est désormais prêt pour la production dans Firefox (Puppeteer) à partir de la version 23, offre une prise en charge stable de Firefox via WebDriver BiDi. Cela vous permet d'automatiser Firefox avec la même API concise que Chrome. Compatibilité de Puppeteer avec Chrome Le protocole CDP (DevTools Protocol) reste inchangé.

Firefox, CDP et Puppeteer

Puppeteer est un outil fiable permettant aux développeurs d'automatiser les navigateurs basés sur Chromium à l'aide du Protocole d'outils de développement, également appelé CDP. En 2019, Puppeteer a bénéficié d'une assistance expérimentale pour Firefox.

Pour que cela fonctionne, Mozilla a implémenté et géré un sous-ensemble de CDP dans Firefox : Cette solution a permis à Firefox d'être automatisé avec l'API Puppeteer, présentait des mises en garde:

  • Comme son nom l'indique, la CDP est utilisée par les outils de développement de Chrome et doit être modifiée avec les exigences des outils de développement.
  • La CDP n'est pas standardisée dans une spécification publique partagée et sa maintenance dans Firefox nécessitait une communication et d'efforts.
  • Firefox n'ayant implémenté qu'un sous-ensemble de la CDP, Puppeteer n'a jamais pu garantir que son API complète fonctionne avec Firefox, ce qui est source de confusion pour les utilisateurs.

Bien que nous soyons heureux d'avoir maintenu cette prise en charge avec Mozilla pour le ces dernières années, nous avons toujours su que ce n'était pas une solution permanente. Poursuivez sur cette lancée et avec d'autres grands fournisseurs de navigateurs et d'outils, nous avons créé WebDriver BiDi.

Rien ne vaut le travail d'équipe

L'équipe Firefox a travaillé avec enthousiasme à l'implémentation de WebDriver BiDi dans Firefox. Parallèlement, l'équipe Puppeteer a étendu la compatibilité de WebDriver BiDi dans l'API Puppeteer. Les deux équipes se sont efforcées de toutes les API requises pour les cas d'utilisation de l'automatisation de la production à l'aide de WebDriver BiDi dans Puppeteer, ce qui garantit une compatibilité avec Chrome et Firefox :

Tableau de bord d'équipe partagé indiquant le nombre de tests réussis au cours des derniers mois.
Tableau de bord d'équipe partagé indiquant le nombre de tests réussis au cours des derniers mois.

Cela permet aux utilisateurs de Puppeteer de choisir Firefox ou Chrome pour leurs automatisations, en spécifiant la clé de configuration browser lors du lancement d'une application Puppeteer ; Compute Engine.

import puppeteer from 'puppeteer';

const firefoxBrowser = await puppeteer.launch({
  browser: 'firefox', // WebDriver BiDi is used by default in Firefox.
});
const page = await firefoxBrowser.newPage();
...
await firefoxBrowser.close();

const chromeBrowser = await puppeteer.launch({
  browser: 'chrome',  
  protocol: 'webDriverBiDi', // CDP would be used by default for Chrome.
});
const page = await chromeBrowser.newPage();
...
await chromeBrowser.close();

Pour en savoir plus sur les nouveautés de Firefox 129 et sur le travail de Mozilla sur WebDriver BiDi consultez l'article de blog Mozilla Hacks correspondant.

Prise en charge de la plate-forme de données client à l'avenir

L'extrait de code précédent montre que pour automatiser Chrome avec WebDriver BiDi avec Puppeteer, vous devez définir explicitement protocol sur webDriverBiDi En effet, pour Chrome, Puppeteer continue à utiliser CDP : pour ne pas casser les automatisations existantes, mais aussi pour continuer à les prendre en charge spécialisée dans les fonctionnalités de Chrome.

La prise en charge de la CDP dans Firefox est obsolète depuis Firefox 129 et prévu pour être supprimé d'ici la fin de l'année 2024. Si certaines de vos automatisations existantes s'appuient sur la compatibilité CDP dans Firefox, recommandez de migrer vers WebDriver BiDi. Si ce n'est pas possible, contactez dev-webdriver@mozilla.org avec votre cas d'utilisation.