Перейтикосновнойчасти
版本:27.0

Использование玩笑с木偶

与之全球安装/拆卸异步测试环境API的玩笑可以顺利工作木偶戏

使用木偶测试文件生成代码覆盖率目前不可能的,如果你的测试使用页。$ EVAL页面。$$ EVAL或者page.evaluate作为传递函数执行的玩笑的范围之内。查看问题#7962在GitHub上的解决方法。

Использованиепредустановок笑话,操纵木偶的人

开玩笑木偶предоставляетвсюнеобходимуюконфигурациюдлязапускавашихтестовспомощью木偶。

  1. Сначалаустановите笑话,操纵木偶的人
yarn添加--dev笑话,操纵木偶的人
  1. 指定预置在开玩笑配置
{
“预设” “笑话,操纵木偶的人”
}
  1. Напишитесвойтест,например
描述 '谷歌' => {
beforeAll 异步 => {
等待 'https://google.com' ;
} ;
“标题应为‘谷歌’” 异步 => {
等待 预计 标题 做出决议 匹配 '谷歌' ;
} ;
} ;

Нетнеобходимостизагружатьзависимости。Автоматическибудутпоказаныклассы木偶страницыибраузера

См。документацию

Пользовательскийпримербезпредустановленного笑话,操纵木偶的人

您也可以从头挂钩的木偶。Главнаяидеязаключаетсявследующем:

  1. 启动和文件木偶与全局设置WebSocket的端点
  2. 连接到木偶戏从每个测试环境
  3. 与全球拆解密切木偶戏

ВотпримерскриптаGlobalSetup

// setup.js
const { WriteFile的 } = 要求 'FS' 许诺 ;
const = 要求 'OS' ;
const 小路 = 要求 '小路' ;
const mkdirp = 要求 'mkdirp' ;
const 木偶戏 = 要求 “木偶戏” ;
const DIR = 小路 加入 TMPDIR 'jest_puppeteer_global_setup' ;
模块 出口 = 异步 功能 {
const 浏览器 = 等待 木偶戏 发射 ;
//存储浏览器实例,所以我们可以在以后拆毁它
//这个全球仅在拆卸可用,但不是在TestEnvironments
全球的 __BROWSER_GLOBAL__ = 浏览器 ;
//使用文件系统暴露于TestEnvironments的wsEndpoint
mkdirp 同步 DIR ;
等待 WriteFile的 小路 加入 DIR 'wsEndpoint' 浏览器 wsEndpoint ;
} ;

Затемнамнужнаспециальнаятестоваясредадля操纵木偶的人

// puppeteer_environment.js
const { READFILE } = 要求 'FS' 许诺 ;
const = 要求 'OS' ;
const 小路 = 要求 '小路' ;
const 木偶戏 = 要求 “木偶戏” ;
const NodeEnvironment = 要求 “开玩笑环境节点” ;
const DIR = 小路 加入 TMPDIR 'jest_puppeteer_global_setup' ;
班级 PuppeteerEnvironment 延伸 NodeEnvironment {
构造函数 配置 {
极好的 配置 ;
}
异步 设置 {
等待 极好的 设置 ;
//获取wsEndpoint
const wsEndpoint = 等待 READFILE 小路 加入 DIR 'wsEndpoint' “UTF-8” ;
如果 !! wsEndpoint {
新的 错误 “wsEndpoint没有发现” ;
}
//连接到操纵木偶的人
这个 全球的 __BROWSER__ = 等待 木偶戏 连接 {
browserWSEndpoint wsEndpoint
} ;
}
异步 拆除 {
等待 极好的 拆除 ;
}
getVmContext {
返回 极好的 getVmContext ;
}
}
模块 出口 = PuppeteerEnvironment ;

Наконец,мыможемзакрытьэкземплярслушателяиочиститьфайл

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

Сучетомвсехнастроенныхвещеймытеперьможемнаписатьнашитестыкаквпримере:

// test.js
const 暂停 = 5000 ;
描述
'/ (主页)'
=> {
;
beforeAll 异步 => {
= 等待 全球的 __BROWSER__ 新的一页 ;
等待 'https://google.com' ;
} 暂停 ;
“应该没有加载错误” 异步 => {
const 文本 = 等待 评估 => 文档 身体 的textContent ;
预计 文本 包含装有 '谷歌' ;
} ;
}
暂停
;

最后,设置jest.config.js从这些文件中读取。(这笑话,操纵木偶的人预设做这样的事情引擎盖下。)

模块 出口 = {
globalSetup ” ./setup.js'
globalTeardown ” ./teardown.js'
测试环境 ” ./puppeteer_environment.js'
} ;

Воткод[полногорабочегопримера](https://开头github上。COM / xfumihiro /开玩笑-木偶-例子)。