3
respostas

[Dúvida] cy.login não funciona

Estou realizando o teste de erro mesmo com os campos preenchidos corretamente e aparece que o cy.login não funciona essa é a informação que diz conter o erro.

 16 | 
  17 |     it('Test deve falhar mesmo que os campos sejam preenchidos corretamente para aparecer o popup', () => {
> 18 |       cy.login('pedroj','j12345678')
     |          ^
  19 |       cy.wait('@stubPost').then((interception) => {
  20 |           assert.isNotNull(interception.response, 'A requisição POST foi chamada')
  21 |       }) 
View stack trace
 Print to console

aqui segue como está feito o cy.login no commands.js

Cypress.Commands.add('login', (nome, senha) => { 
    cy.get('[data-test="loginUserName"]').type('nome');
    cy.get('[data-test="loginPassword"]').type('senha');
    cy.contains('button', 'login').click();
 })

e aqui como está feito o código na parte do login-incorreto, no caso o que está sendo testado

describe('Pagina de login', () => {
 
  beforeEach(() => {
    cy.visit('http://localhost:4200/#/home')

    cy.intercept('POST', 'http://localhost:3000/user/login', {
      statusCode: 400  
    }).as('stubPost')   
  })

  it('Verificar menssagem de campos obrigatorios', () => {      
      cy.contains('User name is required!').should('be.visible');
      cy.contains('Password is required!').should('be.visible');
    
    })

    it('Test deve falhar mesmo que os campos sejam preenchidos corretamente para aparecer o popup', () => {
      cy.login('pedroj','j12345678')
      cy.wait('@stubPost').then((interception) => {
          assert.isNotNull(interception.response, 'A requisição POST foi chamada')
      })
  })
  

  })
3 respostas

Olá, Pedro! Tudo bem?

O problema está na forma como você está passando os parâmetros nome e senha para a função.

Atualmente, você está digitando 'nome' e 'senha' como strings literais, em vez de usar os valores dos parâmetros que você está passando para a função. Isso significa que, independentemente do que você passar para a função cy.login(), ela sempre tentará fazer login com o nome de usuário 'nome' e a senha 'senha'.

Aqui está a correção para o seu código:

Cypress.Commands.add('login', (nome, senha) => { 
    cy.get('[data-test="loginUserName"]').type(nome);
    cy.get('[data-test="loginPassword"]').type(senha);
    cy.contains('button', 'login').click();
})

Neste código corrigido, removi as aspas simples em torno de nome e senha nas linhas onde você está digitando esses valores nos campos de login. Agora, a função cy.login() deve usar os valores que você passar para ela quando for chamada.

Espero ter ajudado e bons estudos!

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

Olá Armano, fiz a alteração como sugeriu e continua dando o mesmo erro

16 | 
  17 |     it('Test deve falhar mesmo que os campos sejam preenchidos corretamente para aparecer o popup', () => {
> 18 |       cy.login(pedroh, pedro123);
     |                ^
  19 |       cy.wait('@stubPost').then((interception) => {
  20 |           assert.isNotNull(interception.response, 'A requisição POST foi chamada')
  21 |       })

esse de baixo é o codigo do login incorreto que deveria rodar a situação de que os dados foram colocados corretamente porem da o erro 400.

describe('Pagina de login', () => {
 
  beforeEach(() => {
    cy.visit('http://localhost:4200/#/home')

    cy.intercept('POST', 'http://localhost:3000/user/login', {
      statusCode: 400  
    }).as('stubPost')   
  })

  it('Verificar menssagem de campos obrigatorios', () => {      
      cy.contains('User name is required!').should('be.visible');
      cy.contains('Password is required!').should('be.visible');
    
    })

    it('Test deve falhar mesmo que os campos sejam preenchidos corretamente para aparecer o popup', () => {
      cy.login(pedroh, pedro123);
      cy.wait('@stubPost').then((interception) => {
          assert.isNotNull(interception.response, 'A requisição POST foi chamada')
      })
  })
  

  })

ai ta a correção que fiz conforme sua orientaçao, mas o erro persiste e nas aulas não tem nenhuma orientação de como devo proceder

Cypress.Commands.add('login', (nome, senha) => { 
    cy.get('[data-test="loginUserName"]').type(nome);
    cy.get('[data-test="loginPassword"]').type(senha);
    cy.contains('button', 'login').click();
 })

Boa tarde! Pedro.

Nesse caso, imagino que seria melhor você compartilhar todo o seu projeto para que eu realize testes a fim de buscar o que realmente está causando esse erro.

Você pode compartilhar usando o GitHub ou Drive do Google.

Fico no aguardo e à disposição