Транспортир: может включать виртуальное время только для страниц, а не рабочих - PullRequest
0 голосов
/ 04 октября 2018

В своем угловом приложении я передал часть тяжелой логики веб-работнику.После запуска тестов e2e с использованием транспортира в Chrome Headless я получаю ошибку ниже при каждом действии транспортира.Обратите внимание, что результаты e2e все еще хороши.Только этот надоедливый журнал ошибок.

[1003/234747.472:ERROR:inspector_emulation_agent.cc(537)] Can only enable virtual time for pages, not workers

Кто-то уже видел это?

Сама ошибка исходит от Chromium

Response InspectorEmulationAgent::AssertPage() {
  if (!web_local_frame_) {
    LOG(ERROR) << "Can only enable virtual time for pages, not workers";
    return Response::InvalidParams(
      "Can only enable virtual time for pages, not workers");
  }
  return Response::OK();
}

https://chromium.googlesource.com/chromium/src/third_party/+/master/blink/renderer/core/inspector/inspector_emulation_agent.cc

1 Ответ

0 голосов
/ 15 октября 2018

В вашем файле конфигурации есть объект capabilities (или multiCapabilities, если вы запускаете свои тесты для нескольких браузеров).Этот объект, помимо прочего, имеет свойство args, которое принимает массив аргументов

capabilities: {
    "browserName": "chrome",
    "chromeOptions": {
        "args": ["incognito","--window-size=1920,1080","disable-extensions","--no-sandbox","start-maximized","--test-type=browser"]
    }
}

Удалить "--no-sandbox" аргумент!

Что этот парень делает, так это позволяет вашим тестам бытьпобежал из удаленного контейнера (т.е. в Дженкинс).В то же время, если вы включаете аргумент при запуске тестов на своей машине, у него есть побочные эффекты, как описано здесь Экземпляры Chrome не закрываются после запуска Test Case в Protractor


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

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

Моим постоянным решением было создать необязательный флаг isHost через Grunt со значением по умолчанию false.Затем в моем конфиге, если параметр true, я нажимаю "--no-sandbox" поверх других аргументов chrome.И когда я настроил CI, я запускаю Protractor с этим аргументом

...