Como testar seu aplicativo de ponta a ponta usando Cypress.io

Imagem de https://unsplash.com/@kellysikkema
Imagem de https://unsplash.com/@kellysikkema

Neste artigo, você aprenderá:





  • O que é Cypress e quando usá-lo





  • Noções básicas de teste usando Cypress





  • Comandos Cypress avançados





  • Interagindo com os elementos da interface do usuário





  • Melhores práticas usando Cypress






Introdução

Para testar seus aplicativos, você precisa realizar as seguintes etapas:





  • Inicie o aplicativo





  • Espere o servidor iniciar





  • ( , )





  • , ( , ..)









. , .





Cypress. Cypress , , :





  • ( , ..)













!  Cypress .  , , , .





, — , . Cypress .





, Cypress, .






Cypress

, :





Inicialização do projeto

, Cypress:





Instalando Cypress
Cypress

 . Linux,   ,  Cypress NPM.





, Cypress , :





Abertura do Cypress
Cypress

(Test Runner):





Interface do executor de teste
Test Runner

.






Cypress

Cypress ,   cypress/integration



.  :





Vá para cipreste / integração
cypress/integration

JavaScript  basicTest.js



:





Criação de um arquivo JavaScript
JavaScript

Cypress, Test Runner :





Atualização da estrutura do arquivo em tempo real

.





/cypress/integration/basicTest.js



:





O código para o arquivo basicTest.js
basicTest.js
  • 1:  describe



    Cypress .





  • 2:  it



    , .





  • 3: .  , 2 + 2 4.  false



    , .





,  basicTest.js



Cypress.





Clicar em basicTest.js no Test Runner
basicTest.js Test Runner

:





Resultado da execução do teste

! , .





, ?   /cypress/integration/basicTest.js



   describe



:





Código para adicionar a basicTest.js
basicTest.js
  • 2: 4 5 10, . , .





.  :





O resultado do nosso segundo teste

, .  , .





basicTest.js



  :





Código para adicionar a basicTest.js
basicTest.js
  • 2: 5 5   100, .





:





Resultado do teste: sucesso!
: !

!  .  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



      .





.  :





O resultado da execução de nosso teste

!  .  Cypress.





 basicTest.js



:





-

 Demoblaze , , .





 /cypress/integration/



 basicCommandsTest.js



.  :





Código para basicCommandsTest.js
basicCommandsTest.js
  • 3:  visit



    , Cypress - Demoblaze.





 basicCommandsTest.js



Test Runner:





Clique em basicCommandsTest.js no Test Runner
basicCommandsTest.js Test Runner

:





!  .  Cypress.





 basicCommandsTest.js



:






Cypress:

. , , HTML Cypress.





Cypress   JQuery  -.





, myButton



id



, :





Obter um elemento por meio do id
id

, myButton



, :





Obter um elemento por meio de um nome de classe

.





  The-Internet  .  -   / .





« ».





Página de teste

DevTools, ,  button



 onclick



,  addElement()



.





Captura de tela do DeveloperTools
DeveloperTools

  :





Identificação do item

 /cypress/integration



 runningClickCommand.js



.  :





  • 2: -.





  • 6: button



    .





. :





Produzindo o resultado

, !  , ,  Add Element



.





.





  The-Internet’s login.  .





Captura de tela do site para teste
Captura de tela do DeveloperTools
DeveloperTools
Captura de tela do DeveloperTools
DeveloperTools

username



 id



 username



,  password



 id



 password



.  , Login



 type



 submit



.  ,  username



 password



,   JQuery id



:





Identificar um elemento por seu id
id

,  button



,    , :





 /cypress/integration



 runningTypeCommand.js



.  :





  • 3: .





  • 6:  username



     type



      ,  tomsmith



    .





  • 7:  password



     SuperSecretPassword



    .





  • 10: «».





.  :





Saída do resultado da execução do código

!  .





  The-Internet .





DevTools:





Ferramentas de desenvolvimento
Developer Tools

 type



  checkbox



.  ,   form



 id



 checkboxes



.    JQuery -:





Identificando nossas caixas de seleção

 /cypress/integration/



 runningCheckCommand.js



:





  • 4: ,  check



    , .





  • 7: Cypress .





  • 8: .   uncheck



    , .





. :





Resultado da execução do teste

!  .  Cypress.





.  , HTML, ,  ul



 li



.





 should



.     — The-Internet’s Add Element





Captura de tela da página testada
Ferramentas de desenvolvimento
Developer Tools

 Delete



 added-manually



.   button



:





Nossa aprovação

:





Recebendo um item e, em seguida, aprovando

, :





Nossa aprovação

:





Recebendo um item e, em seguida, aprovando

 /cypress/integration/runningClickCommand.js



:





Código para runningClickCommand.js
runningClickCommand.js
  • 1:  added-manually



    .  , (have.length)



      .





  • 3:  Add Element



    , , (have.text)



       Add Element



    .





.  :





Resultado do lançamento

!  .   each



.





 cypress/integration/runningClickCommand.js



:





each

   The-Internet’s Add Elements page:





Captura de tela do site de teste

,  Delete



.  ;  ,  Delete



  . , .





-  each



. , .   Delete



 click



.





Developer Tools:





 Delete



 class



 added-manually



.       each



, :





Recuperando um elemento e usando cada um deles
each

 /cypress/integration/runningClickCommand.js



:





Código para runningClickCommand.js
runningClickCommand.js
  • 2: ,  .added-manually



    .   $el



    .





  • 3: , Cypress.  .





:





Resultado da execução do código

!  , .





:





:





  • 2: , Cypress,  Add Element



    20 .





.  :





Resultado da execução do código

, - . !





, Cypress.





 cypress/integration/runningClickCommand.js



:






, .  :





Não é a melhor estrutura

Test Runner :





Exibindo a estrutura de teste no Test Runner
Test Runner

Cypress , .  , :





Boa estrutura de projeto

, :





:





Código de amostra

,     get



 type



.    ,  .





 cypress/support/commands.js



:





  • 1: ,  identifier



     data



    .





  • 2: , .





 .  /cypress/support/commands.js



.





:





Código de amostra

, .





«»

:





HTML  id



 first



.





Cypress .  , , :





 and



 should



.





Cypress

exec



  .  .





 localhost



, ,    Cypress.





Comandos de Terminal

GitHub

GitHub





  • Cypress Tutorial Videos





  • End-To-End Testing With Cypress by codedamn





  • Real Confidence With Cypress





  • Best practices with Cypress: AssertJS Conference






O teste é uma etapa importante no processo de desenvolvimento porque garante que seu aplicativo funcione corretamente. Alguns programadores preferem testar manualmente seus programas porque escrever testes exige uma quantidade significativa de tempo e energia. Felizmente, o Cypress resolveu esse problema permitindo que o desenvolvedor escrevesse testes em um curto espaço de tempo.





Obrigado por chegar ao fim! Se você sentir alguma confusão, eu aconselho você a brincar com o código e passar pelos exemplos.








All Articles