Mange velger å automatisere tester på brukergrensesnittet (GUI) for å sikre at ende-til-ende funksjonaliteten virker som den skal. Tester på front-end laget tar gjerne for seg brukervennlighet og grunnleggende navigasjon, for å for eksempel sikre at lenker virker og elementer vises som de skal i nettleseren. De siste årene har to verktøy blitt stilt opp mot hverandre i en slags verktøykrig. Hva skal vi velge mellom Playwright og Cypress?
Synlige – men ikke alene
Playwright og Cypress får mye oppmerksomhet, men det er verdt å huske at det er flere alternativer for ende-til-ende tester på GUI’et. Selenium WebDriver har i lang tid hatt mange brukere, og mabl har i tillegg også støtte for kunstig intelligens og maskinlæring. TestComplete har også mange tilhengere. Ta derfor også disse med i betraktningen når du skal velge verktøy for GUI-testene dine.
Så hva er da grunnen til at Playwright og Cypress tar all oppmerksomheten for tiden? Trolig er en av grunnene at de er veldig like, men med spesielle egenskaper som finner tilhengere i hver leir. Applitools har i to runder arrangert en uhøytidelig webinarkonkurranse mellom to representanter fra leverandørene, Andrew Knight for Playwright og Filip Hric for Cypress:
Runde 1: https://applitools.com/event/cypress-versus-playwright-let-the-code-speak/
Runde 2: https://applitools.com/event/cypress-vs-playwright-rematch-webinar/
Hva har de felles?
Begge verktøyene er open-source verktøy for automatiserte ende-til-ende tester, kan kjøre også uten å ha nettleseren åpen (headless). Begge støtter mange av de samme nettleserne, og de har innebygd støtte for å vente til elementer vises for å hindre at testene feiler som følge av kjøretidsproblematikk. De kan begge integreres med andre verktøy, og støtter rapportering.
Så hva du skal velge, vil her avhenge av hvordan verktøyene velger å løse utfordringene.
Hva skiller dem?
Andrey Enin peker i en artikkel på Medium på at Cypress kanskje er mer fleksibelt, med et API som gjør det enkelt og raskt å lage tester. Til Playwrights fordel mener Enin at det er et mer teknisk verktøy som gir større mulighet for å kunne kjøre presise kommandoer. Ser vi på resultatene fra de uhøytidelige svarene fra webinarene over, kan vi også peke på noen mulige forskjeller:
- Cypress har en mer konsis og kompakt syntaks enn Playwright.
- Playwright har en enklere håndtering av «iframes» (dokumenter inne i et HTML-dokument), hvor en vanlig utfordring er å finne elementene der inne. Cypress bruker plugins for dette.
- Playwright foretrekkes for sin håndtering av varsler og meldinger til brukeren.
- Cypress har kanskje en liten fordel i sin håndtering av API-kall.
- Playwright får mange stemmer for sin støtte til ulike programmeringsspråk og nettlesere.
- Cypress vinner stemmer på å være nærmere front-end utvikleren.
- Playwright er betydelig mye raskere enn Cypress.
Vi ser altså at hva man skal velge vil i stor grad avhenge av hvilke egenskaper som veier mest, og da kanskje opp mot hvem som skal bruke verktøyet. Er det kun utviklerne som skal kunne bruke verktøyet, eller ønsker du at også testere skal bidra? Hvordan er systemene som verktøyet skal støtte satt opp, og i hvor stor grad trenger du variasjon i programmeringsspråk og nettlesere? I hvor stor grad ønsker du å kunne kjøre tester parallelt og hvor mye tid er du villig til at verktøyet bruker? Egenskaper med dokumentasjon og rapportering er også områder hvor alle verktøyene skiller seg fra hverandre.