#javascript #testing #automated-tests #testcafe #mailslurp
Вопрос:
Я пытаюсь понять, сможет ли mailslurp справиться с нашими потребностями в получении ссылки в электронном письме после того, как пользователь зарегистрируется на курс на нашем сайте.
Я работаю с примером кода, найденного здесь: https://www.mailslurp.com/examples/testcafe-mfa-user-sign-up/
Единственное, что я изменил в примере кода, — это то, как мы вызываем КЛЮЧ API для нашей учетной записи mailslurp.
Пример кода работает нормально, пока не дойдет до шага «waitForLatestEmail». Он выдает ошибку и указывает на код mailslurp с
1) TypeError: since.toISOString is not a function
Browser: Chrome 92.0.4515.159 / macOS 10.15.7
14532 | }
14533 | if (inboxId !== undefined) {
14534 | localVarQueryParameter['inboxId'] =
inboxId;
14535 | }
14536 | if (since !== undefined) {
> 14537 | localVarQueryParameter['since'] =
since.toISOString();
14538 | }
14539 | if (sort !== undefined) {
14540 | localVarQueryParameter['sort'] = sort;
14541 | }
14542 | if (timeout !== undefined) {
at Object.waitForLatestEmail
(/Users/justin/Documents/cf2-test-cafe-poc/node_modules/mailslurp-client/dist/generated/api.js:14537:57)
at Object.waitForLatestEmail
(/Users/justin/Documents/cf2-test-cafe-poc/node_modules/mailslurp-client/dist/generated/api.js:14820:98)
at WaitForControllerApi.waitForLatestEmail
(/Users/justin/Documents/cf2-test-cafe-poc/node_modules/mailslurp-client/dist/generated/api.js:15074:67)
at <anonymous>
(/Users/justin/Documents/cf2-test-cafe-poc/dev_tests/mail_slurp.js:60:50)
at asyncGeneratorStep
(/Users/justin/Documents/cf2-test-cafe-poc/dev_tests/mail_slurp.js:3:142)
at _next
(/Users/justin/Documents/cf2-test-cafe-poc/dev_tests/mail_slurp.js:3:480)
Кто-нибудь сталкивался с этим и как была решена проблема?
Текущий файл теста:
import { Selector } from 'testcafe'
import { MailSlurp } from 'mailslurp-client'
import { mail_slurp } from '../constants'
let mailslurp
const api_key = mail_slurp.api_key
const password = "test-password"
fixture `mail_slurp`
.page `https://playground.mailslurp.com`
.before(
async(_) => {
if(!api_key){
throw "No Mailslurp API KEY defined"
}
mailslurp = new MailSlurp({ apiKey: api_key })
}
)
test('Grab magic link from email', async t => {
// create email address for a test user
const inbox = await mailslurp.inboxController.createInbox();
// load the page and click sign up
await t
.expect(Selector("title").innerText)
.eql("React App")
.click(Selector("[data-test=sign-in-create-account-link]"));
// wait for sign up form then fill with email address and sign up
const emailInput = await Selector('[name="email"]')();
await t
.typeText(emailInput, inbox.emailAddress)
.typeText(Selector('[name="password"]'), password)
.click(Selector("[data-test=sign-up-create-account-button]"));
// **Step where the test fails**
// wait for verification code to arrive to email then extract code
const email = await mailslurp.waitController.waitForLatestEmail(
inbox.id,
30000,
true
);
// **Not getting to this code**
// use regex to extract the confirmation code which is 6 digits
const code = /([0-9]{6})$/.exec(email.body)[1];
// now enter code to confirm
await t
.typeText(Selector('[name="code"]'), code)
.click(Selector('[data-test="confirm-sign-up-confirm-button"]'));
// now sign up
const username = await Selector('[name="username"]')();
await t
.typeText(username, inbox.emailAddress)
.typeText(Selector('[name="password"]'), password);
const signIn = await Selector("[data-test=sign-in-sign-in-button]")();
await t.click(signIn);
// wait for sign up
const h1 = await Selector("h1")();
await t.expect(h1.innerText).eql("Welcome");
})
Версии:
почтовый клиент: 13.2.0
тесткафе : 1.15.2
узел : 16.5.0
npm : 7.20.5
Комментарии:
1. Мой обходной путь прямо сейчас состоял в том, чтобы удалить 13.2.0 и установить 11.3.1 из примера кода, и это, похоже, сработало. Поэтому я продолжу работать с этой версией и посмотрю, как далеко я смогу продвинуться.