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

USAR Con Puppeteer.

与之全球设置/拆除异步测试环境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预设的自定义示例

您还可以从头开始挂钩木偶尔。La IdeaBásicaes:

  1. Iniciar Y Archivar El Punto Final WebSocket de Puppeteer ConConfiguraciónGlobal
  2. Conctarse age Desde Cada Entorno de Prueba
  3. 树龄木偶尔全球拆除

Aquíhay联合国ejemero del脚本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. ;
} ;

Entonces necesitamos联合国Entorno de prueba personalizado para puppeteer

// 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. 同步 谜语 ;
} ;

CONODO LO CONFIGURADO,AHORA Podemos Escribir Nuestras Pruebas de Esta Manera:

// 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'
} ;

这是代码完整的工作示例