Testen met Cypress.io

Cypress.IO is een ‘End to End’ (E2E) frontend test tool. De testtool is open source en daardoor gratis te gebruiken. Het is eenvoudig om met behulp van Cypress snel E2E test scenario’s op te stellen en uit te voeren. Het runnen van de testen kan via de Cypress app, via de command line of via een CI/CD tool.

Cypress biedt ook een dashboard waarop testresultaten getoond worden, en waarmee inzicht gekregen wordt in verschillende aspecten van de testruns zoals de doorlooptijd van de testen. Ook biedt het analyses over veel voorkomende fouten, vaak falende testen en flaky testen.

Waarom kiezen wij voor Cypress.IO?

In de theorie over testautomatisering wordt bij E2E testen vaak aangeraden slechts een beperkt aantal van deze testen uit te voeren. Deze testen zijn vaak traag, onbetrouwbaar (flaky) en moeilijk onderhoudbaar. Cypress is anders, deze volledig nieuwe tool is anders dan de meeste andere test automatiseringstools niet gebaseerd op Selenium. Cypress draait binnen de te testen applicatie, hierdoor heeft het toegang tot alle objecten en velden. Dit zorgt voor betere en snellere testen.

Enkele voordelen van Cypress:

  • De testen in Cypress zijn goed leesbaar voor ontwikkelaars, testers en de klant
  • Voor het opzetten en uitvoeren van de testen zijn geen andere tools nodig
  • De testen zijn stabiel, o.a. door een automatisch ingebouwde wait. Natuurlijk is het ook mogelijk om in Cypress flaky testen te schrijven, het dashboard helpt om flaky testen te identificeren.
  • Cypress voert de testen veel sneller uit dan de meeste andere tools
  • Analyse en debugging is eenvoudig. Waar andere tools de mogelijkheid bieden om een screenshot te nemen bij een falende test kan je met Cypress “tijdreizen” door je test en daarbij in elke stap de staat van de DOM inzien.
  • Stubben en mocken van network request is eenvoudig met behulp van mixtures
  • Cypress is makkelijk te integreren met diverse CI/CD tools
  • De documentatie van Cypress is uitgebreid en duidelijk, voor veel features zijn ook GitHub projecten met voorbeelden beschikbaar
  • Cypress is volop in ontwikkeling. Regelmatig komt er een nieuwe versie uit met nieuwe functionaliteiten en/of bugfixes. Ook zijn er steeds meer plugins beschikbaar, zoals bijvoorbeeld de AXE plugin.

Hoe wij werken met Cypress.IO

Omdat wij veel werken in een microservices architectuur, waar de verschillende onderdelen met elkaar integreren maar wel los deployable units zijn:

  • Maken we veel gebruik van fixtures, en testen we daarnaast een aantal Customer Journey waarin we de services niet mocken maar integreren
  • Maken we gebruik van Docker containers, en zijn de testen onderdeel van onze CI/CD pipelines in Wercker of Gitlab
  • Pushen we resultaten en coverage metingen naar sonarcloud voor analyses
  • Gebruiken we plugins zoals cypress-axe en cypress-lighthouse