Асинхронные / ожидающие t тестовые коды не работают в beforeEach of TestCafe - PullRequest
0 голосов
/ 04 марта 2019

Когда я пытался использовать beforeEach в TestCafe, функция с некоторыми тестовыми кодами внутри не работала должным образом.Я использую doLogin во всех различных приборах и тестах.

Не работает

const doLogin = async (t) => {
  const login = new Login();

  await t
    .maximizeWindow()
    .typeText(login.emailInput, accounts.EMAIL_SUCCESS, { replace: true, paste: true })
    .expect(login.emailInput.value).eql(accounts.EMAIL_SUCCESS, 'check an email')
    .typeText(login.passwordInput, accounts.PASSWORD, { paste: true })
    .click(login.loginButton);
};

fixture`App > ${menuName}`
  .page`${HOST}`
  .beforeEach(async (t) => {
    // This function is called
    // but tests inside the function were not run
    doLogin(t)
  });

Рабочий случай с устройством

fixture`App > ${menuName}`
  .page`${HOST}`
  .beforeEach(async (t) => {
    const login = new Login();

    // But this case is working.
    await t
      .maximizeWindow()
      .typeText(login.emailInput, accounts.EMAIL_SUCCESS, { replace: true, paste: true })
      .expect(login.emailInput.value).eql(accounts.EMAIL_SUCCESS, 'check an email')
      .typeText(login.passwordInput, accounts.PASSWORD, { paste: true })
      .click(login.loginButton);
  });

Рабочий случай с вызовом изtest

test(`show all ${menuName} menu's components`, async (t) => {
  // When I added a function directly into a test function then it worked.
  doLogin(t);
  // some codes

Может ли кто-нибудь сказать мне проблему в этом коде?

В официальном документе сказано: At the moment test hooks run, the tested webpage is already loaded, so that you can use test actions and other test run API inside test hooks.

Спасибо ввперед.

1 Ответ

0 голосов
/ 04 марта 2019

Кажется, вы пропустили ключевое слово await перед вызовом doLogin():

fixture`App > ${menuName}`
  .page`${HOST}`
  .beforeEach(async (t) => {
    // Don't forget about await
    await doLogin(t)
  });

Из-за особенностей реализации в некоторых случаях можно вызвать функцию async без await,но лучше не полагаться на это и всегда использовать await с async функциями.

Если вы добавите ключевое слово async, и оно не исправит тест, не стесняйтесь создавать отчет об ошибке в репозитории TestCafe и полный пример, который можно запустить, чтобы воспроизвести проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...