跳至主要内容

避免为排除的规范启动会话

·阅读 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 中对所有测试框架启用,因此建议提前开始准备。

谢谢!

欢迎!我如何帮助您?

WebdriverIO AI Copilot