Тесты testcafe E2E зависают в Internet Explorer 11 при запуске на сервере CI (выполняется службой Windows)

Я использую testcafe для запуска тестов E2E. Все работает, когда я запускаю testcafe из командной строки. Когда тесты запускаются агентом сборки (служба Windows), тесты зависают, но только в Internet Explorer (Chrome и FF работают). Мне удалось воспроизвести эту проблему на Win10 и WinServer2012. Проблема, похоже, возникает только тогда, когда Internet Explorer запускается в так называемом нулевом сеансе (приложение с графическим интерфейсом, запускаемое службой Windows). Я уже пробовал разных пользователей (LOCALSYSTEM и локальная учетная запись с правами администратора), но всегда получаю один и тот же результат - тесты зависают. Все работает, когда я запускаю браузер через логин / psexec / runas. Я уже пробовал поиграть с настройками безопасности IE, своим брандмауэром и антивирусом. Но проблема все еще сохраняется. Последний вариант, который мне надоел, - это использовать отладчик VS для подключения к браузеру и проверки консоли на наличие ошибок js, но там ошибок не было.

У кого-нибудь раньше были такие проблемы? Я буду признателен за любые советы, как отладить эту проблему - потому что у меня больше нет идей ....

Журнал из testcafe:

 UnhandledPromiseRejectionWarning: Error: The IE 11.0.0 / Windows 10.0.0 browser disconnected. This problem may appear when a brwser hangs or is closed, or due to network issues.
    at Timeout.<anonymous> (C:\Users\xxx\source\repos\ClientPortalSmokeTests\node_modules\testcafe\lib\browser\connection\index.js:23:34)
    at ontimeout (timers.js:482:11)
    at tryOnTimeout (timers.js:317:5)
    at Timer.listOnTimeout (timers.js:277:5)
(node:23936) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async funcion without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:23936) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handld will terminate the Node.js process with a non-zero exit code.

person Marcin Chwedczuk    schedule 31.10.2018    source источник


Ответы (2)


Я вижу два варианта.

Сначала попробуйте включить параметр «Разрешить службе взаимодействовать с рабочим столом» в свойствах службы на вкладке «Вход в систему».

Если это не помогает, попробуйте запустить свои службы в ненулевом сеансе. В следующем потоке можно найти более подробную информацию о том, как это сделать:

Создание процесс в ненулевом сеансе из службы на сервере Windows-2008?

Кроме того, насколько мне известно, позиция Microsoft состоит в том, чтобы избегать запуска приложений пользовательского интерфейса из служб Windows. Это считается плохой практикой. Вот несколько советов по этому поводу: Визуальное тестирование пользовательского интерфейса с использованием собственных агентов Windows.

person Alex Skorkin    schedule 05.11.2018
comment
Я уже пробовал это безуспешно. TestCafe не использует какие-либо драйверы, которые должны взаимодействовать с окнами браузера (за исключением инструментов, используемых для создания снимков экрана). Вместо этого TC добавляет к вашему приложению свои собственные JS-файлы, открывая ваше приложение через прокси. - person Marcin Chwedczuk; 28.11.2018

Я столкнулся с подобной проблемой. Мои тесты зависают в IE 11.

Я удалил все временные файлы из IE11 (через Свойства обозревателя -> Удалить все временные файлы), и мои тесты снова запускаются. Через некоторое время тесты снова начинают зависать.

person Danilo    schedule 27.11.2018