Electron Test
为 Electron 应用编写自动测试, 你需要一种 “驱动” 应用程序的方法。Spectron 是一种常用的解决方案, 它允许您通过 WebDriver 模拟用户行为。
当然,也可以使用 Node 的内建 IPC STDIO 来编写自己的自定义驱动。 自定义驱动的优势在于,它往往比 Spectron 需要更少的开销,并允许你向测试套件公开自定义方法。
Class: TestDriver
补充信息
import TestDriver from '@modern-js/electron-test';
new TestDriver(options)
参数
- options:
object
,测试驱动配置。- cwd:
string
,测试执行目录。 - [envs]:
object
,执行的环境变量。
- cwd:
返回值
- 返回
TestDriver
实例。
创建一个 TestDriver
实例,这会启动一个Electron
应用实例。
警告
当我们需要启动多个实例的时候,我们需要在环境变量中添加:TEST_FOLDER
变量,用于区分实例运行目录。
比如:
new TestDriver({
cwd: 'xxx/electron',
envs: {
TEST_FOLDER: 'test1'
}
})
实例方法
testDriver.isRunning()
返回值
boolean
,是否处于运行中。
返回当前实例是否仍然处于运行中。
testDriver.checkReady(options)
参数
- options:
object
检查是否处于已就绪状态。- [winName]:
string
,窗口名。 - [webviewId]:
string
,webview 的 ID。
- [winName]:
返回值
Promise<boolean>
,是否已经就绪。
如果没有传窗口名,则此方法表示检测主进程是否启动完毕; 如果传递窗口名,则表示检测窗口是否加载完毕; 如果传递了窗口名,且传递了 webview 的 ID,则表示检查,某个窗口下,某个 webview 是否已加载完毕。
testDriver.whenReady([winName,options])
参数
- [winName]:
string
,窗口名。 - [options]:
object
。- [timeout]:
number
,等待超时时间,默认值 10000。 - [webviewId]:
string
,webview 的 ID。
- [timeout]:
返回值
Promise<boolean>
,是否已经就绪。
提示
- 当没有传递
winName
时,表示当主进程加载完毕时; - 当传递了窗口,没有传递其他选项时,表示当窗口
winName
加载完毕时; - 当传递了窗口名,且传递了
webviewId
,表示当窗口winName
的 ID 为webviewId
的webview
加载完毕时。 其中,timeout
为等待webview
加载完毕的时间,超时则抛出异常。
testDriver.stop()
返回值
void
。
停止实例。
testDriver.call(options)
参数
- options:
object
,访问参数。- [funcName]:
string
,需要测试的函数名。 - [winName]:
string
,需要测试的窗口名。 - [args]:
any[]
,测试函数时传递的参数。
- [funcName]:
返回值
Promise<any>
,访问结果。
提示
- 当传递了
funcName
,未传递winName
时,则表示测试主进程注册的服务函数funcName
; - 当传递了
funcName
与winName
,则表示测试窗口winName
中的服务函数funcName
;args
为执行函数的参数。 - 更多测试,请看【测试示例】。