Estoy tratando de hacer un inicio de sesión programático con Cypress antes de cada prueba. Mis tokens persisten en localStorage. Si lo modifico sincrónicamente, es decir, hacer simplemente localStorage.setItem
sin involucrarlo cy.request
funciona bien. Sin embargo, me gustaría usar mi servidor de autenticación (a http://localhost:3004/login
continuación) para generar tokens.
El token se obtiene correctamente del servidor, pero tan pronto como uso el siguiente comando junto con cy.visit('/')
"No se pudo visitar localhost: 8080 - Intentamos hacer una solicitud http a esta URL pero la solicitud falló sin una respuesta" (ver registro completo a continuación).
Por lo que puedo decir, este es el enfoque correcto cuando se utiliza un servidor de autenticación para la autenticación sin cabeza. ¿Qué me perdí?
command.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 () falló al intentar cargar:
Intentamos hacer una solicitud http a esta URL pero la solicitud falló sin una respuesta.
Recibimos este error a nivel de red:
Error: conectar ECONNREFUSED :: 1: 8080
Situaciones comunes por las que esto podría fallar: - no tiene acceso a Internet - olvidó ejecutar / iniciar su servidor web - su servidor web no es accesible - tiene configuraciones de red extrañas en su computadora
El seguimiento de la pila para este error es:
Error: conecte ECONNREFUSED :: 1: 8080 en TCPConnectWrap.afterConnect [como oncomplete] (net.js: 1056: 14)
http://localhost:8080
funciona bien sin el cy.request
comando de inicio de sesión
.its('body').then((body)
, it('works', () => {
y la aplicación Vue mounted()
, todos tienen valores correctos y los registros se producen en el orden correcto (presionando Typicode con POST). Lo único que puedo sugerir es iniciar sesión body
después de la POST y ver si tiene la forma correcta. De lo contrario, ¿cómo usa la aplicación Vue el token?
baseUrl
en cypress.json?