配置
可以通过在服务级别或功能级别设置wdio:electronServiceOptions
来配置服务,其中功能级别配置优先,例如以下 WebdriverIO 配置
wdio.conf.ts
export const config = {
// ...
services: [
[
'electron',
{
appBinaryPath: '/foo/bar/myApp'
},
],
],
capabilities: [
{
'browserName': 'electron',
'wdio:electronServiceOptions': {
appBinaryPath: '/foo/bar/myOtherApp'
appArgs: ['foo', 'bar'],
},
},
],
// ...
};
...将生成以下配置对象
{
"appBinaryPath": "/foo/bar/myOtherApp",
"appArgs": ["foo", "bar"]
}
服务选项
该服务支持以下配置选项
appBinaryPath
:
要测试的应用程序的 Electron 二进制文件的路径。在大多数情况下,服务将自动确定应用程序的路径,但如果由于某种原因失败,例如您的应用程序位于与测试不同的存储库中,则建议手动设置此值。
类型:string
appArgs
:
要传递给应用程序在测试运行执行期间的一系列字符串参数。Electron 命令行开关和一些 Chromium 开关可在此处使用。
类型:string[]
clearMocks
:
在每个测试之前对所有模拟的 API 调用 .mockClear()。这将清除模拟历史记录,但不会重置其实现。
类型:boolean
resetMocks
:
在每个测试之前对所有模拟的 API 调用 .mockReset()。这将清除模拟历史记录并将其实现重置为空函数(将返回 undefined)。
类型:boolean
restoreMocks
:
在每个测试之前对所有模拟的 API 调用 .mockRestore()。这将恢复原始的 API 函数,模拟将被删除。
类型:boolean
Chromedriver 配置
wdio-electron-service
需要 Chromedriver 才能工作。Chromedriver 版本需要适合您的应用程序构建所使用的 Electron 版本,您可以让服务处理它(默认)或自己管理它。
服务管理
如果您未指定 Chromedriver 二进制文件,则服务将下载并使用适合您的应用程序 Electron 版本的版本。应用程序的 Electron 版本由 package.json
中的 electron
或 electron-nightly
的版本确定,但是您可能希望覆盖此行为 - 例如,如果您正在测试的应用程序位于与测试不同的存储库中。您可以通过设置 browserVersion
功能来手动指定 Electron 版本,如下面的示例配置所示
wdio.conf.ts
export const config = {
// ...
services: ['electron'],
capabilities: [
{
browserName: 'electron',
browserVersion: '28.0.0',
},
],
// ...
};
用户管理
如果您的应用程序使用的 Electron 版本低于 v26,则需要手动配置 Chromedriver。
这是因为 WDIO 使用 Chrome 进行测试来下载 Chromedriver,Chrome for Testing 仅提供 v115 或更高版本的 Chromedriver。
为了自己管理 Chromedriver,您可以直接安装它或通过其他方式(如 electron-chromedriver
)安装,在这种情况下,您需要通过其自定义 wdio:chromedriverOptions
功能告诉 WebdriverIO 您的 Chromedriver 二进制文件在哪里。
例如,为了将 WDIO 与 Electron v19 应用程序一起使用,您必须从 https://chromedriver.chromium.org/downloads 下载 Chromedriver 102.0.5005.61
。然后,您应该在 WDIO 配置中指定二进制文件路径,如下所示
wdio.conf.ts
export const config = {
// ...
services: ['electron'],
capabilities: [
{
'browserName': 'electron',
'wdio:chromedriverOptions': {
binary: '/Users/wdio/Downloads/chromedriver', // path to Chromedriver you just downloaded
},
},
],
// ...
};