Playwright of Cypress: WebKit en CI-parallellisatie breken de gelijkstand

|Auteur: Redactie van QUASA|5 min. leestijd| 1
Playwright of Cypress: WebKit en CI-parallellisatie breken de gelijkstand

Als WebKit een vaste plaats in de testmatrix moet krijgen, ligt Playwright voor de hand. De browserdocumentatie van Playwright beschrijft Chromium, Firefox en WebKit als configureerbare testprojecten. De browserdocumentatie van Cypress noemt WebKit nog experimenteel, naast de ondersteunde Chrome-varianten en Firefox. Voor een bestaande Cypress-suite die aan de vereiste browserdekking voldoet, rechtvaardigt dat verschil op zichzelf geen volledige migratie.

Voor parallelle CI biedt Playwright een verdeling die het team in eigen CI-jobs kan aansturen: de uitleg over sharding beschrijft hoe afzonderlijke jobs delen van dezelfde suite uitvoeren. De ingebouwde verdeling van Cypress over machines vraagt geregistreerde runs met Cypress Cloud, zoals de handleiding voor parallelisatie laat zien. Zelf spec-bestanden over jobs verdelen blijft mogelijk; dan verzorgt het team die verdeling in plaats van Cypress Cloud.

Browserdekking: WebKit is niet overal dezelfde keuze

De status van WebKit telt vooral wanneer gedrag op de engine achter Safari deel is van de acceptatiecriteria. In Playwright kan dezelfde testsuite via projecten op Chromium, Firefox en WebKit draaien. De gebruikte WebKit-build is echter niet identiek aan de Safari-versie die gebruikers op hun apparaat hebben. Functies die van het besturingssysteem afhangen, waaronder mediacodecs, kunnen verschillen; voor videoweergave benadert een WebKit-run op macOS Safari beter dan een run op Linux.

Bij Cypress moet het team WebKit expliciet inschakelen en het pakket playwright-webkit installeren. Die experimentele route gebruikt dus zelf een Playwright WebKit-build, maar heeft beperkingen binnen Cypress: onder meer cy.origin() en Test Replay worden daar niet ondersteund. Voor een suite die op zulke functies steunt, is WebKit toevoegen meer werk dan een extra browser selecteren. Cypress markeert ook de meegeleverde Electron-testbrowser als verouderd en voorziet verwijdering in een latere versie. Een pipeline die impliciet op Electron draait, heeft daarom een overstap naar een geïnstalleerde browser nodig.

Parallelle CI: verdeling en afhankelijkheden

Playwright verdeelt tests via shards die als afzonderlijke CI-jobs kunnen draaien. Standaard gebeurt dat per testbestand; met volledige parallelisatie kan de verdeling op het niveau van individuele tests plaatsvinden. Dat is relevant wanneer enkele bestanden veel langer duren dan de rest. De CI-omgeving moet wel zelf de jobs starten, de benodigde browsers installeren en de resultaten bijeenbrengen. De totale doorlooptijd blijft bovendien afhangen van de job die als laatste klaar is.

Cypress Cloud deelt tijdens een geregistreerde run complete spec-bestanden uit aan beschikbare machines. Het gebruikt eerdere looptijden om hun duur te schatten en geeft een machine nieuw werk zodra die klaar is. Dat kan bij ongelijk lange specs beheer van een vaste verdeling besparen, terwijl Cypress Cloud een extra afhankelijkheid en mogelijke kostenpost wordt. De vergelijking gaat daarom over de volledige pipeline: wachttijd op runners, browserinstallatie, duur van de langzaamste spec en de voorwaarden van het gebruikte Cloud-plan. Meer machines leveren geen evenredige tijdwinst op wanneer werk of opstarttijd slecht verdeeld is.

Wat de Angular-meting wel laat zien

In de gepubliceerde Angular-studie werden vijf scenario’s voor één applicatie op een lokale Windows-machine in headless modus telkens vijftig keer per browser uitgevoerd. Playwright was in alle scenario’s gemiddeld sneller en gebruikte in de gemeten testprocessen minder RAM dan Cypress; het gemiddelde CPU-gebruik lag iets hoger. Ook vertoonden de uitvoeringstijden minder spreiding. Het resultaat betreft de daar gebouwde tests en configuratie, niet de prestaties van elke willekeurige suite.

De onderzoekers maakten voor beide tools tests voor dezelfde applicatie en verzamelden procesmetingen, waarna uitschieters voor de analyse werden verwijderd. Hun stabiliteitsvergelijking gaat vooral over de spreiding van looptijd en resourcegebruik tijdens herhaalde lokale runs. Dat is iets anders dan het aandeel onterechte testfouten in een CI-pipeline. De studie meet evenmin verdeelde runs, Cypress Cloud-kosten of migratiewerk. Een kortere lokale testtijd voorspelt daarom niet rechtstreeks hoeveel tijd of geld een team in zijn eigen pipeline bespaart.

Keuzematrix voor verschillende suites

  • Klein team met een nieuwe suite: Playwright is de logische start wanneer WebKit vereist is of het team de verdeling over CI-jobs zelf wil beheren. Als de beoogde browserdekking binnen Cypress past en het team die tool al kent, kunnen leertijd en onderhoud zwaarder wegen dan de uitkomst van een externe snelheidsmeting.
  • Team met een bestaande Cypress-suite: behoud werkende tests zolang dekking en doorlooptijd voldoen. Wordt WebKit verplicht, bepaal dan welke kritieke stromen afhankelijk zijn van functies die in Cypress WebKit ontbreken. Een beperkte Playwright-suite voor die stromen kan minder migratiewerk vragen dan het herschrijven van alle tests.
  • Grote CI met meerdere browsers: Playwright geeft directe controle over browserprojecten en shards in het eigen CI-platform. Cypress Cloud neemt de verdeling van specs tijdens geregistreerde runs op zich. De doorslag ligt bij de duur en indeling van de eigen suite, het beschikbare beheer en de totale kosten van runners en Cloud.

Migratiekosten veranderen de uitkomst

Een overstap vervangt meer dan de testloper. Selectors, aangepaste opdrachten, netwerkstubs, inlogvoorbereiding en testdata moeten in de nieuwe suite opnieuw worden ingericht of beoordeeld. Ook browserinstallatie, CI-jobs en het verzamelen van testresultaten veranderen. Dat werk kan een besparing per run lange tijd overtreffen, vooral wanneer de bestaande Cypress-tests betrouwbaar zijn en WebKit geen harde eis is.

Voor een keuze tussen beide tools is een beperkte proef met dezelfde belangrijke gebruikersstromen het meest informatief. Vergelijk onder gelijke browser- en runneromstandigheden de totale pipelinetijd, het geheugen per runner en herhaalde mislukkingen; neem de ontwikkeltijd voor gelijkwaardige tests afzonderlijk mee. Dan blijkt of de directe WebKit-route en zelfstandige CI-verdeling van Playwright in de eigen situatie opwegen tegen het behoud van een werkende Cypress-suite.

Delen:

Abonneer je op onze nieuwsbrief

Ontvang het laatste nieuws over Web3, AI en crypto rechtstreeks in je inbox.

0