用于测试 Electron 应用程序的 WebdriverIO 服务
通过丰富的 WebdriverIO 生态系统实现跨平台 Electron 应用 E2E 测试。
Spectron
的精神继承者(
RIP
)。
通过以下方式使 Electron 应用程序测试变得更加简单:
🚗 自动设置所需的 Chromedriver(适用于 Electron v26 及以上版本)
📦 自动检测 Electron 应用程序路径
支持
Electron Forge
、
Electron Builder
和未打包的应用
🧩 在测试中访问 Electron API
🕵️ 通过类似 Vitest 的 API 模拟 Electron API
您需要安装
WebdriverIO
,安装指南可以在
这里
找到。
快速开始
快速上手的推荐方式是使用
WDIO 配置向导
。
手动快速开始
要在不使用配置向导的情况下开始,您需要安装服务和
@wdio/cli
:
npm install --dev @wdio/cli wdio-electron-service
或者使用您选择的包管理器 - pnpm、yarn 等。
接下来,创建您的 WDIO 配置文件。如果您需要一些灵感,可以参考本仓库
示例目录
中的可用配置,以及
WDIO 配置参考页面
。
您需要将
electron
添加到您的 services 数组中并设置 Electron capability,例如:
wdio.conf.ts
export const config = {
services: ['electron'],
capabilities: [
{
browserName: 'electron',
},
],
};
最后,使用您的配置文件
运行一些测试
。
这将以与 WDIO 处理 Chrome 或 Firefox 等浏览器相同的方式启动您的应用程序实例。如果您需要同时运行其他实例,例如多个应用程序实例或应用程序与 Web 浏览器的不同组合,该服务可以与
WDIO(并行)multiremote
一起使用。
如果您使用
Electron Forge
或
Electron Builder
打包您的应用,则 该服务将自动尝试找到您打包的 Electron 应用的路径。您可以通过自定义服务能力提供二进制文件的自定义路径,例如:
wdio.conf.ts
export const config = {
capabilities: [
{
'browserName': 'electron',
'wdio:electronServiceOptions': {
appBinaryPath: './path/to/built/electron/app.exe',
appArgs: ['foo', 'bar=baz'],
},
},
],
};
请参阅
配置文档
,了解如何为 Electron 支持的不同操作系统找到
appBinaryPath
值。
或者,您可以通过提供
main.js
脚本的路径,将服务指向未打包的应用。Electron 需要安装在您的
node_modules
中。建议使用 Rollup、Parcel、Webpack 等打包工具来打包未打包的应用。
wdio.conf.ts
export const config = {
capabilities: [
{
'browserName': 'electron',
'wdio:electronServiceOptions': {
appEntryPoint: './path/to/bundled/electron/main.bundle.js',
appArgs: ['foo', 'bar=baz'],
},
},
],
};
Chromedriver 配置
如果您的应用使用的 Electron 版本低于 v26,则需要
手动配置 Chromedriver
。
这是因为 WDIO 使用 Chrome for Testing 下载 Chromedriver,它只提供 v115 或更新版本的 Chromedriver。
Chromedriver 配置
访问 Electron API
模拟 Electron API
常见问题和调试
如果您有兴趣贡献,请阅读
开发文档
。
示例集成
查看我们的
Electron 样板
项目,该项目展示了如何在示例应用程序中集成 WebdriverIO。您还可以查看本仓库中的
示例应用
和
E2E 测试
目录。
如果您在使用该服务运行 WDIO 时遇到问题,首先应该查看文档中的
常见问题
,然后在
主要 WDIO 论坛
中开启讨论。