<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Samuel Freitas</title>
    <description>The latest articles on DEV Community by Samuel Freitas (@samfreitasxs).</description>
    <link>https://dev.to/samfreitasxs</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1406012%2F3d7d2abb-d698-40b8-899f-4b55759d578c.jpeg</url>
      <title>DEV Community: Samuel Freitas</title>
      <link>https://dev.to/samfreitasxs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/samfreitasxs"/>
    <language>en</language>
    <item>
      <title>Cypress Tutorial: A Comprehensive Guide</title>
      <dc:creator>Samuel Freitas</dc:creator>
      <pubDate>Wed, 03 Apr 2024 21:59:44 +0000</pubDate>
      <link>https://dev.to/samfreitasxs/cypress-tutorial-a-comprehensive-guide-5406</link>
      <guid>https://dev.to/samfreitasxs/cypress-tutorial-a-comprehensive-guide-5406</guid>
      <description>&lt;p&gt;Cypress é um framework de testes, de código aberto e de fácil configuração.&lt;/p&gt;

&lt;p&gt;Totalmente baseado em uma nova arquitetura, isenta de outros frameworks de testes, o Cypress apresenta um painel próprio que exibe exatamente o que está acontecendo durante a execução dos testes. À medida que o script é escrito, é possível acompanhá-lo, auxiliando o Analista de Testes (QA) na visualização de quais partes do código necessitam de ajustes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quais testes podem ser feitos com Cypress?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cinco tipos de testes de software podem ser realizados com o framework. São eles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;End-to-End&lt;/li&gt;
&lt;li&gt;Interface de Usuário&lt;/li&gt;
&lt;li&gt;API’s&lt;/li&gt;
&lt;li&gt;Componentes&lt;/li&gt;
&lt;li&gt;Unidade&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Quais tecnologias podem ser usadas pelo Cypress?&lt;/strong&gt;&lt;br&gt;
Para realizar testes com o framework, as seguintes tecnologias podem ser utilizadas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JS&lt;/li&gt;
&lt;li&gt;Javascript/Typescript&lt;/li&gt;
&lt;li&gt;CoffeScript&lt;/li&gt;
&lt;li&gt;Moca&lt;/li&gt;
&lt;li&gt;Chai&lt;/li&gt;
&lt;li&gt;Assíncrono&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Iniciando um projeto com o Cypress&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Para um Projeto Cypress, antes de qualquer coisa, é preciso preparar o ambiente com Node.JS e Visual Studio Code (VS Code). Em seguida, crie uma pasta com o nome do seu projeto e inicie um console para executar o comando: &lt;strong&gt;npm init –y&lt;/strong&gt;. Ele criará o arquivo &lt;strong&gt;package.json&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2gurf8mctuc3rbyz6izb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2gurf8mctuc3rbyz6izb.png" alt="Image description" width="427" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Em seguida, no console, execute o comando: code. para abrir o projeto no VS Code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8sou8pc9ien0nhwvx8v1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8sou8pc9ien0nhwvx8v1.png" alt="Image description" width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Com o projeto criado, iremos abrir o terminal do VS Code e executar o comando: &lt;strong&gt;npm install cypress&lt;/strong&gt;, que é o comando para instalar o Cypress no nosso projeto. Em seguida, será possível visualizar a versão instalada do framework no arquivo &lt;strong&gt;package.json&lt;/strong&gt;, e nele iremos adicionar o script &lt;strong&gt;“cypress:open”:”cypress open”&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F94hoqz1nz0fbi1p5djxh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F94hoqz1nz0fbi1p5djxh.png" alt="Image description" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No terminal do VS Code, execute o comando: &lt;strong&gt;npm run cypress:open&lt;/strong&gt;. Com o dashboard aberto, o projeto será iniciado com testes exemplos do próprio Cypress. Se você clicar em algum arquivo &lt;strong&gt;.spec.js&lt;/strong&gt;, ele já irá executar os testes desse arquivo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7os3gskbdplcqxylowaz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7os3gskbdplcqxylowaz.png" alt="Image description" width="800" height="572"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frnplg6zaukbhucyrv35p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frnplg6zaukbhucyrv35p.png" alt="Image description" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Entendendo a Estrutura&lt;/strong&gt;&lt;br&gt;
Para utilizar o Cypress da forma correta, é importante compreender alguns aspectos da sua estrutura, como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Normalmente os arquivos de testes ficam na pasta integration;&lt;/li&gt;
&lt;li&gt;Na pasta support fica o arquivo js que é o arquivo que guardara o caminho do seu elemento de tela;&lt;/li&gt;
&lt;li&gt;O arquivo commands é utilizado para criação de comandos do seu projeto;&lt;/li&gt;
&lt;li&gt;Na pasta fixture ficam os arquivos .json usados nos testes;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnts98u2qxqpxkoglsjys.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnts98u2qxqpxkoglsjys.png" alt="Image description" width="225" height="258"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O arquivo json é utilizado para configurações do projeto, por exemplo, a nossa baseUrl.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ofghha9ijccgxa6qv4m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ofghha9ijccgxa6qv4m.png" alt="Image description" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Criando um Arquivo de Testes&lt;/strong&gt;&lt;br&gt;
Para criarmos um arquivo de testes, basta adicionar um arquivo com nome do seu teste e com a extensão &lt;strong&gt;.spec.js&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpncqa3k513u7up4je016.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpncqa3k513u7up4je016.png" alt="Image description" width="292" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na estrutura, iremos adicionar o &lt;strong&gt;describe&lt;/strong&gt; para dar o contexto dos nossos testes, e o &lt;strong&gt;it&lt;/strong&gt; para criar o teste.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Principais comandos do Cypress&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Para facilitar o uso do framework, listarei agora alguns dos principais comandos do Cypress.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Para encontrar elementos em tela:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GET:&lt;/strong&gt; cy.get(‘[data-cy=name]’)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CONTAINS:&lt;/strong&gt; cy.contains(“Cadastrar”)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Para interagir com elementos de tela:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Type:&lt;/strong&gt;&lt;br&gt;
 utilizado para escrever&lt;br&gt;
cy.get(‘[data-cy=name]’).type(“Joaozinho”);&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Click:&lt;/strong&gt;&lt;br&gt;
 utilizado para clicar no elemento selecionado&lt;br&gt;
cy.get(locators.CADASTRO.btnCadastrar).click()&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Selecionar:&lt;/strong&gt;&lt;br&gt;
 utilizado para selecionar um elemento&lt;br&gt;
cy.get(Loc.CADASTRO.campoUF).select(“RS”);&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Check/Uncheck:&lt;/strong&gt;&lt;br&gt;
 utilizado para aplicar o check&lt;br&gt;
cy.get(‘[type=”checkbox”]’).check()&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Asserções para nossos testes:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Should&lt;/strong&gt;&lt;br&gt;
cy.get(locators.MENU.nomeUsuarioLogado).should(“contain.text”, “Joaozinho”);&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Expect&lt;/strong&gt;&lt;br&gt;
expect(response.body).has.property(“id”);&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exemplo de Teste Funcional&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Na imagem abaixo, podemos ver um exemplo de teste funcional no Cypress. No primeiro bloco realizamos as interações de um cadastro; no segundo clicamos no botão de cadastro que chama o método post; e no último bloco realizamos as validações do nosso teste.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbdxd3o51km7l51r1yhpl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbdxd3o51km7l51r1yhpl.png" alt="Image description" width="800" height="562"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exemplo de Estrutura de Teste de API&lt;/strong&gt;&lt;br&gt;
Nos testes de API, por sua vez, dividimos a estrutura do teste em três partes: na pasta test ficará o arquivo &lt;strong&gt;.spec.js&lt;/strong&gt;, na pasta &lt;strong&gt;request&lt;/strong&gt; ficará a estrutura da nossa requisição; e na pasta &lt;strong&gt;payload&lt;/strong&gt; fica o corpo de nossa requisição. Podemos ver esse exemplo nas imagens abaixo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd4ds0k8kzdejlrlqq6em.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd4ds0k8kzdejlrlqq6em.png" alt="Image description" width="357" height="236"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No nosso arquivo &lt;strong&gt;.spec&lt;/strong&gt; fica a validação do nosso teste.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvexuq98jvzf3m3nn1ks9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvexuq98jvzf3m3nn1ks9.png" alt="Image description" width="680" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exemplo de arquivo &lt;strong&gt;request&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwqy4wpp44lxvbzy8wnlm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwqy4wpp44lxvbzy8wnlm.png" alt="Image description" width="572" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exemplo de arquivo &lt;strong&gt;payload&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faye0735z8lrs3kwx1yz7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faye0735z8lrs3kwx1yz7.png" alt="Image description" width="219" height="127"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Espero ter esclarecido as principais dúvidas em relação ao Cypress. Se você quiser saber mais sobre o framework &lt;a href="https://docs.cypress.io/guides/overview/why-cypress"&gt;clique aqui&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>cypress</category>
      <category>testing</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
