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

yeg*_*256 2 java selenium saucelabs

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

  1. 开发人员在Selenium IDE(w/Firefox)中创建/编辑测试套件
  2. 该套件作为HTML文件的集合在项目存储库中维护
  3. 在每个Maven构建周期:
    1. Jetty容器在本地启动http://localhost:12345(随机端口号)
    2. SauceConnect开始桥接我的本地主机和Saucelabs网格
    3. HTML测试套件在网格上针对我的本地容器执行
    4. SauceConnect已关闭
    5. Jetty容器被关闭
    6. 如果测试套件中的任何测试失败 - Maven构建失败

是否有可能实现这一目标?更具体的问题是如何在Saucelabs运行HTML测试套件?他们有一个非常简短的文档http://ondemand.saucelabs.com:80/selenium-server/driver/,我可以使用,但我没有找到任何有关它的细节.

小智 5

我最近为Maven创建了一个Sauce Connect插件,它提供了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>
Run Code Online (Sandbox Code Playgroud)

我还创建了一个简单的示例项目,演示了Sauce Connect插件以及Cargo和Failsafe的用法.

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