如何在Jenkins上使用远程浏览器进行js-test-driver任务?

时间:2012-05-04 14:05:25

标签: continuous-integration hudson jenkins windows-server-2003 js-test-driver

我们使用Jenkins将.NET Web应用程序与NAnt / NUnit持续集成以进行.NET测试。 Jenkins配置了9个从属服务器(所有这些服务器都是Windows Server 2003),它们运行许多构建以及自动化测试。

我们正在尝试设置js-test-driver来运行我们的JavaScript单元测试,而下面的NAnt任务在开发人员工作站本地运行良好。 Internet Explorer是我们唯一想要测试的浏览器,因为它是我们所有Web应用程序的唯一目标浏览器。

<target name="jsTests" >
    <echo message="Running JavaScript tests..." />
    <exec program="java.exe">
        <arg line="-jar '${jstestdriver.dir}\JsTestDriver.jar'" />
        <arg line="--config '${ui.webtests.dir}\JsTestDriver.conf'" />
        <arg line="--port 9876"/>
        <arg line="--browser 'C:\program files\internet explorer\iexplore.exe'"/>
        <arg line="--verbose"/>
        <arg line="--reset"/>
        <arg line="--tests all"/>
        <arg line="--testOutput '${results.jstestdriver.dir}'"/>
    </exec>
</target>

我们在Jenkins遇到同样的问题,可能是因为:

  1. 这是一台服务器,我们作为服务帐户运行
  2. 对浏览器安装有安全限制 服务器
  3. js-test-driver wiki上的GettingStarted页面说我们可以在与运行js-test-driver服务器不同的机器上运行浏览器:

      

    在运行任何测试之前,您需要启动测试服务器   并捕获至少一个从属浏览器。服务器不必   驻留在测试运行器所在的机器上,以及浏览器   他们自己也可以在不同的机器上

    1. 有人在Jenkins / Windows设置上做过这个吗?
    2. 是否有其他可供运行的可扩展设置的替代方案 JS-测试驾驶员?

1 个答案:

答案 0 :(得分:2)

我在100%的Windows设置中做过类似但没有的事情,但我想你在Windows上做类似的事情时不会有任何问题。

在我的情况下,我不得不在更多浏览器上进行测试:IE7,IE8,IE9,Chrome,Safari,Firefox 3.6和最新版本,所以,我所做的,是安装虚拟机,包含我需要的所有浏览器,以及在服务器模式下运行jstestdriver的另一台机器:

java -Xmx256m -jar JsTestDriver-1.3.4-a.jar --port 4224

所有带浏览器的虚拟机总是有一个指向该服务器的实例(http:// [jstd-server-ip]:4224 / capture)

在那些机器上,我创建了一个计划任务,每天早上重置浏览器的实例,因为我已经看到一些浏览器,特别是IE7,如果运行超过3天,往往会停止工作。

taskkill /f /IM iexplore.exe
iexplore.exe http://[jstd-server-ip]:4224/capture

这些机器和jstestdriver服务器一直在运行。我不确定你的情况是否可行。

然后,在应用程序上,我使用maven插件启动测试:http://code.google.com/p/jstd-maven-plugin/wiki/GettingStarted在我的情况下效果更好,但如果你不使用maven,我想在NAnt中应该是这样的:

<target name="jsTests" >
    <echo message="Running JavaScript tests..." />
    <exec program="java.exe">
        <arg line="-jar '${jstestdriver.dir}\JsTestDriver.jar'" />
        <arg line="--config '${ui.webtests.dir}\JsTestDriver.conf'" />
        <arg line="--browser 'C:\program files\internet explorer\iexplore.exe'"/>
        <arg line="--verbose"/>
        <arg line="--reset"/>
        <arg line="--tests all"/>
        <arg line="--testOutput '${results.jstestdriver.dir}'"/>
    </exec>
</target>

JsTestDriver.conf 中添加以下行:

server: http://[jstd-server-ip]:4224

这告诉jenkins执行的jstestdriver的客户端实例使用 http:// [jstd-server-ip]:4224 作为服务器。

希望这能帮到你!