Cypress. Автоматический редирект после Amazon Cognito авторизаци
На странице есть Amazon Cognito авторизация тоесть мы заходим на нужную страницу, и при первом заходе нас редиректает на стороннюю страницу и просят заполнить логин/пароль, после чего снова проходит редирект на нужную страницу
- something.com
- somethlogin.auth.eu-central-1.amazoncognito.com/login?client_id=4nafv8ipl1q5rttmrvv6oak5u7&redirect_uri=https%3A
- something.com
Когда я написал по-старинке что то вроде такого
it('Open dev Carvago page', () => {
cy.visit('/');
});
it('Fill auth popup', () => {
cy.get("[id='signInFormUsername']")
.eq(1)
.type('Vladimir.Putin');
cy.get("[id='signInFormPassword']")
.eq(1)
.type('gavzup-5Senfe-vabcopk');
cy.get("[name='signInSubmitButton']")
.eq(1)
.click()
Cypress выдавал ошибку, и со страницы something.com на страницу авторизации редирект не проходил
Тогда я добавил строку
Cypress.config('chromeWebSecurity',false);
И у меня сработал редирект НА страницу авторизации и успешно заполнялись данные (1 -> 2)
НО со страницы авторизации на something.com обратно редирект не происходит (2 -> 3)
Как сделать, чтобы после заполнения формы проходил автоматический редирект со страницы 2 на 3 обратно ?
Ответы (1 шт):
У Cypress есть некоторые ограничение на смену глобальных URL'ов в одном тесте. Сталкивался с таким когда тестировал сайт, авторизация на котором происходила через сервисы Яндекса и там тоже были редиректы.
Помогло примерно следующее:
- Изначально заходим не на Страницу 1, а на Страницу 2 или одну из страниц промежуточных редиректов. Тут придётся половить запросы.
- Находим параметры, передающиеся в запросе.
Далее просто в cy.visit подставляем промежуточный URL с нужными параметрами.
Скорее всего пападёте на страницу авторизации (2) и сможете быстро её закончить.
Код будет примерно такой:
cy.visit('https://some-url.ru/authorize?parametr_1=some-value¶mert_2=some_valueq')
// В данном примере вместо нужного сайта перебрасывало на страницу авторизации с введённым логином
cy.get('button').click() // Подтверждаем пользователя
cy.get('.input-passwd"]').type('password')
cy.get('button"]').click() // Подтверждаем пароль
cy.get('button').eq(0).click() // Подтверждаем переход