Автоматизированный скрипт для проверки кода проверки

#javascript #testing #automated-tests #e2e-testing #testcafe

#javascript #тестирование #автоматизированные тесты #e2e-тестирование #testcafe

Вопрос:

Я использую javascript для создания автоматического тестирования для политики регистрации в B2C. Я использую mailosaur в качестве почтового ящика для получения моего кода подтверждения для завершения регистрации электронной почты. Мой скрипт похож на приведенный ниже скрипт. Это может помочь мне проверить сообщение, которое было успешно отправлено в папку «Входящие», однако я хотел бы добавить дополнительное приспособление, в котором скрипт может копировать только код проверки (тело сообщения будет выглядеть как «ваш код: XXXXXX»), отправленный в общий почтовый ящик, и вставить его обратнона страницу регистрации для завершения регистрации пользователя. Пожалуйста, посоветуйте, как этого можно достичь? Большое спасибо

 import uuidv4 from "uuid/v4";
import MailosaurClient from "mailosaur";

import signUpModel from "./page_models/sign_up_model";

const client = new MailosaurClient("<MAILOSAUR API KEY>");
const mailosaurServerId = "<MAILOSAUR SERVER ID>";
const emailAddress = `${uuidv4()}@dev-tester.com`;

fixture("Airport Gap Signup Flow")
  .page("https://airportgap-staging.dev-tester.com/tokens/new")
  .beforeEach(async () => await client.messages.deleteAll(mailosaurServerId));

test("User receives an email after signup", async t => {
  await t
    .typeText(signUpModel.emailInput, emailAddress)
    .typeText(signUpModel.passwordInput, "airportgap123")
    .click(signUpModel.submitButton);

  await t.wait(10000);

  let message = await client.messages.get(mailosaurServerId, {
    sentTo: emailAddress
  });

  await t.expect(message.to[0].email).eql(emailAddress);

  await t.expect(message.subject).eql("Here's your generated token");

  await t
    .expect(message.html.body)
    .contains("Here's your newly generated Airport Gap token");
});
 

Комментарии:

1. Похоже, вам нужно проанализировать сообщение. Можете ли вы показать нам, как выглядит текст письма? Вы уже что-то пробовали? Если да, пожалуйста, добавьте его в свой вопрос.

2. Я еще не придумал никакого решения. Текст сообщения выглядит следующим образом: Подтвердите свой адрес электронной почты Спасибо за подтверждение вашей учетной записи XXXXXXXXXX! Ваш код: XXXXX С уважением, разработчик B2C

Ответ №1:

Это может быть такой же простой задачей, как синтаксический анализ некоторого текста:

 const text = "Verify your email address Thanks for verifying your XXXXXXXXXX account! Your code is: 09876 Sincerely, B2C Dev";
const code = text.match(/Your code is: [0-9] /)[0].split(':')[1].trim();
console.log(code);
 

Это выведет 09876 на консоль.

1/ Для соответствия вашему коду в сообщении:

 text.match(/Your code is: [0-9] /)
 

2/ Разделить его двоеточием:

 [0].split(':')
 

3 / Чтобы получить только цифры (сам код) и удалить пробелы:

 [1].trim()
 

Я бы, скорее всего, создал вспомогательную функцию и включил в нее этот код, чтобы тестовый пример был менее загрязнен.


Вы можете посмотреть эти методы в MDN:

Комментарии:

1. Спасибо за фрагмент для анализа сообщения тела. Я был бы признателен, если бы вы могли объяснить, как можно ввести проанализированный код на странице регистрации. В приведенном выше примере он должен скопировать код и вставить его обратно в поле на странице регистрации airportgap-staging.dev-tester.com/tokens/new

2. Я не вижу никакой страницы регистрации. Это typeText() решение для вас?

3. Извините, в приведенной выше ссылке нет опции регистрации, но мое приложение предназначено для регистрации нового пользователя. Мой скрипт должен эмулировать следующее… Войдите в учетную запись электронной почты, проверьте код, отправленный на их электронную почту, вставив его обратно на экран регистрации и нажмите «Подтвердить код». TypeText() можно использовать, но не уверен, как указать в TypeText(), чтобы вставить значение, которое он проанализировал.

4. Вы уже используете typeText() его в своем скрипте, используйте его аналогичным образом на странице регистрации.