【问题标题】:Behat in Multiple Browsers in ParallelBehat 在多个浏览器中并行
【发布时间】:2015-05-26 09:03:45
【问题描述】:

我们目前使用Behat 3 为我们的网站自动执行 BDD 测试。

当前设置使用Jenkins 运行Selenium,它附加到Firefox 并使用XVFB 进行渲染(这允许我们在出现任何问题时保存屏幕截图)。

这对于测试网站(包括 JavaScript)是否正常运行以及用户能否成功执行每个记录的任务非常有用。

我希望扩展我们的测试设施,我想添加的一件事是检查多个浏览器的能力。这一点非常重要,因为我们偶尔会遇到可能会破坏功能的怪癖。

由于目前运行测试需要一个多小时的时间(我们在 Jenkins 上为该站点提供了 4 个套件),因此我希望同时运行所有浏览器。如果我找不到同时执行此操作的方法,那么我可能会设置多个 Behat 配置文件并依次运行每个配置文件。

我一直在寻找一种可能的解决方案是Ghostlab。这将允许我们同时测试多个浏览器和多个设备,包括移动设备。问题是我找不到以有意义的方式将此加入 Behat 的方法。

我可以运行一个连接到 Ghostlab 的浏览器,这将导致在所有连接的浏览器上执行相同的操作,但是,如果不是由 Selenium 控制的浏览器中断,我不知道我们将如何捕获它信息。

TL;DR:我有什么方法可以跨多个浏览器并行运行 BDD(首选 Behat)测试,并从任何失败的浏览器中捕获信息?

【问题讨论】:

    标签: selenium jenkins bdd behat mink


    【解决方案1】:

    这就是 multi-configuration jobs(或矩阵作业)在 Jenkins 中的设计目的。

    您只需指定一次作业配置,但添加一个或多个每次都应更改的变量,构建一个组合矩阵(在您的情况下,该矩阵有一个维度:浏览器)。

    Jenkins 然后并行运行一个主构建和多个子构建——矩阵中的每个组合一个。然后,您可以清楚地看到每种组合的结果。

    这要求您的测试作业可以参数化,即您可以在运行时选择应该运行哪个浏览器,而不是在一个作业中同时运行所有测试。

    Jenkins wiki 关于此功能的文档很少,但有一些很好的 blog posts(和 Stack Overflow 问题)关于如何设置它。

    矩阵作业将使用 Jenkins 中所有可用的“执行程序”,以尽可能并行运行构建。
    在默认的 Jenkins 安装中,有两个可用的执行程序,但您可以更改此设置,或通过添加 further build machines 扩展 Jenkins。

    【讨论】:

    • 我喜欢这个答案,并且我知道这个功能,但是由于 E2E 测试期间发生的数据库更改,我避免了它。由于它是我正在测试的网站,因此很难(尽管并非不可能)任意创建和销毁虚拟主机和数据库模式。此外,我仍然无法测试移动设备等。如果没有其他答案可以解决这些问题,我会将其标记为正确,但我希望有一种更简单的方法来做到这一点。嗯...我想知道我是否可以使用多配置作业和虚拟机来做到这一点。
    • 我会说这是正确的答案,构建应该在容器或虚拟机中运行。
    猜你喜欢
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多