在一个GebReportingSpec中驱动两个不同的浏览器?

时间:2014-05-13 14:38:54

标签: grails functional-testing geb

我在Grails 2.3.7应用程序中使用geb和spock进行功能测试。该应用程序允许用户之间的实时交互,我想自动测试。

是否有人知道如何在一个规范中运行两个不同的浏览器,或者是否可行?例如,请参阅下面的伪代码,了解我如何在一个完美的世界中工作。

@Stepwise
class ChatPageSpec extends GebReportingSpec {

    def "login with chrome"() {
    }

    def "login with firefox"() {
    }

    def "send chat request with chrome"() {
    }

    def "accept chat request with firefox"() {
    }

    def "send hello with chrome"() {
    }

    def "receive hello with firefox"() {
    }
}

并行运行测试,因为Craig描述(http://www.objectpartners.com/2013/11/14/parallel-grails-functional-tests-with-geb-and-gradle/)看起来很有前途,但如果我理解正确,并行测试将使用不同的应用实例,这些实例不会起作用。另外,@ Stepwise或类似的东西必须保持浏览器同步。

我还检查了poly驱动程序插件(http://grails.org/plugin/poly-driver),但它看起来像是为每个Spec的一个浏览器设计的。

1 个答案:

答案 0 :(得分:2)

我担心你需要为此手工制作东西。

实现这一目标的an example曾被发布到Geb邮件列表中。我自己从未使用它,但代码看起来很合理。感觉您要使用MultiBrowserGebSpec并覆盖createBrowserMap()

您可以手动创建驱动程序实例,然后使用setDriver()在浏览器实例上设置它。另一种方法是为不同的浏览器设置不同的配置文件,您可以使用getConf()加载它们并传递给Browser构造函数。另一种方法是在一个GebConfig.groovy中为不同的浏览器设置不同的环境,并使用the constructor that accepts environment name创建的不同ConfifgurationLoader