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

Har*_*til 8 continuous-integration hudson windows-server-2003 js-test-driver jenkins

我们使用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>
Run Code Online (Sandbox Code Playgroud)

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

  1. 它是一个服务器,我们作为服务帐户运行
  2. 服务器上的浏览器安装存在安全限制

GettingStarted页面JS测试驱动器维基说,我们可以在不同的机器比在JS测试驱动程序服务器运行上运行的浏览器:

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

  1. 有人在Jenkins/Windows设置上做过这个吗?
  2. 是否有其他可选的可扩展设置来运行js-test-driver?

Gab*_*ens 2

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

就我而言,我必须在更多浏览器上进行测试:IE7、IE8、IE9、Chrome、Safari、Firefox 3.6 和最新版本,因此,我所做的就是安装包含我需要的所有浏览器的虚拟机,以及另一个jstestdriver 在服务器模式下运行的机器:

java -Xmx256m -jar JsTestDriver-1.3.4-a.jar --port 4224
Run Code Online (Sandbox Code Playgroud)

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

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

taskkill /f /IM iexplore.exe
iexplore.exe http://[jstd-server-ip]:4224/capture
Run Code Online (Sandbox Code Playgroud)

这些机器和 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>
Run Code Online (Sandbox Code Playgroud)

JsTestDriver.conf 的顶部添加以下行:

server: http://[jstd-server-ip]:4224
Run Code Online (Sandbox Code Playgroud)

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

希望这对您有帮助!