Я добавил команду getCSRFToken
, которая используется другими командами для получения токена CSRF для отправки запросов в мое приложение:
Cypress.Commands.add("getCSRFToken", () => {
cy.getCookie('XSRF-TOKEN').then((cookie) => {
if (!cookie) {
return cy.request('HEAD', '/')
.its('headers')
.then((headers) => {
const token = headers['x-xsrf-token'];
if (!token) {
throw new Error('XSRF token not found');
}
return cy.setCookie('XSRF-TOKEN', token)
.then(() => token);
});
}
return cookie.value;
});
});
Часть, которая делает запрос HEAD
, предназначена для использованияэтой функции, когда в тесте еще не было посещено ни одной страницы, например, при POST
запросах на создание тестовых данных.
AFAICT это похоже на то, что оно должно работать для меня, однако кажется, что последующие вызовы getCookie
фактически ничего не извлекает:
Я думал вернуть setCookie
обещание и getCookie
обещание могут иметь значение, но, похоже, это не так.