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

我们的基于AngularJS的项目有数量或Protractor / Jasmine规格.可以这样做:

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().

请注意,internally restart()分叉现有的驱动程序实例,退出当前驱动程序并重新初始化所有全局变量 – browser,element,$等.

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

So as a shortcut (till I will not find the real issue with promises) I want to just restart browser after each spec. I understand that it is a wrong approach in general, but want to use it as a temporary solution.

作为您的临时解决方案,为了实施测试隔离,我认为在每个测试套件之后重启浏览器是可以的.但是,请确保您不通过全局可用的浏览器对象共享任何变量 – 在每个测试中,您将获得一个全新的浏览器.

顺便说一句,您也可以尝试强制执行浏览器的私有/隐身模式:

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