避免为排除的规范启动会话
·阅读 2 分钟
使用标签、grep 或任何其他技术过滤规范是一种常见方法,但是我们之前在这里遇到过一个问题 - 每个规范文件都会创建一个新的会话,这需要一些时间,特别是对于移动测试。
我们添加了一个功能,允许在会话开始之前过滤规范文件。该功能默认仅对 Cucumber 框架启用,并且默认对 Mocha 和 Jasmine 框架禁用,以避免出现重大更改。要使用此功能,必须在 wdio.conf.js
中使用功能标志启用它,并且所有 browser
函数调用(如 browser.addCommand()
或任何其他调用)都必须从根作用域中移开。您仍然可以像以前一样使用环境标志、配置或功能。
以下仅适用于希望使用此功能的 Mocha 和 Jasmine 用户
- 在
wdio.conf.js
中使用标志启用此功能
// wdio.conf.js
exports.config
// ...
featureFlags: {
specFiltering: true
},
}
- 如果使用,请将自定义命令声明移动到
before
钩子中,例如
// wdio.conf.js
exports.config
// ...
mochaOpts: {
/**
* all the files that interacts with `browser` object in a root scope
* have to be required in `before` hook if `specFiltering` feature is enabled.
*/
require: [
"@babel/register", // if you have any transpilers leave them as is
"./src/wdio/commands" // remove from here
]
},
before (capabilities, specs) {
require("./src/wdio/commands") // add here
},
}
- 如果使用,请将自定义命令声明从根作用域移动到套件级别(或将它们移动到另一个文件并在
before
钩子中引入它,请参阅 2.1),例如
// my.spec.js
/**
* move `browser.addCommand()` as well as other browser functions calls
* from root scope to suite level (or another file)
*/
browser.addCommand('myCommand', () => {}) // remove!
// it's still possible to use config, capabilities or env flags as before.
describe('my suite in ' + browser.capabilities.browserName, () => {
// add it to suite/test scope
browser.addCommand('myCommand', () => {})
it('my test', () => {
browser.myCommand()
})
})
我们很乐意回答任何问题并期待您的反馈。
请注意,此功能将在 v6 中对所有测试框架启用,因此建议提前开始准备。
谢谢!