t.me/atinfo_chat Telegram группа по автоматизации тестирования

Классический тест регистрации с конфирмацией емейла через переход по ссылке.

Теги: #<Tag:0x00007f748a990678> #<Tag:0x00007f748a990510> #<Tag:0x00007f748a990420> #<Tag:0x00007f748a9902e0>

При переходе по ссылке в тесте попадаю на не ту страницу. То есть пользователь регистрируется в “где-то”, потом в этой же вкладке открываю почту, иду в тот почтовый ящик на который зарегистрировалась, открываю письмо, иду по ссылке, открывается новая вкладка перехожу на новую вкладку… Как бы сам тест отрабатывает правильно, наверное)
Но при переходе по ссылке конфирмации попадаю на страницу которая была по итогам регистрации, в общем страница не та. Если прохожу это флоу руцями то всё ок. Даже если иду руцями на почту на которую зарегилась в тесте и перехожу по ссылке то всё ок. Может у кого то есть варианты почему так. Или вы уже знаете что делать что бы отрабатывало как нудно) Теряюсь в догадках.

По итогам упавшего теста пошла смотреть в локал сторедж, для первой вкладки в которой открываю сервис, а потом почтовик, всё как и в случае если прохожу вручную.

Думаю код прилаживать нет смысла. В данном случае скорее всего более информативными будут видосики с выполнением.

Вручную открываю почтовик, ввожу адрес и перехожу по ссылке

перехожу по ссылке в тесте.

Спасибо.

Вариант 1) попробуй работать с email в новой вкладке, и потом уже возвращайся назад.
Вариант 2) Или вынести логику поиска урл в своем емейле (подтверждения регистрации) - в АПИ. По факту ты будешь через API находить ссылку и открывать ее в новой вкладке.

1 Симпатия

Спасибо. А можно со вторым предложением подробней или пример. Бо не поняла…

я вот писал как использую Gmail для тестирования. Как я использую Gmail для интеграционного тестирования. (уже сейчас код не совсем актуален - немного отрефакторен)
суть простая - ты создаешь себе аккаунт, в настройках разрешаешь доступ через API.
и через API ходишь на него и смотришь входящие сообщения и потом используешь это.

  • есть возможность использовать специальные сервисы для тестирования.

Вы же перед регистрацией, в самой тестируемой системе чистите инфу о емейле, о том что будет регистрация с таким-то емейлом? В тесте это сделано? И видео у меня не открываются (((

1 Симпатия

Соглашусь с @BabyRoot, предполагаю, что у вас в системе каким-то образом очищается информация о тестовом пользователе, которого вы регистрируете.

ну в целом это можно делать. Но можно генерировать новый емейл перед тестом, через +integer. или +timestamp

Спасибо. Каждый раз используется уникальный емейл, которого нет в тестируемой системе.
Продублирую видео, не знаю чего не открываются https://drive.google.com/file/d/1HDX_WqgXcKzeOGBCiRv-ttmJHJbgcPOK/view
https://drive.google.com/file/d/1gI8wOUvxXeCqIU5kC6JR2jYt1eRmaQEo/view

Вы ручками тоже самое в инкогнито-мод попробуйте - спорим, воспроизведётся автотест? ))) Я просто смотрю, что вы руками воспроизводите в нормальных вкладках.

Цель реализуемого теста не проверка регистрации, а то что после неё. В тесте каждый раз используются новые емейлы (которых нет в тестируемой системе). Если вдруг в системе есть уже такой емейл то письмо на почту не придет.

воспроизвелось… блин… хрень какая то

Это не хрень, это нормальная работа автотеста)
Это ошибка приложения. Бажульку заводите.

Отвечу не совсем по теме, скорее как идеи для улучшения на подумать )
Воспроизводить кейс типа селениумом заходить на почту и т.д. - оч плохая практика. Вы ставите себе зависимость от UI интерфейса используемой почты и будете обречены менять код каждый раз, когда поменяется какой-нить контрол в почте.
Более правильный подход - поднять в тестах mail-сервер и читать письма в коде. Во-первых, намного стабильнее, во-вторых, намного быстрее.
Ещё лучше подход: попросить программеров сделать Вам REST эндпоинт, который генерировал бы такую же ссылку и читать его без ожидания, когда же придёт письмо. Этот подход намного быстрее. Как альтернатива, если такое решение невозможно, есть решение через инфраструктуру: развернуть на порту отсылки email собиралку писем в REST интерфейсом. Таким образом, письмо там будет появляться, как только оно отсылается сервером. По скорости это решение не уступает предыдущему варианту.

1 Симпатия

Я бы назвал это кэшом :). Очень распространенная вещь, изза которой часто возникают ошибки.

А открытие новой вкладки как то по другому должно быть реализовано?
driver.findElement(By.cssSelector(“body”)).sendKeys(Keys.CONTROL + “t”);

Работает же? Можно ещё выполнить javascript window.open()

Если цель вашего теста НЕ проверка работы этого линка с кофирмацией то как вам писали выше можно сделать через апи.
Когда вы кликаете линку в письме ваш браузер выполняет запрлс GET: https://api.yoursitename.com/registration/confirm/token-1234567
Чтото типа того.
Все что вам нужно это этот «токен» получив его просто выполняете запрос посредством апи методов.
У нас на проекте мы делаем именно так, легко, быстро, удобно.
Я бы вам очень рекомендовал не морочить голову с почтовиками, а действовать через апи. Спросите ваших девов где вы можете получать ссылку для подтверждения регистрации, может из базы, а может есть какойто апи ( что еще лучше)

1 Симпатия

Спасибо большое. Оно то так, только апихи не возвращают код конфирмации емейла. Да и это было бы не правильно. Бо так и почта реальная не нужна, выдрал его с респонса и пошел бродить по сервису.

Разработчики вполне могут вам предоставить такой апи.
Да и вообще код подтверждения имейла где-то же он хранится, както ваше придожение понимает какой код правильный, а какой нет. Поинтересуйтесь у девов где вы можете его взять. Брать его путем открытия почтовика и выискивания его в в письме это както странно.

Именно так я и делаю.
Единственное, для чего нужен тест клика по линке из письма - это проверить, что письмо генерируется правильно и линк валиден.
Но реальное мыло для этого не нужно. Как сделать тест проще и быстрее - я уже выше отписал :slight_smile: