MailSlurp с примером кода TestCafe с ошибкой «с тех пор» во время ожидания последнего письма

#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 из примера кода, и это, похоже, сработало. Поэтому я продолжу работать с этой версией и посмотрю, как далеко я смогу продвинуться.