可以在集成测试中的规格之间重新启动浏览器吗

Is it ok to restart browser between specs in Integration Tests?

本文关键字:之间 重新启动 浏览器 集成测试      更新时间:2023-09-26

我们为基于AngularJS的项目提供了编号或Protractor/Jastine规格。可以这样做吗:

afterAll(function(){
   browser.restart();
}

清理规格之间的东西?

有一个内置设置-restartBrowserBetweenTests:

// If true, protractor will restart the browser between each test.
// CAUTION: This will cause your tests to slow down drastically.
restartBrowserBetweenTests: false,

正如评论中所说,这会导致测试速度减慢,请确保有真正的原因在测试之间重新启动浏览器。请注意,该设置意味着使用每个it()而不是describe()重新启动浏览器。

请注意,内部restart()派生现有驱动程序实例,退出当前驱动程序并重新初始化所有全局-browserelement$等。

在两次测试之间,可能需要重新启动浏览器/驱动程序,例如,以前创建的cookie将完全丢失/删除。例如,这可能允许在每次测试后不显式注销以节省时间(不确定这通常是否好)。


因此,作为一种快捷方式(直到我找不到承诺的真正问题为止),我只想在每次规范后重新启动浏览器。我知道这通常是一种错误的方法,但我想把它作为一种临时解决方案。

作为您的临时解决方案,为了强制执行测试隔离,我认为在每个测试套件之后重新启动浏览器是可以的。但是,请确保您不会通过全局可用的browser对象共享任何变量——在每次测试中,您都会得到一个全新的browser


顺便说一句,你也可以尝试强制浏览器的私人/隐姓埋名模式:

multiCapabilities: [
    {
        browserName: "chrome",
        chromeOptions: {
            args: ["incognito", "disable-extensions"]
        },
     }
],