6
votes

Cypress - Ajouter un en-tête personnalisé pour toutes les demandes XHR

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.


0 commentaires

3 Réponses :




3
votes

Exécutez votre code dans une instruction beforeEach.

beforeEach(() => {
    cy.server({
        onAnyRequest: function(route, proxy) {
           proxy.xhr.setRequestHeader('X-CSRFToken', cy.getCookie('csrftoken'));
       }
    })
});


0 commentaires