
Ich verwende Cypress zum Testen einiger Webanwendungen. Die meisten Seitenadressen verhalten sich völlig identisch, als wenn ich sie manuell aufrufe.
Ich habe jedoch einige Seiten, die eine 401-Fehlermeldung (Unauthorized) zurückgeben, sobald ich sie über Cypress besuche. Bei diesen problematischen Seiten handelt es sich um einfache Anmeldeseiten mit Benutzername und Passwort, und der Fehler wird ausgelöst, bevor ich überhaupt anfange, die Felder für Benutzername und Passwort auszufüllen.
Ich habe bereits zwischen den Browsern Chrome und Electron gewechselt, aber bisher ohne Erfolg.
Hat jemand eine Idee, was ich versuchen könnte, um dieses 401-Problem zu lösen? Ich kann bei Google nichts Nützliches zu diesem Thema finden.
Antwort1
Ich hatte das gleiche Problem. Es hängt mit einer POST
Anfrage zwischen Besuchen zusammen, die eine Authentifizierung erfordert. Cypress hebt die Autorisierung MANCHMAL zwischen Tests auf, was ein unzuverlässiges Verhalten ist, das meiner Meinung nach nicht beabsichtigt ist (es gibt einen Bericht dazu, aber nicht mit so vielen Informationen, wie sie benötigen, ich werde dem GitHub-Thread so bald wie möglich weitere Informationen hinzufügen).
Um das Problem jetzt zu lösen, habe ich cy.wait()
vor jedem Besuch im Test ein „vor“ hinzugefügt (insbesondere vor dem, der fehlschlug). Dadurch wurde sogar die Seite, die den 401
Fehler anzeigte, bestanden. Nachfolgend finden Sie ein einfaches Beispiel:
it('checks the xxx page', () => {
cy.wait(20000)
cy.visit('/page')
})
it('verifies xxx page is loaded', () => {
cy.wait(10000)
cy.get('element').should('contain', 'Header text')
})
Sie können auch einen (nicht so empfohlenen) Workaround durchführen, indem Sie die Besuche in denselben Test einfügen:
it('checks the xxx page', () => {
cy.wait(20000)
cy.visit('/page')
cy.wait(10000)
cy.get('element').should('contain', 'Header text')
cy.visit('/anotherpage')
...
})