Oii Samir, como você está?
Peço desculpas pela demora em obter um retorno.
Isso pode estar acontecendo devido ao Cypress clicar no elemento do botão antes dele de fato ser clicável, uma vez que o site do Alurapic antes de cadastrar um novo usuário retornará algumas validações, como por exemplo: usuário existente, e-mail inválido, dentre outros. Sendo assim, tente adicionar um tempo de espera antes de realizar o clique, este tempo não precisa ser alto, apenas alguns segundos para o Cypress identificar com precisão o botão após as validações e efetuar o clique.
Para isso, podemos utilizar a função wait(), que recebe como parâmetro uma quantidade X de milisegundos. Neste caso, utilizaremos um segundo apenas, ou seja, o valor 1000. Em código, ficará do seguinte modo:
cy.contains('button', 'Register').wait(1000).click();
Código completo:
Cypress.Commands.add('registra', (email, fullName, userName, password) => {
//cy.register();
cy.contains('a', 'Register now').click();
cy.contains('button', 'Register').click();
cy.get('input[formcontrolname="email"]').type(email);
cy.get('input[formcontrolname="fullName"]').type(fullName);
cy.get('input[formcontrolname="userName"]').type(userName);
cy.get('input[formcontrolname="password"]').type(password);
cy.contains('button', 'Register').wait(1000).click();
})
Um ponto de atenção, é que a API retornará erro caso o usuário "juju21" já existir no banco de dados, por isso, caso seja visível a frase Username already taken
, altere o nome do usuário, como por exemplo para "juju101".
Após essa modificação no comando registra
, execute o comando npm run test
e verifique se obterá êxito.
Espero ter ajudado. Fico à disposição.
Grande abraço!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!