#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()
его в своем скрипте, используйте его аналогичным образом на странице регистрации.