WebDriver BiDi pronto per la produzione in Firefox, Chrome e Puppeteer

Matthias Rohmer
Matthias Rohmer

Proprio la scorsa settimana, insieme a BrowserStack, abbiamo annunciato che WebDriver BiDi sarebbe diventato pronto per la produzione in BrowserStack. Questa settimana l'estate di WebDriver BiDi continua con Firefox 129 e Puppeteer 23, che ora supportano WebDriver BiDi in produzione.

Mozilla è un collaboratore importante di WebDriver BiDi da oltre quattro anni, inizialmente aiutando a dare forma al nuovo standard e poi implementandolo gradualmente in Firefox, documentando in modo chiaro i progressi con la Firefox WebDriver Newsletter.

Ora che WebDriver BiDi è pronto per la produzione in Firefox, Puppeteer, a partire dalla versione 23, offre supporto stabile per Firefox tramite WebDriver BiDi. Questo consente di automatizzare Firefox con la stessa API concisa di Chrome. Il supporto di Puppeteer per Chrome DevTools Protocol (CDP) rimane invariato.

Firefox, CDP e Puppeteer

Puppeteer è uno strumento affidabile per gli sviluppatori per automatizzare i browser basati su Chromium utilizzando il protocollo DevTools di Chrome, noto anche come CDP. Nel 2019 Puppeteer ha ottenuto il supporto sperimentale per Firefox.

Per farlo, Mozilla ha implementato e gestito un sottoinsieme di CDP in Firefox. Questa soluzione consentiva di automatizzare Firefox con l'API Puppeteer, ma presentava delle limitazioni:

  • Come suggerisce il nome, il CDP viene utilizzato da DevTools di Chrome e deve cambiare in base ai requisiti di DevTools.
  • Il CDP non è standardizzato in una specifica pubblica condivisa e la sua gestione in Firefox ha richiesto un impegno e una comunicazione costante.
  • Poiché Firefox ha implementato solo un sottoinsieme di CDP, Puppeteer non poteva mai garantire il funzionamento della sua API completa con Firefox, creando confusione per gli utenti.

Siamo felici di aver mantenuto questo supporto insieme a Mozilla negli ultimi anni, ma sapevamo che non si trattava di una soluzione permanente. Sulla base di questa partnership e includendo altri importanti fornitori di browser e strumenti, abbiamo creato insieme WebDriver BiDi.

Il lavoro di squadra rende il lavoro ideale

Il team di Firefox si è adoperato per implementare WebDriver BiDi in Firefox. Allo stesso tempo, il team di Puppeteer ha ampliato il supporto di WebDriver BiDi tramite l'API Puppeteer. L'obiettivo di entrambi i team era rendere disponibile ogni API necessaria per i casi d'uso di automazione della produzione utilizzando WebDriver BiDi in Puppeteer, assicurando il supporto sia in Chrome che in Firefox.

Dashboard del team condivisa che mostra il numero di test superati negli ultimi mesi.
Dashboard del team condivisa che mostra il numero di test superati negli ultimi mesi.

In questo modo gli utenti di Puppeteer possono selezionare Firefox o Chrome per le proprie automazioni, specificando la chiave di configurazione browser all'avvio di un'istanza 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();

Per scoprire di più sulle novità di Firefox 129 e sul lavoro di Mozilla su WebDriver BiDi, consulta il post del blog Mozilla Hacks correlato.

Supporto di CDP in futuro

Lo snippet di codice precedente mostra che per automatizzare Chrome utilizzando WebDriver BiDi con Puppeteer devi impostare esplicitamente protocol su webDriverBiDi. Questo perché, per Chrome, Puppeteer continuerà a utilizzare per impostazione predefinita CDP per non interrompere le automazioni esistenti, ma anche per continuare a supportare le automazioni specializzate per le funzionalità di Chrome.

Il supporto di CDP in Firefox è deprecato a partire da Firefox 129 e è prevista la rimozione alla fine del 2024. Se disponi di automazioni esistenti che si basano sul supporto CDP in Firefox, ti consigliamo vivamente di eseguire la migrazione a WebDriver BiDi. Se non è possibile, contatta dev-webdriver@mozilla.org con il tuo caso d'uso.