Je remarque que l'en-tête X-CSRFToken
est supprimé entre les tests, pour toutes les requêtes XHR déclenchées par l'application en cours de test. Je ne suis pas sûr de conserver cet en-tête, car je préserve déjà les cookies via Cypress.Cookies.preserveOnce ('sessionid', 'csrftoken')
Par conséquent, j'ai pensé à ajouter le en-tête personnalisé X-CSRFToken
à toutes les requêtes XHR de l'application. Voici le script que j'ai utilisé, où je récupère le csrftoken
à partir des cookies et le paramètre à l'en-tête personnalisé.
Argument of type '{ onAnyRequest: (route: any, proxy: any) => void; }' is not assignable to parameter of type 'Partial<ServerOptions>'. Object literal may only specify known properties, and 'onAnyRequest' does not exist in type 'Partial<ServerOptions>'.
Ici, je reçois l'erreur ci-dessous,
cy.server({ onAnyRequest: function(route, proxy) { proxy.xhr.setRequestHeader('X-CSRFToken', cy.getCookie('csrftoken')); } })
J'attends une solution de travail pour cette approche ou une meilleure solution.
3 Réponses :
Je pense que vous recherchez onRequest
au lieu de onAnyRequest
. Voici la documentation des options cy.server
a >
J'ai également fait via onRequest
. Mais ce que j'entends de M. Gleb Bahmutov, c'est que cette fonctionnalité n'est pas disponible dans @cypress pour le moment.
Juste pour que tout le monde le sache, j'ai communiqué avec les fabricants de Cypress
et j'ai appris que le stubbing des requêtes sortantes est en cours de développement et peut être suivi sous - https://github.com/cypress-io/cypress/issues/687
Exécutez votre code dans une instruction beforeEach.
beforeEach(() => { cy.server({ onAnyRequest: function(route, proxy) { proxy.xhr.setRequestHeader('X-CSRFToken', cy.getCookie('csrftoken')); } }) });