Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

TypeError

Boa noite,

Mesmo importando o arquivo gui_commands.cy.js dentro do arquivo e2e.js, ao salvar e tentar rodar o testes é apresentado o seguinte erro (que não consegui resolver):

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

7 respostas

Olá, bom dia João! Tudo bem?

Acredito que está ocorrendo pela nomenclatura do seu arquivo, juntamente com a maneira que está chamando ele... o nome do arquivo deve respeitar ser um JS, sem ter o CY na frente, o cy na frente é somente para arquivos que contenham testes...

Então deixando o nome do arquivo como gui_commands.js, na hora de importar pode chamar ele por import './gui_commands'.

A princípio assim já irá conseguir utilizar... Qualquer dúvida só chamar novamente!

ᅠCaso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!ᅠ

Tudo certo Diogo!

Fiz as suas sugestões de resolução mas ainda persiste o problema:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Poderia enviar o código que está tentando testar no Cypress? Para validar se não é algo nele.

Claro, aqui:

describe('Login e registro de usuarios alura pic', () => {

beforeEach(() => {
    cy.visit('alura-fotos.herokuapp.com/#/home')
})

it('verifica mensagens validacao', () => {
    cy.contains('a', 'Register now').click();
    cy.contains('button', 'Register').click();
    cy.contains('ap-vmessage', 'Email is required!').should('be.visible')
    cy.contains('button', 'Register').click();
    cy.contains('ap-vmessage', 'User name is required!').should('be.visible')
    cy.contains('ap-vmessage', 'Password is required!').should('be.visible')
    cy.contains('ap-vmessage', 'Full name is required!').should('be.visible')
})

it('verifica mensagem de email invalido', () => {
    cy.contains('a', 'Register now').click();
    cy.contains('button', 'Register').click();
    cy.get('input[formcontrolname="email"]').type('joao');
    cy.contains('ap-vmessage', 'Invalid e-mail').should('be.visible');
})

it('verifica mensagem de senha menor que o esperado', () => {
    cy.contains('a', 'Register now').click();
    cy.contains('button', 'Register').click();
    cy.get('input[formcontrolname="password"]').type('123');
    cy.get('.btn').click();
    cy.contains('ap-vmessage', 'Mininum length is 8').should('be.visible');
})

it('verifica mensagem nome usuario em lowcase', () => {
    cy.contains('a', 'Register now').click();
    cy.contains('button', 'Register').click();
    cy.get(':nth-child(1) > .form-control').type('email-invalido');
    cy.get(':nth-child(2) > .form-control').type('J')
    cy.get(':nth-child(3) > .form-control').type('Joao');
    cy.get(':nth-child(4) > .form-control').type('1234');
    cy.get('.btn').click();
    cy.contains('ap-vmessage', 'Must be lower case').should('be.visible');
})

it.only('fazer login de usuario valido', () => {
    cy.login('flavio', '123');
    cy.get('.navbar > :nth-child(3) > :nth-child(3)').should('be.visible');
})

it.only('fazer login de usuario invalido', () => {
    cy.login('Joao', '1234');
    //cy.contains('ap-vmessage', 'User name is required!').should('be.visible');
    //cy.contains('ap-vmessage', 'Password is required!').should('be.visible');
    cy.on ('window:alert', (str) => {
        expect(str).to.equal('Invalid user name or password');
    })
})

})

solução!

Então, rodei o mesmo teste aqui e deu tudo certo, a estrutura do meu gui_commands.js é:

Cypress.Commands.add("login", (nome, senha) => {
    cy.get("input[formcontrolname='userName']").type(nome);
    cy.get("input[formcontrolname='password']").type(senha, { log: false });
    cy.get('button[type="submit"]').click();
});

Se mesmo tentando usar o código acima e falhar, indicaria começar novamente um novo projeto em outra pasta e instalar o Cypress nela, assim pode validar se não é algo dessa versão ou alguma instabilidade.

Eu utilizo a versão 10.10.0 do Cypress, me dei melhor com ela e atualmente não mudo kkkk, se quiser instalar ela em específico pra testar, é só seguir esse passo a passo no vscode em uma pasta diferente da pasta do seu projeto:

npm init

Agora você irá instalar o Cypress em uma versão mais antiga:

npm i cypress@10.10.0 --save-dev

Depois de instalar o Cypress você irá abrir o projeto com o seguinte comando

npx cypress open

Abrindo ele, só confirmar permissões de Firewall e depois clique em E2E Testing.

A mensagem está indicando que ocorreu um erro na sua codificação de teste, e não de uma falha no Cypress. O erro está relacionado a você estar tentando acessar uma propriedade de um objeto que não foi definida. Cypress não conseguiu associar este erro a um teste específico, então eles geraram um novo teste para mostrar esta falha.

Obrigado pela ajuda, o seu código do gui_commands funcionou aqui também