как полностью автоматизировать тесты Saucelab с помощью Maven?

Это рабочий процесс, который я пытаюсь автоматизировать (это веб-приложение Java):

  1. Разработчик создает/редактирует наборы тестов в Selenium IDE (с Firefox)
  2. Пакет поддерживается в репозитории проекта в виде набора HTML-файлов.
  3. On every Maven build cycle:
    1. Jetty container is started locally at http://localhost:12345 (random port number)
    2. SauceConnect начинает соединять мой локальный хост и сетку Saucelabs
    3. Наборы тестов HTML выполняются в сетке против моего локального контейнера
    4. SauceConnect отключен
    5. Причал контейнер закрыт
    6. Если какой-либо тест в наборе тестов завершился неудачно, сборка Maven не удалась.

Можно ли этого добиться? Более конкретный вопрос: как запускать наборы тестов HTML в Saucelabs? У них есть очень короткая документация по http://ondemand.saucelabs.com:80/selenium-server/driver/, которой я могу воспользоваться, но подробностей о ней я не нашел.


person yegor256    schedule 25.09.2012    source источник


Ответы (1)


Недавно я создал плагин Sauce Connect для Maven. , который позволяет Mojos запускать и останавливать процесс Sauce Connect.

Это позволит вам использовать комбинацию Cargo (которую можно настроить для запуска Jetty), Failsafe] и Sauce Connect для создания экземпляра контейнера и Sauce Connect, запуска тестов и закрытия контейнера и Sauce Connect после завершения тестов. , все из которых можно запустить, вызвав mvn verify.

Плагин Sauce Connect Maven можно включить в свой проект, добавив в файл pom.xml следующее:

<build>
<plugins>
    <!-- Include Sauce Connect plugin -->
    <plugin>
        <groupId>com.saucelabs.maven.plugin</groupId>
        <artifactId>sauce-connect-plugin</artifactId>
        <version>1.0.15</version>
        <configuration>
            <sauceUsername>YOUR_SAUCE_USERNAME</sauceUsername>
            <sauceAccessKey>YOUR_SAUCE_ACCESS_KEY</sauceAccessKey>
        </configuration>
        <executions>
            <!-- Start Sauce Connect prior to running the integration tests -->
            <execution>
                <id>start-sauceconnct</id>
                <phase>pre-integration-test</phase>
                <goals>
                    <goal>start-sauceconnect</goal>
                </goals>
            </execution>
            <!-- Stop the Sauce Connect process after the integration tests have finished -->
            <execution>
                <id>stop-sauceconnect</id>
                <phase>post-integration-test</phase>
                <goals>
                    <goal>stop-sauceconnect</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    ...
</plugins>
</build>
<pluginRepositories>
<pluginRepository>
   <id>saucelabs-repository</id>
   <url>http://repository-saucelabs.forge.cloudbees.com/release</url>
   <releases>
       <enabled>true</enabled>
   </releases>
   <snapshots>
       <enabled>true</enabled>
   </snapshots>
</pluginRepository>
</pluginRepositories>

Я также создал простой пример проекта, который демонстрирует использование плагина Sauce Connect вместе с Cargo и Failsafe.

Плагин довольно новый, поэтому, пожалуйста, дайте мне знать, если у вас есть какие-либо отзывы!

person Ross Rowe    schedule 22.12.2012
comment
Отлично выглядит, спасибо! Поддерживает ли он параллельное выполнение одной и той же сборки на одном сервере? - person yegor256; 22.12.2012
comment
Он должен поддерживать параллельное выполнение, так как код повторно использует логику, содержащуюся в подключаемых модулях Sauce CI, что гарантирует, что один экземпляр Sauce Connect работает для каждого пользователя Sauce, и что Sauce Connect закрывается только тогда, когда последний процесс, который его вызывает, завершен. Дайте мне знать, если есть какие-либо проблемы, хотя:) - person Ross Rowe; 27.12.2012