如何使用Maven完全自动化Saucelabs测试?

时间:2012-09-25 08:58:58

标签: java selenium saucelabs

这是我正在尝试自动化的工作流程(它是一个Java Web应用程序):

  1. 开发人员在Selenium IDE(带有Firefox)
  2. 中创建/编辑测试套件
  3. 该套件作为HTML文件的集合在项目存储库中维护
  4. 在每个Maven构建周期中:
    1. Jetty容器在http://localhost:12345(随机端口号)
    2. 本地启动
    3. SauceConnect开始桥接我的本地主机和Saucelabs网格
    4. HTML测试套件在网格上执行,针对我的本地容器
    5. 关闭SauceConnect
    6. Jetty容器已关闭
    7. 如果测试套件中的任何测试失败 - Maven构建失败
  5. 有可能实现这一目标吗?更具体的问题是如何在Saucelabs运行HTML测试套件?他们有关于http://ondemand.saucelabs.com:80/selenium-server/driver/的非常简短的文档,我可以使用,但我没有找到任何有关它的详细信息。

1 个答案:

答案 0 :(得分:5)

我最近创建了一个Sauce Connect plugin for Maven,它提供了Mojos来启动和停止Sauce Connect过程。

这将允许您使用Cargo(可配置为启动Jetty),Failsafe和Sauce Connect的组合来实例化您的容器和Sauce Connect,运行您的测试,并关闭容器和Sauce Connect测试已经完成,所有这些测试都可以通过调用mvn verify来运行。

通过在pom.xml文件中添加以下内容,可以将Sauce Connect Maven插件包含在您的项目中:

<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>

我还创建了一个simple example project,它演示了Sauce Connect插件以及Cargo和Failsafe的用法。

该插件相当新,所以如果您有任何反馈,请告诉我!