WebDriver BiDi: il futuro dell'automazione cross-browser

Maksim Sadym
Maksim Sadym

Nel nostro articolo precedente, abbiamo esaminato i protocolli di automazione esistenti, ovvero WebDriver "Classic" e Chrome DevTools Protocol (CDP), insieme ai relativi vantaggi e vincoli.

Ecco WebDriver BiDi, il futuro dell'automazione dei browser. Si tratta di un nuovo protocollo standard di automazione del browser attualmente in fase di sviluppo, che mira a combinare il meglio di WebDriver "Classic" e CDP. WebDriver BiDi promette una comunicazione bidirezionale, rendendola veloce per impostazione predefinita, ed è ricco di controlli di basso livello.

BiDi WebDriver
WebDriver "Classic" Protocollo Chrome DevTools (CDP)
Miglior supporto cross-browser Messaggistica rapida e bidirezionale
Standard W3C Offre un controllo di basso livello
Creato per i test

La vision alla base di WebDriver BiDi consiste nel consentirti di scrivere test utilizzando i tuoi strumenti preferiti e automatizzarli in qualsiasi browser o driver, garantendoti la massima flessibilità.

La vision alla base di WebDriver BiDi.
La vision alla base di WebDriver BiDi

Standardizzazione

Il WebDriver BiDi Working Group comprende un gruppo eterogeneo di fornitori di browser, progetti di automazione del browser open source e aziende che offrono soluzioni di automazione dei browser. Questa collaborazione garantisce un futuro promettente per l'automazione dei browser.

Il gruppo di lavoro BiDi di WebDriver
Il WebDriver BiDi Working Group

Il lavoro viene svolto principalmente in questo repository GitHub. Ci sono riunioni mensili con tutti i principali fornitori di browser che comunicano i progressi effettivi e trattano specifiche discutibili e sconosciute. Il gruppo di lavoro interaziendale assicura che le decisioni siano allineate con tutti gli stakeholder.

Definire e implementare un nuovo protocollo non è cosa da poco. Richiedono sforzi collaborativi da parte di vari fornitori che collaborano e collaborano tra di loro. La procedura prevede:

  • Specifica: una procedura di richiesta di commenti (RFC) per raccogliere feedback sulla proposta.
  • Verifica: una serie di test eseguibili su più piattaforme e che fungono da fonte attendibile per tutte le implementazioni.
  • Implementazione: i browser implementano i protocolli in base alla specifica e superano i test di verifica.

sfide

In questa sezione, analizzeremo le sfide legate all'implementazione di WebDriver BiDi, che punta a trovare un equilibrio tra compatibilità, usabilità e implementabilità.

Oltre il clone di CDP: adozione della compatibilità tra browser

CDP, con i suoi elementi specifici per Chrome e DevTools, non può essere replicato direttamente nella specifica BiDi di WebDriver. L'implementazione di CDP così com'è sarebbe impossibile per altri browser, rendendo inutile una specifica che documenta semplicemente come farlo.

Garanzia di bassa latenza

WebDriver BiDi deve essere progettato per gestire un'elevata latenza senza sacrificare le prestazioni. In CDP, la latenza è bassa perché client e server vengono quasi sempre eseguiti sulla stessa macchina fisica, ma non è così in WebDriver BiDi. Pertanto, WebDriver BiDi deve ridurre al minimo il numero di round trip necessari tra client e server.

Priorità all'ergonomia in BiDi

Anche se non è previsto che gli sviluppatori creino i client WebDriver BiDi da zero, è fondamentale evitare di complicare il protocollo. Un BiDi eccessivamente complesso non solo sarebbe difficile da implementare, ma anche con cui lavorare, ostacolando l'adozione e l'utilizzo.

Garantire l'implementazione di BiDi

WebDriver BiDi deve essere realisticamente implementabile, tenendo conto delle limitazioni di vari browser. Ad esempio, la conservazione di tutti gli oggetti JavaScript mai esposti ai client da BiDi potrebbe causare perdite di memoria, mentre la sua mancata visualizzazione ostacola il debug e l'interazione con il codice JavaScript di una pagina. È essenziale trovare un equilibrio che consenta un'automazione efficace del browser senza compromettere il rendimento.

Superare le sfide

In questa sezione, affronteremo le strategie utilizzate per affrontare le sfide legate all'implementazione di WebDriver BiDi.

Prototipazione rapida

Affrontare la sfida dell'implementazione è fondamentale per il successo di BiDi. Per accelerare i progressi nella specifica e nei test, abbiamo adottato un approccio di prototipazione rapida utilizzando NodeJS. Questo ci consente non solo di sperimentare diverse soluzioni, ma facilita anche lo sviluppo di Web Platform Test.

Progettare pensando alle prestazioni

Questa decisione di progettazione è determinata dalle prestazioni poiché, in alcuni casi, la latenza è elevata in WebDriver BiDi. Ad esempio, quando si recupera un valore e un ID oggetto dal browser, WebDriver BiDi richiede un solo round trip, mentre CDP ne richiede due. Questo perché WebDriver BiDi può restituire sia l'ID che il valore in un'unica risposta (il risultato non deve essere compatibile con JSON), mentre CDP deve restituirli separatamente.

Enfasi su Web Platform Test (WPT)

I test della piattaforma web svolgono un ruolo significativo nel lavoro di BiDi. Attualmente, coprendo WebDriver "Classic" e WebDriver BiDi, WPT funge da riferimento affidabile per tutte le implementazioni. Questi test sono progettati per essere eseguiti e passati attraverso varie implementazioni, garantendo un'esecuzione coerente di protocolli tra browser, che è fondamentale per il successo di WebDriver BiDi. Controlla l'ultimo risultato di WPT nella dashboard.

Quali sono il piano e i progressi attuali?

Per comprendere l'orientamento del progetto, consulta la Roadmap di WebDriver BiDi. La roadmap è un lavoro in corso e in costante evoluzione.

Fai riferimento agli ultimi test della piattaforma web per conoscere lo stato dell'implementazione nei vari browser, poiché funge da fonte attendibile.

Resta al passo con i momenti salienti del progetto per monitorarne l'avanzamento.

Scopri gli obiettivi realizzati nel 2023 e non perderti gli ultimi sviluppi.

Supporto di WebDriver BiDi: come puoi dare il tuo contributo

Sei entusiasta del futuro dell'automazione del browser con WebDriver BiDi? Ecco come puoi dimostrare il tuo sostegno:

  • Diventa un early tester and adopter, contribuendo a plasmare il futuro di WebDriver BiDi.
  • Spargi la voce! Condividi il progetto sui social media usando l'hashtag #WebDriverBiDi.
  • Chiedi aiuto. Invia una richiesta di funzionalità o verifica con i tuoi strumenti preferiti i loro piani per l'adozione di WebDriverBiDi.
  • Partecipa alla documentazione RFC, fornendo feedback sulle API.

Domande comuni

WebDriver BiDi sostituirà Chrome DevTools Protocol (CDP)?

No. I browser basati su Chromium continueranno a utilizzare CDP per scopi di debug, mentre WebDriver BiDi è la nuova specifica che consente di soddisfare le esigenze di test con un'API più ergonomica.

Dal momento che Puppeteer utilizza CDP, questo significa che Puppeteer verrà ritirato?

No. Tuttavia, WebDriver BiDi consentirà a Puppeteer di diventare uno strumento di automazione cross-browser.

Hai una roadmap pubblica?

Sì, visita la nostra roadmap su GitHub.