WebDriver BiDi productieklaar in Firefox, Chrome en Puppeteer

Vorige week hebben we samen met BrowserStack aangekondigd dat WebDriver BiDi productieklaar wordt in BrowserStack . Deze week gaat de zomer van WebDriver BiDi verder, waarbij Firefox 129 en Puppeteer 23 elk productieklare ondersteuning krijgen voor WebDriver BiDi!

Mozilla werkt nu al meer dan vier jaar nauw samen met WebDriver BiDi. Ze heeft aanvankelijk geholpen de nieuwe standaard vorm te geven en deze vervolgens geleidelijk in Firefox te implementeren, waarbij ze hun voortgang netjes documenteerden met de Firefox WebDriver-nieuwsbrief .

Nu WebDriver BiDi nu productieklaar is in Firefox, biedt Puppeteer vanaf versie 23 stabiele ondersteuning voor Firefox via WebDriver BiDi. Hiermee kunt u Firefox automatiseren met dezelfde beknopte API als Chrome. De ondersteuning van Puppeteer voor Chrome DevTools Protocol (CDP) blijft ongewijzigd.

Firefox, CDP en Poppenspeler

Puppeteer is een betrouwbaar hulpmiddel voor ontwikkelaars om Chromium-gebaseerde browsers te automatiseren met behulp van het Chrome DevTools Protocol, ook wel bekend als CDP. In 2019 kreeg Puppeteer experimentele ondersteuning voor Firefox.

Om dit te laten werken, heeft Mozilla een subset van CDP in Firefox geïmplementeerd en onderhouden. Met deze oplossing kon Firefox worden geautomatiseerd met de Puppeteer API, maar er waren kanttekeningen bij:

  • Zoals de naam al doet vermoeden, wordt de CDP gebruikt door Chrome's DevTools en moet deze worden aangepast aan de DevTools-vereisten.
  • Het CDP is niet gestandaardiseerd in een gedeelde, openbare specificatie en het onderhouden ervan in Firefox vereiste voortdurende communicatie en inspanning.
  • Omdat Firefox slechts een subset van CDP implementeerde, kon Puppeteer nooit garanderen dat de volledige API met Firefox zou werken, wat verwarring veroorzaakte bij gebruikers.

Hoewel we blij zijn dat we deze ondersteuning de afgelopen jaren samen met Mozilla hebben gehandhaafd, wisten we altijd dat dit geen permanente oplossing was. Voortbouwend op dit partnerschap, en samen met andere grote browser- en toolingleveranciers , hebben we samen WebDriver BiDi gecreëerd.

Teamwerk zorgt ervoor dat de droom werkt

Het Firefox-team heeft gretig gewerkt aan de implementatie van WebDriver BiDi in Firefox. Tegelijkertijd heeft het Puppeteer-team de ondersteuning voor WebDriver BiDi uitgebreid via de Puppeteer API. Het doel waar beide teams naartoe werkten was om elke API die nodig is voor gebruiksscenario's voor productieautomatisering beschikbaar te maken met behulp van WebDriver BiDi in Puppeteer, waardoor ondersteuning in zowel Chrome als Firefox wordt gegarandeerd.

Gedeeld teamdashboard met het aantal geslaagde tests van de afgelopen maanden.
Gedeeld teamdashboard met het aantal geslaagde tests van de afgelopen maanden.

Hierdoor kunnen Puppeteer-gebruikers Firefox of Chrome selecteren voor hun automatiseringen, door de browser op te geven bij het starten van een Puppeteer-instantie.

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();

Voor meer informatie over wat er nieuw is in Firefox 129 en Mozilla's werk aan WebDriver BiDi, zie de gerelateerde Mozilla Hacks-blogpost .

CDP-ondersteuning in de toekomst

Uit het voorgaande codefragment blijkt dat u, om Chrome te automatiseren met WebDriver BiDi met Puppeteer, protocol expliciet moet instellen op webDriverBiDi . Dit komt omdat Puppeteer voor Chrome standaard CDP blijft gebruiken, om bestaande automatiseringen niet te verbreken, maar ook om automatiseringen te blijven ondersteunen die gespecialiseerd zijn in de functies van Chrome.

CDP-ondersteuning in Firefox is verouderd vanaf Firefox 129 en zal naar verwachting eind 2024 worden verwijderd . Als u bestaande automatiseringen heeft die afhankelijk zijn van CDP-ondersteuning in Firefox, raden we u ten zeerste aan om naar WebDriver BiDi te migreren. Als dat niet mogelijk is, neem dan contact op met dev-webdriver@mozilla.org met uw gebruiksscenario.