Playwright testing

Timo van Loon

Playwright testing

Je leest dit artikel in 6 minuten

Stel je eens voor: je werkt aan die ene geweldige webapplicatie. Je hebt uren besteed aan het polijsten van de gebruikersinterface. Alles werkt perfect op jouw lokale machine. Maar dan… de eerste keer dat een gebruiker (of misschien een collega in een andere browser) iets probeert, hapert het. Die kleine, onverwachte fouten kunnen je dag flink verpesten, nietwaar?

Dit is precies waarom we het vandaag over Playwright testing hebben. Het is niet zomaar een tool; het is jouw persoonlijke bewaker van kwaliteit. Het helpt je om met een gerust hart te slapen, wetende dat jouw creatie betrouwbaar presteert voor iedereen. Laten we samen deze krachtige manier van testen ontdekken en zien hoe het jouw ontwikkelworkflow transformeert.

Wat is Playwright en waarom zou je het moeten omarmen?

Misschien heb je al geëxperimenteerd met andere testframeworks. Je weet hoe tijdrovend handmatig testen kan zijn. Je klikt, je typt, je controleert de resultaten. En dan moet je dit proces keer op keer herhalen na elke kleine wijziging. Dat is waar Playwright, ontwikkeld door Microsoft, echt het verschil maakt.

Playwright is een moderne, krachtige bibliotheek voor end-to-end (E2E) testen. Het is ontworpen om sneller, betrouwbaarder en veelzijdiger te zijn dan veel van zijn voorgangers. Het mooie is dat je één script schrijft, en Playwright zorgt ervoor dat jouw applicatie op alle grote browsers draait: Chromium (Chrome, Edge), Firefox en WebKit (Safari).

Je vraagt je misschien af: “Wat maakt Playwright anders dan bestaande tools voor browserautomatisering?” Het antwoord ligt in de architectuur. Playwright communiceert rechtstreeks met de browser via een stabiel, modern protocol. Dit zorgt voor razendsnelle uitvoering en minder ‘flaky’ tests (tests die soms slagen en soms falen zonder duidelijke reden).

Playwright testingDe voordelen die jij als ontwikkelaar ervaart

Wanneer je Playwright in je project integreert, merk je direct een aantal fijne verbeteringen in jouw dagelijkse werk. Het gaat niet alleen om het vinden van bugs; het gaat om het stroomlijnen van jouw proces.

  • Cross-browser testen wordt eenvoudig: Je hoeft niet langer aparte scripts te schrijven voor Chrome en Firefox. Eén keer schrijven, overal testen. Dit bespaart jou enorm veel tijd.
  • Snelle uitvoering: Playwright is ontgesneden voor snelheid. Jouw tests draaien sneller, wat betekent dat je sneller feedback krijgt over de gezondheid van jouw code.
  • Betere debugging mogelijkheden: Als een test faalt, wil je direct zien wat er misging. Playwright biedt fantastische tools, zoals automatische screenshots en video-opnames van de testsessie. Dit maakt het opsporen van die lastige UI-fouten een stuk minder frustrerend.
  • Ondersteuning voor moderne webfuncties: Denk aan API-requests, mobiele emulatie en het testen van ingewikkelde interacties zoals drag-and-drop. Playwright handelt dit allemaal elegant af.

Aan de slag met Playwright: Jouw eerste stappen

Het klinkt misschien intimiderend, zo’n krachtig testframework. Maar de initiële setup van Playwright is verrassend eenvoudig. Je installeert het via npm, de pakketbeheerder van Node.js, en vervolgens installeert het de benodigde browser-binaries. Als je meer wilt weten over hoe je de prestaties van je applicaties kunt verbeteren, lees dan meer over software performance testing.

De magie begint met het schrijven van de testcode. Playwright gebruikt een simpele, intuïtieve API. Je importeert de functionaliteit en je bent klaar om te beginnen met het simuleren van gebruikersinteracties.

Installatie en initiatie

Om te starten, voer je simpelweg dit commando uit in jouw projectmap:

npm init playwright@latest

Dit commando stelt je een paar vragen en installeert alle benodigde pakketten. Het genereert ook een basisstructuur voor jouw testbestanden. Je ziet meteen de focus op Typescript of Javascript, afhankelijk van jouw voorkeur.

VIDEO: Get started with end-to-end testing: Playwright

Het schrijven van een basistest

Laten we een voorbeeld bekijken van het testen van een eenvoudige login-flow. Je wilt controleren of de gebruiker na het invoeren van de juiste gegevens naar de dashboardpagina gaat. Dit is hoe dat er in Playwright uit kan zien:

  1. Navigeren: Je vertelt de browser waar hij naartoe moet gaan met de page.goto() methode.
  2. Vinden en invullen: Je gebruikt krachtige selectors om elementen op de pagina te vinden (bijvoorbeeld op basis van tekstinhoud of een label) en vult de velden in met page.fill().
  3. Klikken: Je simuleert de klik op de inlogknop met page.click().
  4. Verifiëren: Je controleert of de navigatie is gelukt door te kijken naar de URL of een element op de nieuwe pagina met page.expectURL() of page.expectLocator().

Door deze stappen te automatiseren, bouw je aan een robuuste set Playwright E2E tests die jouw applicatie voortdurend controleren op correcte werking.

Test-driven development met Playwright

Veel ontwikkelaars vinden hun ware kracht wanneer ze Playwright gebruiken in een Test-Driven Development (TDD) aanpak. Bij TDD schrijf je de test *voordat* je de code schrijft die de test moet laten slagen. Dit dwingt jou om na te denken over de gebruikerservaring en de verwachte uitkomst, nog voordat je ook maar één regel van de feature code hebt geschreven.

Dit proces verbetert de structuur van jouw applicatie enorm. Je bouwt functionaliteit die vanaf het begin testbaar is. Dit is een gamechanger voor het ontwikkelen van betrouwbare webapplicaties met Playwright.

De kracht van ‘Locators’

Een van de beste functies van Playwright zijn de ‘Locators’. Dit zijn mechanismen waarmee je elementen op de pagina kunt vinden. In plaats van vast te houden aan fragiele CSS-selectors, moedigt Playwright jou aan om te selecteren op basis van wat de gebruiker ziet. Denk aan selectors zoals:

  • “Vind de knop met de tekst ‘Verzenden’.”
  • “Zoek het tekstveld met het label ‘Wachtwoord’.”

Deze Playwright selectors zijn veel veerkrachtiger tegen veranderingen in de interne HTML-structuur. Als je de HTML-klassen aanpast, blijven jouw tests vaak werken, omdat je nog steeds selecteert op basis van de gebruikerservaring. Dat is precies wat je wilt bij het onderhouden van een groter project.

Geavanceerde technieken: Meer dan alleen klikken

Playwright is niet beperkt tot het simuleren van standaard muis- en toetsenbordacties. Het biedt een scala aan krachtige functies die je helpen complexe scenario’s te dekken.

Belangrijke leesstof

Verdiep je verder in Playwright testing met een aantal zorgvuldig geselecteerde links.

API-mocking en netwerkinteractie

Vaak zijn jouw UI-tests afhankelijk van externe API-aanroepen. Als die externe dienst traag is of tijdelijk niet beschikbaar, faalt jouw test, ook al is jouw UI perfect. Met Playwright kun je netwerkverzoeken onderscheppen en ‘mocken’. Je vertelt Playwright: “Wanneer de applicatie om gebruikersdata vraagt, geef dan dit vaste, voorspelbare antwoord terug.”

Dit maakt jouw tests extreem snel en isoleert ze volledig van externe afhankelijkheden. Je richt je puur op de front-end logica. Dit is cruciaal voor het schrijven van snelle en stabiele automatiseringstests met Playwright.

Emuleren van mobiele apparaten

Tegenwoordig bezoekt een groot deel van jouw gebruikers jouw site via een smartphone. Je wilt zeker weten dat alles er goed uitziet en functioneert op kleinere schermen. Playwright maakt dit eenvoudig door middel van apparaatemulatie. Je configureert de viewport grootte, de user agent, en zelfs of touch-events gesimuleerd moeten worden.

Je kunt zo gemakkelijk Playwright responsive design testen uitvoeren, zonder dat je fysiek tien verschillende telefoons naast je hoeft te hebben liggen. Dit bespaart tijd en garandeert een betere mobiele ervaring voor jouw bezoekers.

Hoe integreer je Playwright in jouw CI/CD pijplijn?

Het mooiste van geautomatiseerde testen is wanneer ze automatisch draaien. Continuous Integration / Continuous Delivery (CI/CD) is de omgeving waarin jouw Playwright tests echt schitteren. Zodra jij code naar jouw Git-repository pusht, kan jouw CI-server (zoals GitHub Actions, GitLab CI, of Jenkins) automatisch de Playwright tests starten.

Als er een test faalt, krijg je direct een melding. Dit betekent dat problemen vroegtijdig worden opgemerkt, vaak voordat ze de staging-omgeving bereiken. Het implementeren van Playwright in CI/CD zorgt ervoor dat de kwaliteit een continue inspanning is, geen jaarlijkse schoonmaakbeurt.

Je configureert de omgeving om de nodige browsers te voorzien en voert dan simpelweg het commando uit om jouw testsuite te starten. De resultaten worden teruggekoppeld, en jij weet precies welke wijziging de boosdoener was.

Veelgestelde vragen over Playwright

Wat is het verschil tussen Playwright en Selenium?

Playwright is moderner en is ontworpen voor de hedendaagse webapplicaties. Het ondersteunt alle moderne browsers natief en heeft een eenvoudigere, snellere architectuur. Selenium is ouder en vereist vaak meer configuratie en externe drivers voor verschillende browsers.

Kan ik Playwright gebruiken met talen anders dan Javascript/Typescript?

Hoewel Javascript en Typescript de meest gebruikelijke talen zijn, biedt Playwright officiële ondersteuning voor Python, Java en .NET. Je kiest de taal die het beste bij jouw team en project past.

Hoe voorkom ik ‘flaky’ tests met Playwright?

Playwright is ontworpen om ‘flakiness’ te minimaliseren door automatisch te wachten op elementen om interactief te worden voordat er acties worden uitgevoerd. Gebruik de ingebouwde expect() methoden en wees specifiek met je locators om de kans op falen door timingproblemen te verkleinen.

Biedt Playwright functies voor visuele regressietests?

Ja, Playwright heeft ingebouwde functionaliteit om snapshots van pagina’s te maken. Je kunt deze vergelijken met eerdere snapshots om visuele veranderingen te detecteren, wat handig is voor het controleren van de UI op ongewenste wijzigingen.

Geef een reactie