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

8
我们使用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. 服务器上的浏览器安装存在安全限制
JS测试驱动器维基上的GettingStarted页面说,我们可以在与js-test-driver服务器不同的机器上运行浏览器:

在您运行任何测试之前,您需要启动测试服务器并捕获至少一个从浏览器。服务器不必驻留在运行测试工具的计算机上,浏览器本身也可以在不同的机器上.

  1. 有没有人在Jenkins / Windows设置上做过这件事?
  2. 还有其他可扩展设置以运行js-test-driver吗?
1个回答

2

我做过类似的事情,但不是在完全的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

希望这可以帮到您!


运行得很顺利... 我在 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="--verbose"/> <arg line="--reset"/> <arg line="--tests all"/> <arg line="--testOutput '${results.jstestdriver.dir}'"/> </exec> </target> - Hari Pachuveetil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接