在Jenkins上运行Geb测试

时间:2014-05-26 14:19:04

标签: grails selenium functional-testing geb

我使用Geb为我的Grails应用编写了一些功能测试。我已将我的测试配置为与this example project完全相同,这样您就可以specify a list of browsers运行测试。

当我在本地针对Firefox运行时,测试通过。但是,如果我在Jenkins上运行它们会失败,因为Firefox无法在无头模式下运行。这个问题的常见解决方案似乎是使用XVFB来模拟显示,以便Firefox可以在无头机器上运行。我已经在Jenkins机器上成功安装了XVFB,但我不确定为了让XVFB使用运行功能测试的Jenkins作业需要哪些其他配置?

有一个XVFB Jenkins plugin可用,我应该使用这个,还是有另一种人们成功的方法?

5 个答案:

答案 0 :(得分:0)

我真的不记得为什么我们没有使用Xvfb Jenkins插件,但这就是我们设置它的方式:

  • 让Xvfb作为服务在您的奴隶上运行,提供一定的显示,例如99.
  • 设置一个env变量,让您的浏览器用于测试知道要附加到哪个显示,即DISPLAY=:99作为测试前执行作业的配置步骤,我们使用EnvInject Plugin

答案 1 :(得分:0)

  

有一个XVFB Jenkins插件可用,我应该使用它还是有另一种人们成功的方法?

我们正在使用此插件来运行grails应用程序的geb测试。我们只需按照plugin site所述进行一些配置即ie。 in" Jenkins配置"定义了Xvfb安装和"作业配置"选项"在构建之前启动Xvfb,并在"之后关闭它。检查。

我们的Jenkins在Debian上运行所以我们必须安装xvfb包(以及ttf-dejavu)

sudo apt-get install ttf-dejavu xvfb

答案 2 :(得分:0)

我按如下方式安装了Jenkins插件;

转到管理Jenkins>管理插件并安装Xvfb插件

然后,配置插件;

管理Jenkins> “配置系统”或“全局工具配置”>向下滚动到Xvfb安装并给它一个默认名称和可执行路径(可以在终端中使用“which Xvfb”找到)。 现在在框中安装Firefox: yum install firefox

最后,通过选中新的“在构建之前启动Xvfb,然后在之后将其关闭”复选框来配置相关项目,并使用Firefox作为所选浏览器运行geb测试。

答案 3 :(得分:0)

我们所做并且满意的是而不是Xvfb ,但在Jenkins服务器上使用 PhantomJS(PJS)并结合Geb的屏幕截图(报告)功能以便记录重要的测试步骤以及失败。根据页面的复杂程度,您还可以使用 HtmlUnit +激活的JavaScript 而不是PJS。 Xvfb的缺点是你真的需要在通常无头的Jenkins服务器上安装GUI浏览器,启动它们并干净地关闭它们等等。如果我是你,我不会这样做。 PJS和HtmlUnit的另一个优点是,您还可以在开发人员计算机上本地运行测试,而无需浏览器窗口始终干扰您的IDE。这是Chrome,FF,IE等其他浏览器中本地测试的一个很好的附加功能。

更新:您应该在构建中设置不同的Maven配置文件或至少设置不同的geb.env变量,以便在GebConfig中决定使用哪个浏览器进行测试。这样你就非常灵活。我们使用它在普通浏览器,无头浏览器和云服务(如TestChameleon,BrowserStack或SauceLabs)之间切换。

答案 4 :(得分:0)

我使用部署了docker容器的selenium-grid。请参阅https://hub.docker.com/r/selenium/hub/https://github.com/SeleniumHQ/docker-selenium

所以你不必在你的jenkins服务器上安装firefox,chrome,....