Cypress, a new kid on the block

Brightest > News > Cypress, a new kid on the block

Cypress, a new kid on the block

Posted by: Koen
Category: Automation Thursday, Knowledge

De laatste jaren schakelen meer en meer bedrijven over op een agile manier van werken, dit stelt hen in staat om meerdere keren per jaar te releasen, sommigen wekelijks of zelfs dagelijks.  Deze evolutie is enkel mogelijk geweest doordat application development drastisch is gewijzigd.  Testing daarentegen is zo goed als niet meegeëvolueerd.  Bij veel van deze bedrijven worden nog steeds heel wat testen manueel uitgevoerd door een QA Team.  Een aantal bedrijven heeft de stap naar test automation wel al gezet, maar ook in test automation zien we weinig evolutie, één van de grootste spelers op de markt (misschien wel dé grootste) is nog steeds Selenium en dit ondanks de geringe updates die ze uitvoeren.  Daar wil Cypress nu verandering in brengen.

Selenium communiceert rechtstreeks met de browser en gebruikt daarvoor de native support van de browser zelf, waardoor je de browser kan besturen.  Leren werken met Selenium vergt wel enige technische kennis en ervaring, maar daartegenover staat wel dat Selenium een grote community van actieve users heeft.  Bovendien worden meerdere talen gesupporteerd, zoals Java, C#, PHP, Python en Ruby.  Ook het feit dat het werkt op de meest populaire browsers is een groot pluspunt.  Hierdoor is Selenium ondertussen goed ingeburgerd bij test automaters en zijn veel open-source of custom designed frameworks gebaseerd op Selenium.  Bovendien zijn er ook veel third-party tools die Selenium ondersteunen, denk maar aan AppliTools voor visual test automation en Sauce Labs, BrowserStack en CrossBrowserTesting voor cloud based test automation en nog vele anderen.

Cypress is een open-source front-end testing tool, maar waar liggen dan de verschillen ten opzicht van bijvoorbeeld Selenium?  In tegenstelling tot Selenium is Cypress heel eenvoudig te installeren, alle drivers en dependencies worden automatisch geïnstalleerd en ingesteld.  Bovendien is Cypress meer dan een library, het is een robuust test automation framework.  De manier waarop Cypress werkt maakt het eerder een grootschalig unit test framework, gemaakt door developers voor developers.  Een heel belangrijk verschil met Selenium is de manier manier waarop de interactie met de browser wordt opgezet.  Zonder al te technisch uit te weiden, kan je stellen dat Selenium communiceert met de browser via HTTP, waardoor het onderhevig is aan mogelijke vertragingen. Cypress daarentegen heeft zijn eigen mechanisme om de browser te manipuleren en werkt rechtstreeks in de browser, dus zonder netwerk communicatie, hierdoor werkt Cypress significant sneller.  Nadelig aan Cypress is dat het momenteel nog maar één programmeertaal ondersteunt, namelijk Javascript, en dat enkel Chrome wordt ondersteund.

De Cypress user interface maakt het heel eenvoudig om testen te ontwikkelen en te debuggen.  Maar daarnaast biedt het ook nog vele andere features, zoals bijvoorbeeld de Time Travel feature waarbij je de uitgevoerde testen kan doorlopen en aan de hand van snapshots makkelijk kan volgen wat er exact gebeurde, de automatische screenshots bij failure, automatic waits waardoor je zelf geen waits en sleeps moet toevoegen aan je test om deze stabiel te maken.  Ook een aantal functionaliteiten die vaak gebruikt worden bij unit testing zijn beschikbaar, zoals spies, stubs en clocks.  Al deze features staan grondig beschreven in hun online documentatie.  Bovendien staat er op hun website nog veel ander nuttige info over het gebruik van Cypress en Docker, verschillende beschikbare plugins, tutorials en examples.

In bepaalde specifieke gevallen kan Cypress weldegelijk een goed alternatief zijn voor Selenium, maar of Cypress de markt kan veroveren is nog maar de vraag.  Alvast positief is dat andere partijen (bijvoorbeeld AppliTools) rekening houden met Cypress en er plugins voor bouwen.  De toekomst zal het uitwijzen…

Voor meer informatie over Cypress kan je terecht op hun website.