Docker TestCafe - невозможно запустить тесты с использованием класса runner - PullRequest
0 голосов
/ 08 ноября 2019

Все мои тесты выполняются в Docker-контейнере, и все работает нормально. Так как у меня есть несколько тестовых файлов, для которых требуются параллельные тесты, и файл, для которого не требуется параллельный тест, поэтому мне нужно создать тестовый прогон для выполнения моих тестов. Вот как выглядит мой класс бегунов:

const createTestCafe = require('testcafe');

let testcafe = null;

createTestCafe('localhost', 1337, 1338)
  .then((tc) => {
    testcafe = tc;
    const runner1 = testcafe.createRunner();
    const runner2 = testcafe.createRunner();

    const promise1 = runner1
      .src(['/tests/uitests/**/conctests/accounttest.js', '/tests/uitests/**/conctests/dashtest.js'])
      .browsers('chromium')
      .screenshots({ takeOnFails: true })
      .reporter(['spec', {
        name: 'html',
        output: 'resultsrunner1.html' }, {
        name: 'xunit',
        output: 'res1.xml',
      }])
      .concurrency(3)
      .run({
        skipJsErrors: true,
        quarantineMode: true,
      });

    const promise2 = runner2
      .src('/tests/uitests/**/conctests/roletest.js')
      .browsers('chromium')
      .screenshots({ takeOnFails: true })
      .reporter(['spec', {
        name: 'html',
        output: 'resultsrunner2.html' }, {
        name: 'xunit',
        output: 'res2.xml',
      }])
      .run({
        skipJsErrors: true,
        quarantineMode: true,
      });

    return Promise.all([promise1, promise2]);
  })
  .then(() => {
    testcafe.close();
    process.exit();
  })
  .catch((err) => {
    console.log(err);
    testcafe.close();
    process.exit(1);
  });

, когда я запускаю его с помощью команды:

docker run --net=host -v `pwd`:/tests -it --entrypoint node testcafe /tests/testrunner.js

Я получаю эту ошибку:

Error: Unable to establish one or more of the specified browser connections. This can be caused by network issues or remote device failure.
at /tests/node_modules/testcafe/src/runner/browser-set.js:84:30
at Generator.next (<anonymous>)
at step (/tests/node_modules/babel-runtime/helpers/asyncToGenerator.js:17:30)
at /tests/node_modules/babel-runtime/helpers/asyncToGenerator.js:35:14
at new Promise (<anonymous>)
at new F (/tests/node_modules/core-js/library/modules/_export.js:36:28)
at /tests/node_modules/babel-runtime/helpers/asyncToGenerator.js:14:12
at BrowserSet._waitConnectionsOpened (/tests/node_modules/testcafe/src/runner/browser-set.js:77:37)
at _waitConnectionsOpened (/tests/node_modules/testcafe/src/runner/browser-set.js:107:35)
at invokeCallback (/tests/node_modules/pinkie/index.js:60:12)
at Array.forEach (<anonymous>)
at publish (/tests/node_modules/pinkie/index.js:147:32)
at Array.publishFulfillment (/tests/node_modules/pinkie/index.js:152:2)
at Immediate.asyncFlush (/tests/node_modules/pinkie/index.js:17:19)
at runCallback (timers.js:706:11)
at tryOnImmediate (timers.js:676:5)
at processImmediate (timers.js:658:5)
at process.topLevelDomainCallback (domain.js:126:23)

Я тоже пробовал firefox и chromium --no-sandbox, но у меня ничего не получалось. В моем случае я использую существующее доступное изображение браузера из TestCafe. Пожалуйста, предложите, так как все мои тесты застряли прямо сейчас.

1 Ответ

2 голосов
/ 11 ноября 2019

Попробуйте использовать безголовый браузер. Если вам нужно запустить тесты с пользовательским интерфейсом браузера, выполните этот шаг в вашем средстве запуска, чтобы инициализировать сервер отображения в памяти.

...