Я пытаюсь настроить тесты Selenium на сервере CI (Jenkins). Он работает на Centos 5 и не имеет монитора. Для тестов Selenium мне нужен способ запустить Firefox, поэтому у меня был установлен Xvfb. Я использую selenium-maven-plugin для запуска Xvfb.
<profile>
<id>xvfb-selenium</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>selenium-maven-plugin</artifactId>
<version>2.0</version>
<executions>
<execution>
<id>xvfb</id>
<phase>pre-integration-test</phase>
<goals>
<goal>xvfb</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
Он находится внутри профиля, потому что я хочу запустить его на CI, но машинам разработки это не нужно.
Я снова использую плагин selenium-maven для запуска моих тестов selenese
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>selenium-maven-plugin</artifactId>
<version>2.0</version>
<executions>
<execution>
<id>nessos-selenium-tests</id>
<phase>integration-test</phase>
<configuration>
<browser>*firefox</browser>
<suite>src/test/resources/test-suite.html</suite>
<startURL>${selenium.startURL}</startURL>
</configuration>
<goals>
<goal>selenese</goal>
</goals>
</execution>
</executions>
</plugin>
Теперь, когда я пытаюсь запустить это, я получаю такую ошибку в Jenkins:
message : Selenium is already running on port 4444. Or some other service is.
Stack trace :
java.net.BindException: Selenium is already running on port 4444. Or some other service is.
at org.openqa.selenium.server.SeleniumServer.start(SeleniumServer.java:410)
Это мало что мне говорит, поэтому я исследовал больше. В target / selenium / xvfb.log у меня такая ошибка:
(EE) config/hal: NewInputDeviceRequest failed (2)
(EE) config/hal: NewInputDeviceRequest failed (2)
(EE) config/hal: NewInputDeviceRequest failed (2)
(EE) config/hal: NewInputDeviceRequest failed (2)
(EE) config/hal: NewInputDeviceRequest failed (2)
На данный момент я ничего не понимаю. Из журналов maven я вижу, что цель xvfb запускается до selenese с этим выводом:
Created dir: /home/jenkins/workspace/myBuild/target/selenium
Launching Xvfb
[INFO] Redirecting output to: /home/jenkins/workspace/myBuild/target/selenium/xvfb.log
Waiting for Xvfb...
Xvfb started
Я пробовал следовать инструкциям здесь: http://mojo.codehaus.org/selenium-maven-plugin/examples/headless-with-xvfb.html
Я сделал
chmod u+s `which Xvfb`
вещь, а сообщение об ошибке изменилось на:
Fatal server error:
PAM authentication failed, cannot start X server.
Perhaps you do not have console ownership?
Внизу страницы headless-with-xvfb были инструкции, как это исправить. Я тоже это сделал, и теперь я получаю (EE) config/hal: NewInputDeviceRequest failed (2)
очередной раз.
Кто-нибудь знает, как я буду продолжать отлаживать эту ошибку? Или кто-нибудь знает, что вообще означает эта ошибка?
Действительно неловко :) Он уже работал, и это сообщение об ошибке можно игнорировать. Мое последнее решение - запустить xvfb с плагином на этапе предварительной интеграции, запустить тесты jUnit с API WebDriver на этапе тестирования интеграции. Xvfb закрывается, когда запуск maven завершен