3
respostas

POJO

Como faço para passar um pojo no argumento dos métodos ? A pagina-cadastro.js ficou com a massa de testes estática. Dentro dos steps do teste daria para passar argumentos para preencher, mas gostaria de saber se tem como encapsular isso dentro da classe de métodos (pagina-cadastro).. assim ficaria mais clean o step de teste passando apenas um pojo que contem a massa de dados que será usada

3 respostas

Olá, Thiago! Tudo bem com você?

Uma forma de fazer isso é criar um método na classe pagina-cadastro que recebe um POJO como parâmetro e utiliza os valores desse objeto para preencher os campos do formulário. Por exemplo:

class PaginaCadastro {
  preencherFormulario(dados) {
    cy.get('[data-test="email"]').type(dados.email);
    cy.get('[data-test="fullName"]').type(dados.fullName);
    cy.get('[data-test="registerUserName"]').type(dados.registerUserName);
    cy.get('[data-test="registerPassword"]').type(dados.registerPassword);
  }
}

Dessa forma, você pode chamar esse método passando um POJO contendo os dados que serão utilizados para preencher o formulário. Por exemplo:

const dados = {
  email: 'exemplo@gmail.com',
  fullName: 'Fulano de Tal',
  registerUserName: 'fulano123',
  registerPassword: 'senha123'
};

const paginaCadastro = new PaginaCadastro();
paginaCadastro.preencherFormulario(dados);

Assim, você encapsula a lógica de preenchimento do formulário dentro da classe pagina-cadastro e pode reutilizá-la facilmente em outros testes, passando diferentes POJOs como argumento.

Espero ter ajudado. Caso tenha mais dúvidas ou problemas relacionados com este tópico, estarei à disposição.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Pessoal, a duvida do colega é parecida com a minha. Mas queria saber como fazer esse preenchimento usando as massas do arquivo usuarios.json que a professora disponibilizou? Da mesma forma que fizemos no data-testes.cy... Não é possível fazer na page pagina-cadastro.js?

Oi Gisele, tudo bem?

Para que você consigo usar a massa de dados disponibilizada pela instrutora, primeiro você deve se certificar que importou corretamente a lista de objetos do arquivo "usuarios.json". Após isso você deve fazer a chamada dessa lista e passar cada propriedade do objeto presente na lista. Segue um exemplo abaixo:

const el = require('./elements').elements;
const list = require('../../../fixtures/usuarios.json');

class Cadastro {
  acessarPaginaDeCadastro() {
    cy.visit('https://3076-cypress-alurapic-front.vercel.app/#/home');
    cy.get(el.registerNow).click();
  }

  preencherFormulario() {
    cy.get(el.email).type(list[0].email);
    cy.get(el.fullName).type(list[0].fullName);
    cy.get(el.registerUserName).type(list[0].userName);
    cy.get(el.registerPassword).type(list[0].password);
  }

  submeterCadastro() {
    cy.get(el.btnRegister).click();
  }
}

No exemplo, escolhi que utilizaria apenas um objeto da lista, por isso, após a variável list adicionei o [0]. Porém, caso você queira adicionar todos os outros objetos, você pode usar uma estrutura de repetição que envolve todo o escopo do teste.

Espero ter lhe ajudado. Caso tenha mais dúvidas, peço que crie um novo tópico no fórum para tratarmos melhor o seu caso.

Bons estudos!