Комплексное E2E-тестирование вашего приложения обычно означает, что вам нужно проверить весь поток в рамках бизнес-логики, и оставлять слепые пятна - не вариант, если вы хотите спать спокойно. Трудно представить себе веб-приложения, в которых не задействованы функции почты, поэтому обеспечение того, чтобы пользователи могли отправлять и получать свои письма, является обязательным. В моем случае у меня есть приложение ERP для тестирования, где рассылка - это не только вопрос регистрации и подтверждения, но и огромная часть логики взаимодействия с пользователем.

Есть несколько инструментов и способов проверить работу рассылки. Самый простой и самый независимый способ - это иметь локальный почтовый сервер, поэтому вы можете настроить свое приложение так, чтобы оно стреляло почтовыми пулями в вашей локальной среде, например. использование mailgun для отправки почты + mailhog в качестве почтового сервера, а затем предоставление вашим тестам доступа к письмам через API сервера. Но что, если вам нужно протестировать настоящую почту для тестирования живой среды или у вас есть приложение, в котором вам нужен доступ к вашей почте через SMTP или что-то вроде Gmail API со всеми свистками и токенами? Что ж, тогда лучше использовать более специализированные инструменты для тестирования почты, такие как mailslurp или mailosaur, которые представляют собой отличные и удобные API-интерфейсы, и за них следует платить за подписку. Есть ли у нас альтернативы? - К счастью, да! Благодаря Льву Гельфенбуиму и его статье на Medium я нашел его gmail-tester Node.js-клиент, который обрабатывает опрос Gmail так же легко, как пирог. Он описал свой опыт объединения его с Cypress, и я хотел бы поделиться своим опытом объединения его с Puppeteer. Puppeteer - это библиотека Node.js для автоматизации веб-сканирования, а также веб-тестирования при использовании с некоторыми средами тестирования, такими как Jest или Mocha.

Добавление gmail-tester в ваш тестовый проект

Вы можете обратиться к файлу readme gmail-tester, чтобы правильно активировать клиент Gmail.

Кратко перечислю шаги:

  • установите gmail-tester в свой проект:
npm install --save-dev gmail-tester
  • как только закончите, запустите эту команду в терминале:
node <node_modules>/gmail-tester/init.js <path-to-credentials.json> <target-email>

где ‹target-email› - это [email protected] в моем случае. Скрипт предложит вам перейти на google.com для активации токена. Перейдите по указанной ссылке и выберите учетную запись для <target-email>. Разрешите просматривать сообщения электронной почты и настройки. Скопируйте токен в конце процесса и установите его в командной строке консоли.

Если все прошло хорошо, вы должны увидеть следующий вывод в консоли:

[gmail] Found!

и файл gmail_token.json должен быть создан в credentials.json.

На этом этапе вы можете приступить к тестированию почтовой функции вашего приложения.

Использование gmail-tester

  • Сначала я создам помощник с тестовыми методами, который будет использоваться в моих тестах. Из readme мы знаем, что у нас есть два метода - check_inbox () - для опроса определенной почты во входящем в течение заданного интервала и get_messages () - для искать все письма, отфильтрованные по датам.
  • Затем я могу протестировать сценарий рассылки, не зная данных кому и от, поэтому я буду использовать get_messages (), для которые не требуются, например:
  1. Создать заказ
  2. Отправить подтверждение заказа
  • Вот еще один сценарий использования check_inbox (), например:
  1. Создать диалог в выбранном порядке в приложении
  2. Отправить копию диалогового письма пользователю

Спасибо, что прочитали это! Буду рад, если эта информация поможет кому-нибудь в достижении целей тестирования. Не стесняйтесь задавать вопросы, если они возникнут.

Также большое спасибо Льву Гельфенбуиму за отличный инструмент! 👏