Как вы тестируете потоки пользователей, которые включают подтверждение по электронной почте? - PullRequest
1 голос
/ 09 июля 2019

Я имею в виду функциональное тестирование или тестирование E2E. Это все ясно с общими потоками, но когда дело доходит до транзакционных электронных писем (подтверждение регистрации, сброс пароля, уведомления о покупке и другие), это все еще вызывает вопросы. После некоторых исследований я пришел с несколькими идеями. Одним из них является использование API Restmail.net (здесь примеры с Selenium WebDriver и Cypress - http://dsheiko.com/weblog/testing-sign-up-flow-with-activation-by-email). Это бесплатно, но API общедоступно. Поэтому он не очень подходит для сообщений электронной почты с потенциально конфиденциальной информацией. Другой подход к доступу к входящей почте Gmail через мост IMAP или Gmail API (здесь пояснения и фрагменты кода - https://docs.puppetry.app/testing-emails/example-with-imap-bridge). Но, опять же, это скорее обходной путь.

Я знаю, что есть такие ребята, как Sendgrid, Mailgun, Email Yak, Postmark. Я не хочу платить так много. Так как вы, ребята, делаете это? Это для тебя вещь?

Ответы [ 3 ]

2 голосов
/ 09 июля 2019

Мы делаем это, используя Mailosaur адреса электронной почты для наших тестовых пользователей.Затем мы используем пользовательскую команду cypress для запроса Mailosaur на ожидаемое письмо .Его было очень легко настроить.

Вот основная часть этой пользовательской команды, и это все, что нам нужно было добавить, чтобы начать тестирование электронной почты.Вы можете обратиться к их документам API для того, что query, mailusaurServer и MailosaurApiKey должны быть.

Cypress.Commands.add("getEmailFromMailService", query => {
  return cy
    .request({
      method: "POST",
      url: `https://mailosaur.com/api/messages/await?server=${mailosaurServer}`,
      body: query,
      headers: { "Content-Type": "application/json" },
      auth: { user: mailosaurApiKey },
    })
    .then(response => {
      expect(response.status).to.equal(200);
      return response.body;
    });
});
0 голосов
/ 19 июля 2019
Cypress.Commands.add('ConfirmUser', () => {
  const confirmationToken = null;
  cy.request({
    url: 'http://localhost:3000/api/confirmation_token?email=test_user@cypress.com',
    followRedirect: false
  })
    .then((resp) => {
      confirmationToken = resp.token
    })
  cy.visit('/en/confirmation?confirmation_token=token')
})

Создайте API, который требует адрес электронной почты в качестве параметра и возвращает токен подтверждения. вызовите API из команд cypress как ajax-запрос и получите токен ответа

0 голосов
/ 09 июля 2019

Вы можете создать почтовый запрос для «забыли свой пароль» и затем подтвердить его.

что-то вроде:

    cy.visit('yoursite')
    cy.get('#forgotpassword').click().then(function (xhr) {
    cy.server()
    cy.request('POST', 'APIforForgotPassword').as('sucessfullemail)
    })
    cy.get(@sucessfullemail).then(function (xhr) {
    expect(xhr.status).to.eq(200)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...