La semaine dernière, avec BrowserStack, nous avons annoncé que WebDriver BiDi était désormais prêt à être utilisé en production dans BrowserStack. Cette semaine, l'été de WebDriver BiDi se poursuit avec Firefox 129 et Puppeteer 23, qui bénéficient chacun d'une prise en charge prête pour la production de WebDriver BiDi.
Mozilla est un collaborateur important de WebDriver BiDi depuis plus de quatre ans. Il a d'abord contribué à façonner la nouvelle norme, puis l'a progressivement implémentée dans Firefox, tout en documentant ses progrès avec la newsletter Firefox WebDriver.
WebDriver BiDi étant désormais prêt à la production dans Firefox, Puppeteer, à partir de la version 23, propose une compatibilité stable avec Firefox via WebDriver BiDi. Cela vous permet d'automatiser Firefox avec la même API concise que Chrome. La compatibilité de Puppeteer avec le protocole Chrome DevTools (CDP) reste inchangée.
Firefox, CDP et Puppeteer
Puppeteer est un outil fiable qui permet aux développeurs d'automatiser les navigateurs basés sur Chromium à l'aide du protocole Chrome DevTools, également appelé CDP. En 2019, Puppeteer a été compatible de manière expérimentale avec Firefox.
Pour que cela fonctionne, Mozilla a implémenté et géré un sous-ensemble de CDP dans Firefox. Cette solution permettait d'automatiser Firefox avec l'API Puppeteer, mais elle comportait des mises en garde :
- Comme son nom l'indique, le CDP est utilisé par les outils pour les développeurs de Chrome et doit évoluer en fonction des exigences des outils pour les développeurs.
- La CDP n'est pas standardisée dans une spécification publique partagée. Sa maintenance dans Firefox nécessitait une communication et des efforts réguliers.
- Étant donné que Firefox n'a implémenté qu'un sous-ensemble de CDP, Puppeteer n'a jamais pu garantir que son API fonctionne avec Firefox, ce qui crée une confusion pour les utilisateurs.
Nous sommes heureux d'avoir maintenu cette assistance avec Mozilla ces dernières années, mais nous avons toujours su qu'il ne s'agissait pas d'une solution permanente. Sur la base de ce partenariat et 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é avec la bidirection WebDriver à l'API Puppeteer. L'objectif des deux équipes était de rendre disponible chaque API requise pour les cas d'utilisation d'automatisation en production à l'aide de WebDriver BiDi dans Puppeteer, en assurant la prise en charge dans Chrome et Firefox.
Cela permet aux utilisateurs de Puppeteer de sélectionner Firefox ou Chrome pour leurs automatisations en spécifiant la clé de configuration browser
lors du lancement d'une instance Puppeteer.
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 associé.
Prise en charge des CDP à l'avenir
L'extrait de code précédent montre que pour automatiser Chrome à l'aide de WebDriver BiDi avec Puppeteer, vous devez définir explicitement protocol
sur webDriverBiDi
. En effet, pour Chrome, Puppeteer continuera d'utiliser CDP par défaut, afin de ne pas interrompre les automatisations existantes, mais aussi de continuer à prendre en charge les automatisations spécialisées dans les fonctionnalités de Chrome.
La prise en charge de CDP dans Firefox est obsolète à partir de Firefox 129 et devrait être supprimée fin 2024. Si vous disposez d'automatisations existantes qui reposent sur la prise en charge de CDP dans Firefox, nous vous recommandons vivement de migrer vers WebDriver BiDi. Si ce n'est pas possible, contactez dev-webdriver@mozilla.org avec votre cas d'utilisation.