【问题标题】:Run Geb tests on Jenkins在 Jenkins 上运行 Geb 测试
【发布时间】:2014-05-26 14:19:04
【问题描述】:

我已经使用Geb 为我的 Grails 应用程序编写了一些功能测试。我已将测试配置为与 this example project 相同,这允许您使用 specify a list of browsers 来运行测试。

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

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

【问题讨论】:

    标签: grails selenium functional-testing geb


    【解决方案1】:

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

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

    【讨论】:

    • 自从您的回答以来,我的问题的重点有所改变。您介意提供一些有关如何配置运行 Geb 测试以使用 XVFB 的 Jenkins 作业的详细信息吗?
    【解决方案2】:

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

    我们正在使用这个插件来为 grails 应用程序运行我们的 geb 测试。我们只需要按照plugin site 中的描述进行一些配置,即。在“Jenkins 配置”中定义了 Xvfb 安装,并在“作业配置”选项中选中了“在构建之前启动 Xvfb,并在之后将其关闭”。

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

    sudo apt-get install ttf-dejavu xvfb
    

    【讨论】:

      【解决方案3】:

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

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

      然后,配置插件;

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

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

          我使用与 docker 容器一起部署的 selenium-grid。见https://hub.docker.com/r/selenium/hub/https://github.com/SeleniumHQ/docker-selenium

          因此您不必在 jenkins 服务器中安装 firefox、chrome 等。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-06-22
            • 2014-08-02
            • 1970-01-01
            • 2018-03-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多