Comment tester de bout en bout votre application à l'aide de Cypress.io

Image tirée de https://unsplash.com/@kellysikkema
Image tirée de https://unsplash.com/@kellysikkema

Dans cet article, vous apprendrez:





  • Qu'est-ce que Cypress et quand l'utiliser





  • Bases des tests avec Cypress





  • Commandes Cypress avancées





  • Interagir avec les éléments de l'interface utilisateur





  • Meilleures pratiques d'utilisation de Cypress






introduction

Pour tester vos applications, vous devez suivre les étapes suivantes:





  • Lancez l'application





  • Attendez que le serveur démarre





  • ( , )





  • , ( , ..)









. , .





Cypress. Cypress , , :





  • ( , ..)













!  Cypress .  , , , .





, — , . Cypress .





, Cypress, .






Cypress

, :





Initialisation du projet

, Cypress:





Installation de Cypress
Cypress

 . Linux,   ,  Cypress NPM.





, Cypress , :





Ouverture de Cypress
Cypress

(Test Runner):





Interface de Test Runner
Test Runner

.






Cypress

Cypress ,   cypress/integration



.  :





Aller à cyprès / intégration
cypress/integration

JavaScript  basicTest.js



:





Créer un fichier JavaScript
JavaScript

Cypress, Test Runner :





Mise à jour de la structure des fichiers en temps réel

.





/cypress/integration/basicTest.js



:





Le code du fichier basicTest.js
basicTest.js
  • 1:  describe



    Cypress .





  • 2:  it



    , .





  • 3: .  , 2 + 2 4.  false



    , .





,  basicTest.js



Cypress.





Cliquer sur basicTest.js dans Test Runner
basicTest.js Test Runner

:





Résultat du test

! , .





, ?   /cypress/integration/basicTest.js



   describe



:





Code à ajouter à basicTest.js
basicTest.js
  • 2: 4 5 10, . , .





.  :





Le résultat de notre deuxième test

, .  , .





basicTest.js



  :





Code à ajouter à basicTest.js
basicTest.js
  • 2: 5 5   100, .





:





Résultat du test: réussi!
: !

!  .  expect



  BDD (behavior-driven) .  , (test-driven assertions).





 /cypress/integration/basicTest.js



:





(test-driven assertions) assert

TDD  assert



.





 basicTest.js



:





  • 2:  name



      age



    .





  • 6:  isObject



    person



    .   true



    ,  value is object



    .  , .





  • 10: ,  name



      .





  • 14: ,  name



      .





.  :





Le résultat de l'exécution de notre test

!  .  Cypress.





 basicTest.js



:





-

 Demoblaze , , .





 /cypress/integration/



 basicCommandsTest.js



.  :





Code pour basicCommandsTest.js
basicCommandsTest.js
  • 3:  visit



    , Cypress - Demoblaze.





 basicCommandsTest.js



Test Runner:





Cliquez sur basicCommandsTest.js dans Test Runner
basicCommandsTest.js Test Runner

:





!  .  Cypress.





 basicCommandsTest.js



:






Cypress:

. , , HTML Cypress.





Cypress   JQuery  -.





, myButton



id



, :





Obtenir un élément via l'identifiant
id

, myButton



, :





Obtenir un élément via un nom de classe

.





  The-Internet  .  -   / .





« ».





Page de test

DevTools, ,  button



 onclick



,  addElement()



.





Capture d'écran de DeveloperTools
DeveloperTools

  :





Identification de l'article

 /cypress/integration



 runningClickCommand.js



.  :





  • 2: -.





  • 6: button



    .





. :





Sortie du résultat

, !  , ,  Add Element



.





.





  The-Internet’s login.  .





Capture d'écran du site à tester
Capture d'écran de DeveloperTools
DeveloperTools
Capture d'écran de DeveloperTools
DeveloperTools

username



 id



 username



,  password



 id



 password



.  , Login



 type



 submit



.  ,  username



 password



,   JQuery id



:





Identifier un élément par son identifiant
id

,  button



,    , :





 /cypress/integration



 runningTypeCommand.js



.  :





  • 3: .





  • 6:  username



     type



      ,  tomsmith



    .





  • 7:  password



     SuperSecretPassword



    .





  • 10: «».





.  :





Sortie du résultat de l'exécution du code

!  .





  The-Internet .





DevTools:





Outils de développement
Developer Tools

 type



  checkbox



.  ,   form



 id



 checkboxes



.    JQuery -:





Identifier nos cases à cocher

 /cypress/integration/



 runningCheckCommand.js



:





  • 4: ,  check



    , .





  • 7: Cypress .





  • 8: .   uncheck



    , .





. :





Résultat du test

!  .  Cypress.





.  , HTML, ,  ul



 li



.





 should



.     — The-Internet’s Add Element





Capture d'écran de la page testée
Outils de développement
Developer Tools

 Delete



 added-manually



.   button



:





Notre approbation

:





Recevoir un article, puis approuver

, :





Notre approbation

:





Recevoir un article, puis approuver

 /cypress/integration/runningClickCommand.js



:





Code pour exécuterClickCommand.js
runningClickCommand.js
  • 1:  added-manually



    .  , (have.length)



      .





  • 3:  Add Element



    , , (have.text)



       Add Element



    .





.  :





Résultat du lancement

!  .   each



.





 cypress/integration/runningClickCommand.js



:





each

   The-Internet’s Add Elements page:





Capture d'écran du site de test

,  Delete



.  ;  ,  Delete



  . , .





-  each



. , .   Delete



 click



.





Developer Tools:





 Delete



 class



 added-manually



.       each



, :





Récupérer un élément et utiliser chacun ensuite
each

 /cypress/integration/runningClickCommand.js



:





Code pour exécuterClickCommand.js
runningClickCommand.js
  • 2: ,  .added-manually



    .   $el



    .





  • 3: , Cypress.  .





:





Résultat de l'exécution du code

!  , .





:





:





  • 2: , Cypress,  Add Element



    20 .





.  :





Résultat de l'exécution du code

, - . !





, Cypress.





 cypress/integration/runningClickCommand.js



:






, .  :





Pas la meilleure structure

Test Runner :





Affichage de la structure du test dans le Test Runner
Test Runner

Cypress , .  , :





Bonne structure de projet

, :





:





Exemple de code

,     get



 type



.    ,  .





 cypress/support/commands.js



:





  • 1: ,  identifier



     data



    .





  • 2: , .





 .  /cypress/support/commands.js



.





:





Exemple de code

, .





«»

:





HTML  id



 first



.





Cypress .  , , :





 and



 should



.





Cypress

exec



  .  .





 localhost



, ,    Cypress.





Commandes du terminal

GitHub

GitHub





  • Cypress Tutorial Videos





  • End-To-End Testing With Cypress by codedamn





  • Real Confidence With Cypress





  • Best practices with Cypress: AssertJS Conference






Le test est une étape clé du processus de développement car il garantit le bon fonctionnement de votre application. Certains programmeurs préfèrent tester manuellement leurs programmes car l'écriture des tests prend beaucoup de temps et d'énergie. Heureusement, Cypress a résolu ce problème en permettant au développeur d'écrire des tests dans un court laps de temps.





Merci d'être venu jusqu'au bout! En cas de confusion, je vous conseille de jouer avec le code et de parcourir les exemples.








All Articles