Aprenda como remover duplicações na chamada do comando .check() quando você quer marcar todos os checkboxes de uma seção da aplicação

Eu não sei você, mas eu não gosto muito de duplicação de código. Portanto, hoje vou te mostrar uma técnica para eliminar um pouco de duplicação quando lidando com checkboxes usando o framework Cypress.

Para exemplificar, irei utilizar uma aplicação exemplo criada só com arquivos estáticos (HTML, CSS e uma imagem de background).

Nesta aplicação, conforme demonstrado abaixo, existe uma seção com o label Selecione as tecnologias que utiliza:

Screenshot 2021-06-14 at 11.19.36

Visto que todos os checkboxes estão contidos em uma div com o id check, posso marcar todos com um único comando da seguinte forma:

// cypress/integration/checkboxes.spec.js

describe('Checkboxes', () => {
  beforeEach(() => {
    cy.visit('https://bit.ly/3vswFBe')
  })

  it('checks all checkboxes with one command', () => {
    cy.get('#check input[type="checkbox"]')
      .as('checkboxes')
      .check()

    cy.get('@checkboxes')
      .each(checkbox => {
        expect(checkbox[0].checked).to.equal(true)
      })
  })
})

E visto que o comando .check() encadeado ao cy.get() marca mais de um checkbox se o seletor utilizado não for específico para um único elemento, todos os checkboxes são marcados.

Com isso, posso fazer um novo cy.get(), dessa vez passando como argumento o alias (`@checkboxes`) criado anteriormente para todos os inputs do tipo checkbox contidos na div com o id check (sem duplicar o seletor), para verificar que realmente todos estão marcados.

Fácil né?

Veja o resultado após a execução dos testes.

Screenshot 2021-06-14 at 11.46.27

Para mais detalhes sobre a funcionalidade .check(), recomendo ler a documentação oficial do Cypress.


E aí, gostou dessa “pitada de Cypress“?

Deixa um comentário.


Ficou curioso e quer aprender mais sobre automação de testes com Cypress? Conheça meus cursos na Escola Talking About Testing e no Udemy.


Este conteúdo foi traduzido para inglês e pode ser encontrado no DEV Community.


👋  Até a próxima e bons testes!

3 comentários em “Como marcar vários checkboxes de uma só vez com Cypress

  1. it(‘checks all checkboxes with one command AND EVALUATES IT’S CHECKED’, () => {
    cy.get(‘#check input[type=”checkbox”]’)
    .check()
    .each( res => {
    cy.get(res).should(‘be.checked’)
    })
    })

    Nessa solução eu checo todos os checkbox usando o seletor não específico e em seguida uso o .each(), que trás cada checkbox individualmente como parametro, que eu chamei de ‘res’, e já faço a checagem de que ele está marcado. =D

    À propósito, teu curso de Cypress básico tá TOP!

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s