Cypress. Поднятие сессии для нужного origin
Всем здравствуйте. Столкнулся с проблемой при написании тестов. Поднимаю проект локально, но при это авторизация происходит на стороннем сервисе, подменить запрос или отправить его через fetch не получится, требуется именно авторизация на стороне UI. После авторизации на стороне UI, происходит редирект на внешний сервис и callback на localhost, но Cypress этого не видит. И в режиме open, тест приходится запускать два раза, чтобы сессия восстановилась на localhost, но в headlees, тесты падают даже при повторном запуске. Как исключить origin или отправить callback на localhost
Ответы (1 шт):
Разобрался сам. Ответ подойдёт для начинающих. Как бы вам не хотелось авторизацию придётся пройти напрямую с бэком Кончено вы можете использовать origin, но как только у вас появится дополнительный редирект, будьте готовы повозиться с перебросом всех значений на требуемый домен.
Вместо этой возни предлагаю следующий вариант.
- Пройдите авторизацию на сервис самостоятельно с включённом DevTools. Так же включить отображение всех запросов, а не только fetch.
- Посмотрите, какой запрос вы отправляете и что содержится в payload
- Если там только логин и пароль, но через
cy.requestотправить эти данные - Если есть дополнительный данные, к примеру CSRF токен, как у меня, то отправьте запрос на получение формы так же через request, вытащите value из формы и подставьте его в запрос авторизации
Дополнительно: Настройте правильно запрос отправки. Если с UI отправляется форма, укажите поле
form: true
Так же возможно потребуется отключить редирект, тогда укажите так же
followRedirect: false