Я пытаюсь использовать TestCafe для автоматизации начальной настройки моего проекта. В середине настройки должен быть выполнен запрос POST, который занимает много времени, прежде чем настройка может быть продолжена. Это мой runner.js, и он работает на узле 10:

const longRunningPostRequest = require('./setup/seed-database');
const createTestCafe = require('testcafe');

const RUN_OPTIONS = {pageLoadTimeout: 120000, selectorTimeout: 15000};

const setupLicense = async () => {
  const testcafe = await createTestCafe('localhost', 1337, 1338, undefined, true);
  const runner = testcafe.createRunner();
  const failedCount = await runner
    .src(['fixtures/setup-license.js'])
    .browsers(['chrome -incognito'])
    .run(RUN_OPTIONS);
  await testcafe.close();
};

const setupData = async () => {
  const testcafe = await createTestCafe('localhost', 1337, 1338, undefined, true)
  const runner = testcafe.createRunner();
  await runner
    .src(['fixtures/setup-wizard.js'])
    .browsers(['chrome -incognito'])
    .run(RUN_OPTIONS);
  await testcafe.close();
};

// running them all in sequence
setupLicense()
  .then(() => longRunningPostRequest()) // long-running POST request. Typically takes around 100 seconds to complete
  .then(() => setupData())
  .catch(err => console.log('Error occured:', err));

Когда я запускаю приложение node runner.js, они работают. Однако отображаются только результаты приборов в setup-license.js, в то время как приборы второго бегуна fixtures/setup-wizard.js не показывают никаких выходных данных (но они выполняются и работают), но это очень раздражает работать, так как в случае сбоя сообщение об ошибке также проглатывается. Обходной путь, который я сделал, заключался в том, чтобы закомментировать содержимое фикстуры setupLicense, чтобы отображались выходные данные setupData.

Как мне решить эту проблему?

2
Afif Sohaili 7 Дек 2018 в 11:23

1 ответ

Лучший ответ

Попробуйте использовать последнюю версию testcafe@0.23.3. Команда недавно исправила ошибку, которая могла вызвать такие проблемы - TestCafe закрыл выходной поток stdout, когда не был указан явный репортер. Это предотвращает отображение результатов тестирования во втором и последующих сеансах тестирования, начиная с одного файла сценария.

В качестве обходного пути можно явно включить spec Reporter, добавив . reporter ('spec') call к вашему коду настройки как показано в этом примере:

gist.github.com/AndreyBelym/c9afd908d4b2891a62a4ba87623ec064

2
Alex Skorkin 24 Фев 2021 в 15:15