在 Protractor 中连续清理 运行 个规范文件

Cleanup for running spec files in series in Protractor

我 运行 多个规格使用量角器配置文件如下:

...
specs: [abc.js , xyz.js]
...

abc.js 完成后,我想将我的应用程序重置为初始状态,下一个规范 xyz.js 可以从该初始状态开始。

Protractor 中是否有明确定义的方法?我正在使用 Jasmine 作为测试框架。

可以使用这样的东西:

specs: ['*.js']

但我建议您使用后缀分隔规格,例如 abc-spec.jsxyz-spec.js。因此你的规格将是这样的:

specs: ['*-spec.js']

如果您将配置文件与 tests/spec 文件放在同一文件夹中,这样做是为了避免配置文件被 'run'/测试。

还有一个缺点是测试将按 0 -> 9A -> Z 顺序进行 运行。例如。 abc-spec.js 先 运行 然后 xyz-spec.js。如果你想定义你的自定义执行顺序,你可以在你的规范文件的名称前加上前缀,例如:00-xyz-spec.js01-abc-spec.js.

重新启动应用程序,遗憾的是没有通用方法 (source),但您需要变通才能实现它。使用像

这样的东西
browser.get('http://localhost:3030/');
browser.waitForAngular();

每当您需要重新加载您的应用程序时。它将强制重新加载页面。但是,如果您的应用使用 cookie,您还需要将其清除以使其完全重置。

我使用了一种不同的方法,它对我有用。在我的第一个规范中,我添加了注销测试用例,它从应用程序注销并到达登录页面,只需在再次登录之前清除 cookie,使用以下方法:

browser.driver.manage().deleteAllCookies();

也可以在配置文件中指定名为restartBrowserBetweenTests 的标志。但是,量角器团队发出了有效警告:

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

如果不关心速度损失,这可能会有所帮助。

如果以上方法没有帮助,并且您绝对想确保应用程序(和浏览器!)的状态在规格之间是干净的,您需要推出自己的 shellscript,它收集所有 *_spec.js 文件和调用 protractor --specs [currentSpec from a spec list/test suite].