调试
在多个浏览器中启动数十个测试的多个进程情况下,调试变得相当困难。
首先,通过将 maxInstances 设置为 1,并且只针对需要调试的那些规范和浏览器,可以有效限制并行性。
在 wdio.conf 中:
export const config = {
// ...
maxInstances: 1,
specs: [
'**/myspec.spec.js'
],
capabilities: [{
browserName: 'firefox'
}],
// ...
}
Debug 命令
在许多情况下,您可以使用 browser.debug() 来暂停测试并检查浏览器。
您的命令行界面也会切换到 REPL 模式。此模式允许您使用页面上的命令和元素进行实验。在 REPL 模式下,您可以像在测试中一样访问 browser 对象—或 $ 和 $$ 函数。
使用 browser.debug() 时,您可能需要增加测试运行器的超时时间,以防止测试运行器因测试耗时过长而使测试失败。例如:
在 wdio.conf 中:
jasmineOpts: {
defaultTimeoutInterval: (24 * 60 * 60 * 1000)
}
有关如何使用其他框架执行此操作的更多信息,请参见 timeouts。
要在调试后继续测试,在 shell 中使用 ^C 快捷键或 .exit 命令。
动态配置
请注意,wdio.conf.js 可以包含 Javascript。由于您可能不希望永久将超时值更改为 1 天,因此通常可以使用环境变量从命令行更改这些设置。
使用此技术,您可以动态更改配置:
const debug = process.env.DEBUG
const defaultCapabilities = ...
const defaultTimeoutInterval = ...
const defaultSpecs = ...
export const config = {
// ...
maxInstances: debug ? 1 : 100,
capabilities: debug ? [{ browserName: 'chrome' }] : defaultCapabilities,
execArgv: debug ? ['--inspect'] : [],
jasmineOpts: {
defaultTimeoutInterval: debug ? (24 * 60 * 60 * 1000) : defaultTimeoutInterval
}
// ...
}
然后,您可以在 wdio 命令前加上 debug 标志:
$ DEBUG=true npx wdio wdio.conf.js --spec ./tests/e2e/myspec.test.js
...并使用 DevTools 调试您的规范文件!
使用 Visual Studio Code (VSCode) 进行调试
如果您想在最新的 VSCode 中使用断点调试测试,您有两种启动调试器的选择,其中选项 1 是最简单的方法:
- 自动附加调试器
- 使用配置文件附加调试器
VSCode 切换自动附加
您可以通过在 VSCode 中执行以下步骤来自动附加调试器:
- 按 CMD + Shift + P(Linux 和 MacOS)或 CTRL + Shift + P(Windows)
- 在输入字段中输入 "attach"
- 选择 "Debug: Toggle Auto Attach"
- 选择 "Only With Flag"
就是这样!现在,当您运行测试时(记住您需要在配置中设置 --inspect 标志,如前面所示),它将自动启动调试器,并在到达第一个断点时停止。