Estou tentando fazer um login programático com o Cypress antes de cada teste. Meus tokens são mantidos no localStorage. Se eu alterá-lo de forma síncrona, ou seja, fazer simpy localStorage.setItem
sem envolvê- cy.request
lo funciona bem. No entanto, eu gostaria de usar meu servidor de autenticação ( http://localhost:3004/login
abaixo) para gerar tokens.
O token é buscado corretamente no servidor, mas assim que eu uso o comando abaixo, junto com a cy.visit('/')
mensagem "Falha ao visitar o host local: 8080 - tentamos fazer uma solicitação http para este URL, mas a solicitação falhou sem resposta" (consulte log completo abaixo).
Tanto quanto posso dizer, esta é a abordagem correta ao usar um servidor de autenticação para autenticação sem cabeçalho. Do que eu senti falta?
commands.js
Cypress.Commands.add('login', () => {
cy.request({
method: 'POST',
url: `http://localhost:3004/login`,
body: {
username: 'foo@bar.com',
password: '123'
}
}).its('body').then((body) => {
const vuexData = { user: { authenticationData: { token: body.token } } }
window.localStorage.setItem('vuex', JSON.stringify(vuexData))
})
})
test.js
describe('A test', () => {
beforeEach(() => {
cy.login()
})
it('works', () => {
cy.visit('/')
cy.get('h1').contains('All Books')
})
})
CypressError: cy.visit () falhou ao tentar carregar:
Tentamos fazer uma solicitação http para este URL, mas a solicitação falhou sem uma resposta.
Recebemos este erro no nível da rede:
Erro: conectar ECONNREFUSED :: 1: 8080
Situações comuns pelas quais isso falharia: - você não tem acesso à Internet - você esqueceu de executar / inicializar o servidor da Web - o servidor da Web não está acessível - você tem configurações estranhas de configuração de rede no computador
O rastreamento de pilha para este erro é:
Erro: conecte ECONNREFUSED :: 1: 8080 no TCPConnectWrap.afterConnect [conforme a conclusão] (net.js: 1056: 14)
http://localhost:8080
ele funciona bem sem o cy.request
comando de login
.its('body').then((body)
, it('works', () => {
e o aplicativo Vue mounted()
, todos eles têm valores corretos e os logs ocorrem na ordem correta (pressionando o tipo de código com o POST). A única coisa que posso sugerir é fazer logon body
após o POST e ver se ele possui o formato correto. Caso contrário, como o aplicativo Vue usa o token?
baseUrl
em cypress.json?