У нас Zalenium Grid работает в Pod Kubernetes на AWS, и тесты иногда случайным образом зависают примерно на 2 минуты, а затем продолжаются, как будто ничего не произошло.Эта проблема является совершенно случайной и возникает на разных этапах теста, при этом не существует реального шаблона для идентификации.
Тесты выполняются параллельно, и в сетке более чем достаточно узлов для поддержки всего.Я использую тестовый набор 203, и время выполнения варьируется от (самых быстрых) 58 с до (самых медленных - сборка отменяется при слишком долгой работе) 15 минут.Сборка 58-х - это то, как я ожидаю, что она будет всегда работать, когда Grid не занят другими выполнениями сборки, но среднее время выполнения составляет где-то около 6-7 минут.
Я настроил сетку docker-selenium(не Zalenium) на локальной машине, и тот же сценарий здесь не происходит.Тесты имеют нормальное время выполнения, а среднее время сборки составляет около 3 минут (меньше узлов, чем у нашей Zalenium Grid).То же самое касается его локального запуска на моей машине для разработки.
Некоторое тестирование между параллельным и одиночным выполнением также показывает, что это как-то связано с параллельным выполнением нескольких тестов.
Поскольку это может быть многопоточностьВ связи с этим, я вставляю сюда зависимость surefire, чтобы показать потоки для Grid.Я не вижу ни одного кода, который мог бы опубликовать, чтобы прояснить эту проблему, поскольку это почти случайное поведение почти в каждом тесте, который у нас есть.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
<configuration>
<parallel>classesAndMethods</parallel>
<threadCount>5</threadCount>
<forkCount>4</forkCount>
<reuseForks>true</reuseForks>
<!--<argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine> -->
<testFailureIgnore>true</testFailureIgnore>
<argLine>
-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
</argLine>
<properties>
<property>
<name>listener</name>
<value>io.qameta.allure.junit4.AllureJunit4</value>
</property>
</properties>
<groups>${testcase.groups}</groups>
</configuration>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
</plugin>
Максимальное время выполнения нашего "самого длинного" теста должно быть около 40-50 сек, но некоторые тесты, которые обычно занимают около 10 сек, требуют более 2 минут для запуска.Проверка видео в Zalenium Dashboard показывает, что тест зависает, но браузер и все в порядке (например, когда он зависает и вводит, вы можете видеть, что курсор мигает).