跳到主要内容
版本:26.x.

用木偶仪使用

与之全球设置/拆除异步测试环境API,Jest可以顺利工作傀儡

如果您的测试用途,目前无法生成使用木偶特的测试文件的代码覆盖页面。$ eval页面。$$评估或者PAGE.Evaluate.随着传递的函数在Jest的范围之外执行。查看问题#7962在Github上的解决方法。

使用Jest-Puppeteer预设

jest木偶提供所有必需的配置,以使用木偶运行测试。

  1. 首先,安装jest-puppeteer.
Yarn Add --dev Jest-Puppeteer
  1. 在Jest配置中指定预设:
{
“预设” “jest-puppeteer”
}
  1. 写下你的测试
描述 '谷歌' => {
Beforeall. 异步 => {
等待 'https://google.com' ;
} ;
'应该标题为“谷歌” 异步 => {
等待 预计 标题 解决 匹配 '谷歌' ;
} ;
} ;

无需加载任何依赖项。木偶师浏览器课程将自动暴露

文件

没有Jest-Puppeteer预设的自定义示例

您还可以从头开始挂钩木偶尔。基本的想法是:

  1. 通过全局设置启动和文件Puppeteer的WebSocket Endpoint
  2. 从每个测试环境连接到木偶仪器
  3. 与全球撕毁的紧密的木偶

这是globalsetup脚本的一个例子

// setup.js.
const FS. = 要求 'FS' ;
const OS. = 要求 'os' ;
const 小路 = 要求 '小路' ;
const mkdirp. = 要求 'mkdirp' ;
const 傀儡 = 要求 '木偶尔' ;
const 谜语 = 小路 加入 OS. TMPDIR. 'jest_puppeteer_global_setup' ;
模块 出口 = 异步 功能 {
const 浏览器 = 等待 傀儡 发射 ;
//存储浏览器实例,以便我们稍后拆除它
//这个全局仅在拆解中可用,但在Testenvironments中
全球的 __browser_global__ = 浏览器 ;
//使用文件系统公开WSENDPOINT for testenvironments
mkdirp. 同步 谜语 ;
FS. writefilesync. 小路 加入 谜语 'wsendpoint' 浏览器 Wsendpoint. ;
} ;

然后我们需要一个用于木偶特的自定义测试环境

// puppeteer_environment.js.
const FS. = 要求 'FS' ;
const OS. = 要求 'os' ;
const 小路 = 要求 '小路' ;
const 傀儡 = 要求 '木偶尔' ;
const 点亮 = 要求 'jest-envionion-node' ;
const 谜语 = 小路 加入 OS. TMPDIR. 'jest_puppeteer_global_setup' ;
班级 傀儡社航 延伸 点亮 {
构造函数 配置 {
极好的 配置 ;
}
异步 设置 {
等待 极好的 设置 ;
//获取wsendpoint
const Wsendpoint. = FS. readfilesync. 小路 加入 谜语 'wsendpoint' 'utf8' ;
如果 !! Wsendpoint. {
新的 错误 'vsendpoint找不到' ;
}
//连接到木偶
全球的 __browser__ = 等待 傀儡 连接 {
browserwsendpoint. Wsendpoint.
} ;
}
异步 拆除 {
等待 极好的 拆除 ;
}
runscript. 脚本 {
返回 极好的 runscript. 脚本 ;
}
}
模块 出口 = 傀儡社航 ;

最后,我们可以关闭木偶实例并清理文件

// teardown.js.
const OS. = 要求 'os' ;
const 小路 = 要求 '小路' ;
const Rimraf. = 要求 'Rimraf' ;
const 谜语 = 小路 加入 OS. TMPDIR. 'jest_puppeteer_global_setup' ;
模块 出口 = 异步 功能 {
//关闭浏览器实例
等待 全球的 __browser_global__ 关闭 ;
//清理wsendpoint文件
Rimraf. 同步 谜语 ;
} ;

通过设置的所有内容,我们现在可以写下我们的测试:

// test.js.
const 超时 = 5000 ;
描述
'/ (主页)'
=> {
;
Beforeall. 异步 => {
= 等待 全球的 __browser__ 新页面 ;
等待 'https://google.com' ;
} 超时 ;
'应该没有错误 异步 => {
const 文本 = 等待 评估 => 文档 身体 TextContent. ;
预计 文本 包含装有 '谷歌' ;
} ;
}
超时
;

最后,套装jest.config.js.从这些文件中读取。(这jest-puppeteer.预设在引擎盖下这样做。)

模块 出口 = {
globalsetup. './setup.js'
GlobalTeardown. './teardown.js'
测试环境 './puppeteer_environment.js'
} ;

这是代码完整的工作示例

上次更新了经过SébastienLorber.