Каким-то образом мне удалось найти способ решения проблемы. Поскольку baseUrl
имеет некоторое расширение пути /auth/login
, всякий раз, когда я запускаю cy.request (), он всегда перенаправляет обратно на страницу входа, даже если учетные данные были правильными. Также в консоли было два запроса.
Таким образом, я отправил еще один cy.request()
с методом GET с body
параметрами сразу после первого POST cy.request () с параметрами qs
, Из заголовков запросов я узнаю, что каждый раз при входе пользователя в систему отправлялся «токен». Если есть другой простой способ, дайте мне знать.
Версия Cypress: 4.4.0
Внутри beforeEach()
, получите значение 'token';
beforeEach(() => {
cy.visit('/');
cy.loadTokens();
cy.get('input[name="_token"]').invoke('val').then((val)=>{
const tokenValue = val;
cy.loginRequest(tokenValue);
})
})
Ниже приведен файл commands.js
:
Cypress.Commands.add('loginRequest', function (tokenValue) {
return cy.request({
method: 'POST',
url: Cypress.config('baseUrl'),
followRedirect: true,
headers: {
'content-type': 'text/html; charset=UTF-8'
},
qs:{
_token: tokenValue,
username: 'your_username',
password:'your_password'
}
}).then(()=>{
return cy.request({
method: 'GET',
url: 'https://tenant-demo.somesitedev.net/dashboard',
followRedirect: false,
headers: {
'content-type': 'text/html; charset=UTF-8'
},
body:{
_token: tokenValue,
username: 'your_username',
password:'your_password'
}
})
})
});