Site icon Developpeur / integrateur web (Growth Hacker)

Cypress c’est quoi ?

A quoi sert Cypress ?
Comment je peux l’utiliser sur mon site internet, solution saas ?
Nous allons nous efforcer de répondre à ces questions dans cet article.

Test unitaire

Un test unitaire va vous permettre de vérifier des unités individuelles (1 fonction unique, 1 class, …). Pour cela vous fournissez 1 entrée et vérifiez que la sortie est bien conforme au résultat attendu.
NB : une fonction courte = un test unitaire simple 🙂

Cypress n’est pas là pour réaliser des tests unitaires.

Test d’intégration

Vérifier que l’ensemble du code fonctionne correctement.
Ici on ne teste plus uniquement une fonction, classe, etc …
Mais la globalité.

Test unitaire = individuellement cela fonctionne.
Test d’intégration = MAIS, l’ensemble ne fonctionne pas.
2 tests unitaires, 0 test d’intégration.
Test unitaire VS Test d’intégration.

Test fonctionnel

Aussi appelé « Test de bout en bout », « End to end » ou « e2e ».

Il s’agit des tests que Cypress va s’occuper.
Donc avec Cypress vous allez pouvoir vérifier des scénarios complets en contexte réel.

Exemple vous pouvez réaliser un scénario qui va :

Exemple pour un site eCommerce (back) :

Exemple pour un site eCommerce (front) :

Cypress vous permet de réaliser cela, ainsi que :

Les sites sont de plus en plus complexe et demande un temps conséquent pour la réalisation de tests. Les tests fonctionnels sont importants car ils sont les seuls tests vous permettant de vérifier le bon déroulement de l’application d’un point de vue métier.

Je dois faire quoi alors ?

https://www.eewee.fr/wp-content/uploads/2020/03/installing-cli-cypress.webm
Installer Cypress

1er Etape : Vous devez installer Cypress.
npm install cypress
En savoir +

https://www.eewee.fr/wp-content/uploads/2020/03/writing-tests-cypress.webm
Ecrire vos tests Cypress

2ème Etape : Vous devez écrire vos tests Cypress.
Cf documentation

https://www.eewee.fr/wp-content/uploads/2020/03/running-tests-cypress.webm
Lancer vos tests Cypress

3ème Etape : Exécuter vos tests Cypress depuis l’interface graphique ou en headless (=uniquement dans votre terminal).

https://www.eewee.fr/wp-content/uploads/2020/03/dashboard-cypress.webm
Dashboard Cypress

4ème Etape : Consulter votre dashboard pour voir les points bloquants.

Commandes Cypress à retenir

Pour exécuter les tests :

$(npm bin)/cypress run
# ou
./node_modules/.bin/cypress run
# ou
npx cypress run
# ou 
npm run cypress:open

Pour exécuter les tests sur le navigateur Firefox :

cypress run --browser firefox

Pour exécuter le test lorem.js :

cypress run --spec "cypress/integration/lorem.js"

Pour supprimer le cache de Cypress :

cypress cache clear
cypress install

Pour exécuter les tests Cypress + Dashboard :

cypress run --record --key votre_key_a_placer_ici

# tip - pour ne pas indiquer la key à chaque fois :
# export CYPRESS_RECORD_KEY=votre_key_a_placer_ici
# cypress run --record

En savoir +

Fichier environnement Cypress

Fichier cypress.json :
projectId est utilisé pour le Dashboard « made in Cypress ».

{
   "viewportWidth": 1280,
   "viewportHeight": 1020,
   "baseUrl": "http://urlDeVotreSite.com",
   "defaultCommandTimeout": 20000,
   "videoUploadOnPasses": false,
   "env" : {
       "maVariable01"  : "aaa",
       "maVariable02"  : "bbb",
       "maVariable03"  : "ccc"
   },
   "projectId": "xxxxxx"
}

Fichier cypress.env.json :
Ce fichier vous permet de surcharger la config de base cypress.json.

{
    "maVariable01"  : "aaa",
    "maVariable02"  : "bbb",
    "maVariable03"  : "ccc"
}

Exemple de code Cypress

Attendre 2 secondes :

cy.wait(2000)

Attendre 10 secondes que la class soit trouvée :

cy.get('.maClass', { timeout: 10000})

Remplir un champ :

cy.get("#formClient .email").type("contact@tld.com")

Remplir un champ et soumettre le formulaire :

cy.get("#formClient .email").type("contact@tld.com{enter}")

Soumettre un formulaire :

cy.get("#formClient").submit()

Trouver un champ disposant d’un data-xxx :

// <div data-xxx="abc">Lorem ipsum</div>
cy.get('[data-xxx="abc"]')

Voir plus d’exemples de code Cypress

Utiliser un faker avec Cypress

Installer le faker :

yarn add cypress faker --dev

Importer le dans votre code :

import faker from "faker"

L’utiliser dans votre code :

faker.internet.email()
faker.internet.password()

Documentation faker : Github, Marak, Generator.

Autres solutions de test fonctionnel

Puppeteer est une solution intéressante à suivre, dans le cas où Cypress a attriré votre attention sur la réalisation de test e2e :

Quitter la version mobile