SlideShare uma empresa Scribd logo
1 de 6
Baixar para ler offline
09/10/2023, 18:41 StackEdit
https://stackedit.io/app# 1/6
Introdução ao Cypress
O Cypress é uma ferramenta de teste de frontend que ajuda os desenvolvedores a
escrever testes para aplicativos da web. Ele foi projetado para tornar a escrita de testes
end-to-end, de integração e unitários mais fácil e rápida. Vamos abordar os conceitos
básicos do Cypress, como instalá-lo e como escrever e executar seus primeiros testes.
Vantagens do Cypress:
Instalação fácil e rápida.
Não depende do Selenium.
Roda testes diretamente no browser, o que resulta em testes mais rápidos.
Recarrega automaticamente os testes quando os arquivos são alterados.
Fornece uma interface interativa para visualizar os testes sendo executados.
Instalação e Configuração:
1. Instalando o Cypress via npm:
npm install cypress --save-dev
2. Abrindo o Cypress:
./node_modules/.bin/cypress open
Ao executar pela primeira vez, o Cypress criará uma estrutura de pastas com
exemplos de testes.
Estrutura de Pastas do Cypress:
cypress/
|-- fixtures/
|-- integration/
|-- plugins/
`-- support/
fixtures : Arquivos JSON usados para dados de teste.
integration : Testes que você escreverá.
plugins : Extensões ou plugins que você pode escrever ou adicionar.
support : Arquivos de comando e ajudantes reutilizáveis.
Escrevendo seu primeiro teste:
09/10/2023, 18:41 StackEdit
https://stackedit.io/app# 2/6
1. Dentro da pasta integration , crie um arquivo sample_spec.js .
2. Adicione o seguinte código:
describe('Meu Primeiro Teste', function() {
it('Visita a página do Kitchen Sink', function() {
cy.visit('https://example.cypress.io') // visita um URL
cy.contains('type').click() // encontra um elemento com o texto "type"
// Verifica a URL para garantir que ela inclui '/commands/actions'
cy.url().should('include', '/commands/actions')
})
})
3. Abra o Cypress e clique no arquivo de teste. O teste será executado e você poderá
ver os resultados.
Comandos úteis do Cypress:
cy.visit(url) : Visita uma URL.
cy.contains(content) : Procura um elemento com o conteúdo fornecido.
cy.click() : Clica em um elemento.
cy.should() : Faz uma asserção sobre o elemento ou comando anterior.
Conclusão:
O Cypress é uma ferramenta poderosa e moderna para testar aplicações da web. Ele
fornece uma forma rápida e confiável de garantir que seu aplicativo funcione como
esperado em diferentes cenários. Aprender a usar o Cypress pode melhorar
significativamente a qualidade e a confiabilidade de seus aplicativos.
A estrutura de um teste no Cypress é influenciada pelo Mocha, uma popular framework
de testes para JavaScript. Os principais componentes são describe , it , e os
comandos cy . Vamos detalhar essa estrutura:
1. describe e context :
Ambos são essencialmente a mesma função e são usados para agrupar testes
relacionados. Isso ajuda a organizar e descrever o conjunto de testes.
09/10/2023, 18:41 StackEdit
https://stackedit.io/app# 3/6
describe é o método tradicionalmente usado para agrupar testes em Mocha.
context é um alias para describe e pode ser usado da mesma maneira,
permitindo que os desenvolvedores escrevam seus testes de uma forma que
pareça mais legível ou semântica para certos cenários.
describe('Grupo de Testes', function() {
// ... testes aqui ...
});
OU
context('Grupo de Testes', function() {
// ... testes aqui ...
});
2. it :
Dentro de um bloco describe ou context , você define testes individuais usando it .
A função it descreve um único teste.
it('deve executar alguma funcionalidade', function() {
// ... código do teste aqui ...
});
3. Comandos cy :
Dentro de um teste ( it ), você utiliza os comandos do Cypress (todos começando com
cy ) para interagir com sua aplicação, fazer asserções, entre outras coisas.
cy.visit(url) : Navega para uma URL.
cy.get(selector) : Obtém um ou mais elementos DOM.
cy.click() : Clica em um elemento.
cy.type(text) : Digita em um elemento input ou textarea.
cy.should(...) : Faz uma asserção sobre o estado ou comportamento do
elemento anterior.
Exemplo:
09/10/2023, 18:41 StackEdit
https://stackedit.io/app# 4/6
it('deve preencher e enviar o formulário', function() {
cy.visit('/formulario')
cy.get('input[name=nome]').type('João')
cy.get('input[type=submit]').click()
cy.url().should('include', '/obrigado')
});
4. Hooks:
Existem também hooks que permitem definir comportamentos para serem executados
antes de um conjunto de testes ou antes de cada teste. Os mais comuns são:
before() : Roda uma vez antes de todos os testes no bloco.
after() : Roda uma vez depois de todos os testes no bloco.
beforeEach() : Roda antes de cada teste no bloco.
afterEach() : Roda depois de cada teste no bloco.
Exemplo:
describe('Hooks', function() {
before(function() {
// roda uma vez antes de todos os testes
})
after(function() {
// roda uma vez depois de todos os testes
})
beforeEach(function() {
// roda antes de cada teste
})
afterEach(function() {
// roda depois de cada teste
})
// ... testes aqui ...
});
Resumo:
09/10/2023, 18:41 StackEdit
https://stackedit.io/app# 5/6
Um teste típico no Cypress tem a seguinte estrutura:
describe('Descrição do Grupo de Testes', function() {
beforeEach(function() {
// Talvez algum código de configuração aqui
})
it('Descrição do Teste 1', function() {
// Código do teste 1
})
it('Descrição do Teste 2', function() {
// Código do teste 2
})
// ... mais testes ...
});
Vamos criar alguns testes básicos usando sites reais. Tenha em mente que sites reais
podem mudar a qualquer momento, o que significa que os testes podem falhar no futuro
se os elementos ou o comportamento do site mudarem. Para este exemplo, usaremos o
GitHub e o DuckDuckGo.
1. Testando a Busca no GitHub:
Vamos fazer um teste simples para verificar se a pesquisa no GitHub retorna resultados:
describe('GitHub Search', function() {
it('Deve retornar resultados para uma pesquisa', function() {
cy.visit('https://github.com')
cy.get('input[name=q]').type('Cypress{enter}')
cy.get('.repo-list li').its('length').should('be.gt', 0)
})
})
Este teste visita o GitHub, insere “Cypress” na barra de pesquisa, pressiona Enter e, em
seguida, verifica se há resultados na lista de repositórios.
09/10/2023, 18:41 StackEdit
https://stackedit.io/app# 6/6
2. Testando a Busca no DuckDuckGo:
Vamos fazer uma pesquisa simples no DuckDuckGo:
describe('DuckDuckGo Search', function() {
it('Deve retornar resultados de busca', function() {
cy.visit('https://duckduckgo.com')
cy.get('input[name=q]').type('OpenAI{enter}')
cy.get('.result__title').its('length').should('be.gt', 0)
})
})
Este teste visita o DuckDuckGo, realiza uma pesquisa por “OpenAI” e verifica se há
resultados retornados.
3. Testando a Página About no OpenAI:
Vamos verificar se podemos navegar até a página “About” no site da OpenAI:
describe('OpenAI Navigation', function() {
it('Deve navegar para a página About', function() {
cy.visit('https://openai.com')
cy.contains('About').click()
cy.url().should('include', '/about')
})
})
Este teste visita o site da OpenAI, clica no link “About” e verifica se a URL mudou para
incluir “/about”.

Mais conteúdo relacionado

Semelhante a Cypress Introdução

Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Carlos Duarte do Nascimento
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineCampus Party Brasil
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Daniel Makiyama
 
Além do Webdriver e Page Objects - Versão completa
Além do Webdriver e Page Objects - Versão completaAlém do Webdriver e Page Objects - Versão completa
Além do Webdriver e Page Objects - Versão completaCharles Kilesse
 
Desenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endDesenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endGiovanny Valente
 
Testes E2E em Cypress com JS
Testes E2E em Cypress com JSTestes E2E em Cypress com JS
Testes E2E em Cypress com JSNàtali Cabral
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosDiego Santos
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Strutseduan
 
TDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoTDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeRafael Benevides
 
Android: testes automatizados e TDD
Android: testes automatizados e TDDAndroid: testes automatizados e TDD
Android: testes automatizados e TDDDextra
 
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosElias Nogueira
 
PDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NETPDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NETslides_teltools
 
98796699 selenium-framework
98796699 selenium-framework98796699 selenium-framework
98796699 selenium-frameworkAndré Caldas
 

Semelhante a Cypress Introdução (20)

Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 
Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
 
Além do Webdriver e Page Objects - Versão completa
Além do Webdriver e Page Objects - Versão completaAlém do Webdriver e Page Objects - Versão completa
Além do Webdriver e Page Objects - Versão completa
 
Django Módulo Básico Parte II
Django Módulo Básico Parte IIDjango Módulo Básico Parte II
Django Módulo Básico Parte II
 
Desenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endDesenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-end
 
Palestra
PalestraPalestra
Palestra
 
Testes E2E em Cypress com JS
Testes E2E em Cypress com JSTestes E2E em Cypress com JS
Testes E2E em Cypress com JS
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizados
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Struts
 
TDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoTDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direito
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpike
 
Testes de Segurança de Software (tech-ed 2008)
Testes de Segurança de Software (tech-ed 2008)Testes de Segurança de Software (tech-ed 2008)
Testes de Segurança de Software (tech-ed 2008)
 
Android: testes automatizados e TDD
Android: testes automatizados e TDDAndroid: testes automatizados e TDD
Android: testes automatizados e TDD
 
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
 
PDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NETPDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NET
 
98796699 selenium-framework
98796699 selenium-framework98796699 selenium-framework
98796699 selenium-framework
 

Cypress Introdução

  • 1. 09/10/2023, 18:41 StackEdit https://stackedit.io/app# 1/6 Introdução ao Cypress O Cypress é uma ferramenta de teste de frontend que ajuda os desenvolvedores a escrever testes para aplicativos da web. Ele foi projetado para tornar a escrita de testes end-to-end, de integração e unitários mais fácil e rápida. Vamos abordar os conceitos básicos do Cypress, como instalá-lo e como escrever e executar seus primeiros testes. Vantagens do Cypress: Instalação fácil e rápida. Não depende do Selenium. Roda testes diretamente no browser, o que resulta em testes mais rápidos. Recarrega automaticamente os testes quando os arquivos são alterados. Fornece uma interface interativa para visualizar os testes sendo executados. Instalação e Configuração: 1. Instalando o Cypress via npm: npm install cypress --save-dev 2. Abrindo o Cypress: ./node_modules/.bin/cypress open Ao executar pela primeira vez, o Cypress criará uma estrutura de pastas com exemplos de testes. Estrutura de Pastas do Cypress: cypress/ |-- fixtures/ |-- integration/ |-- plugins/ `-- support/ fixtures : Arquivos JSON usados para dados de teste. integration : Testes que você escreverá. plugins : Extensões ou plugins que você pode escrever ou adicionar. support : Arquivos de comando e ajudantes reutilizáveis. Escrevendo seu primeiro teste:
  • 2. 09/10/2023, 18:41 StackEdit https://stackedit.io/app# 2/6 1. Dentro da pasta integration , crie um arquivo sample_spec.js . 2. Adicione o seguinte código: describe('Meu Primeiro Teste', function() { it('Visita a página do Kitchen Sink', function() { cy.visit('https://example.cypress.io') // visita um URL cy.contains('type').click() // encontra um elemento com o texto "type" // Verifica a URL para garantir que ela inclui '/commands/actions' cy.url().should('include', '/commands/actions') }) }) 3. Abra o Cypress e clique no arquivo de teste. O teste será executado e você poderá ver os resultados. Comandos úteis do Cypress: cy.visit(url) : Visita uma URL. cy.contains(content) : Procura um elemento com o conteúdo fornecido. cy.click() : Clica em um elemento. cy.should() : Faz uma asserção sobre o elemento ou comando anterior. Conclusão: O Cypress é uma ferramenta poderosa e moderna para testar aplicações da web. Ele fornece uma forma rápida e confiável de garantir que seu aplicativo funcione como esperado em diferentes cenários. Aprender a usar o Cypress pode melhorar significativamente a qualidade e a confiabilidade de seus aplicativos. A estrutura de um teste no Cypress é influenciada pelo Mocha, uma popular framework de testes para JavaScript. Os principais componentes são describe , it , e os comandos cy . Vamos detalhar essa estrutura: 1. describe e context : Ambos são essencialmente a mesma função e são usados para agrupar testes relacionados. Isso ajuda a organizar e descrever o conjunto de testes.
  • 3. 09/10/2023, 18:41 StackEdit https://stackedit.io/app# 3/6 describe é o método tradicionalmente usado para agrupar testes em Mocha. context é um alias para describe e pode ser usado da mesma maneira, permitindo que os desenvolvedores escrevam seus testes de uma forma que pareça mais legível ou semântica para certos cenários. describe('Grupo de Testes', function() { // ... testes aqui ... }); OU context('Grupo de Testes', function() { // ... testes aqui ... }); 2. it : Dentro de um bloco describe ou context , você define testes individuais usando it . A função it descreve um único teste. it('deve executar alguma funcionalidade', function() { // ... código do teste aqui ... }); 3. Comandos cy : Dentro de um teste ( it ), você utiliza os comandos do Cypress (todos começando com cy ) para interagir com sua aplicação, fazer asserções, entre outras coisas. cy.visit(url) : Navega para uma URL. cy.get(selector) : Obtém um ou mais elementos DOM. cy.click() : Clica em um elemento. cy.type(text) : Digita em um elemento input ou textarea. cy.should(...) : Faz uma asserção sobre o estado ou comportamento do elemento anterior. Exemplo:
  • 4. 09/10/2023, 18:41 StackEdit https://stackedit.io/app# 4/6 it('deve preencher e enviar o formulário', function() { cy.visit('/formulario') cy.get('input[name=nome]').type('João') cy.get('input[type=submit]').click() cy.url().should('include', '/obrigado') }); 4. Hooks: Existem também hooks que permitem definir comportamentos para serem executados antes de um conjunto de testes ou antes de cada teste. Os mais comuns são: before() : Roda uma vez antes de todos os testes no bloco. after() : Roda uma vez depois de todos os testes no bloco. beforeEach() : Roda antes de cada teste no bloco. afterEach() : Roda depois de cada teste no bloco. Exemplo: describe('Hooks', function() { before(function() { // roda uma vez antes de todos os testes }) after(function() { // roda uma vez depois de todos os testes }) beforeEach(function() { // roda antes de cada teste }) afterEach(function() { // roda depois de cada teste }) // ... testes aqui ... }); Resumo:
  • 5. 09/10/2023, 18:41 StackEdit https://stackedit.io/app# 5/6 Um teste típico no Cypress tem a seguinte estrutura: describe('Descrição do Grupo de Testes', function() { beforeEach(function() { // Talvez algum código de configuração aqui }) it('Descrição do Teste 1', function() { // Código do teste 1 }) it('Descrição do Teste 2', function() { // Código do teste 2 }) // ... mais testes ... }); Vamos criar alguns testes básicos usando sites reais. Tenha em mente que sites reais podem mudar a qualquer momento, o que significa que os testes podem falhar no futuro se os elementos ou o comportamento do site mudarem. Para este exemplo, usaremos o GitHub e o DuckDuckGo. 1. Testando a Busca no GitHub: Vamos fazer um teste simples para verificar se a pesquisa no GitHub retorna resultados: describe('GitHub Search', function() { it('Deve retornar resultados para uma pesquisa', function() { cy.visit('https://github.com') cy.get('input[name=q]').type('Cypress{enter}') cy.get('.repo-list li').its('length').should('be.gt', 0) }) }) Este teste visita o GitHub, insere “Cypress” na barra de pesquisa, pressiona Enter e, em seguida, verifica se há resultados na lista de repositórios.
  • 6. 09/10/2023, 18:41 StackEdit https://stackedit.io/app# 6/6 2. Testando a Busca no DuckDuckGo: Vamos fazer uma pesquisa simples no DuckDuckGo: describe('DuckDuckGo Search', function() { it('Deve retornar resultados de busca', function() { cy.visit('https://duckduckgo.com') cy.get('input[name=q]').type('OpenAI{enter}') cy.get('.result__title').its('length').should('be.gt', 0) }) }) Este teste visita o DuckDuckGo, realiza uma pesquisa por “OpenAI” e verifica se há resultados retornados. 3. Testando a Página About no OpenAI: Vamos verificar se podemos navegar até a página “About” no site da OpenAI: describe('OpenAI Navigation', function() { it('Deve navegar para a página About', function() { cy.visit('https://openai.com') cy.contains('About').click() cy.url().should('include', '/about') }) }) Este teste visita o site da OpenAI, clica no link “About” e verifica se a URL mudou para incluir “/about”.