
Я использую Cypress для тестирования некоторых веб-приложений. Большинство адресов страниц ведут себя совершенно так же, как когда я посещаю их вручную.
Однако у меня есть некоторые страницы, которые возвращают 401 - Неавторизованный, как только я захожу на них через Cypress. Эти проблемные страницы - простые страницы входа с именем пользователя и паролем, и ошибка выдается еще до того, как я начинаю заполнять поля имени пользователя и пароля.
Я уже переключался между браузерами Chrome и Electron, но пока безуспешно.
Есть ли у кого-нибудь идеи, как мне попробовать преодолеть эту проблему 401? Я не могу найти ничего полезного в Google по этой теме.
решение1
У меня была та же проблема. Это связано с POST
запросом, который делается между посещениями, что требует аутентификации. Cypress ИНОГДА не авторизуется между тестами, что является нестабильным поведением, которое, я думаю, не было задумано (есть отчет об этом, но не с таким количеством информации, как нужно, я добавлю больше информации в ветку GitHub как можно скорее).
На данный момент, чтобы решить эту проблему, я добавил cy.wait()
перед каждым посещением в тесте (особенно перед тем, которое было провалено). Это даже заставило страницу, выдающую мне ошибку 401
, пройти. Ниже приведен простой пример:
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')
})
Вы также можете воспользоваться обходным решением (не очень рекомендуемым), поместив посещения в тот же тест:
it('checks the xxx page', () => {
cy.wait(20000)
cy.visit('/page')
cy.wait(10000)
cy.get('element').should('contain', 'Header text')
cy.visit('/anotherpage')
...
})