Puppeteer E2E测试入门
本文内容涉及ES6 async
、jest
的相关知识,对于以上内容不太了解的读者可以先了解相关内容。
Puppeteer是什么
它由Chrome官方团队提供,通过Devtools协议在Node层提供了一系列API来控制chrome或者chromium,也就是说我们能够编写Node环境的代码即可对浏览器的行为进行控制。通过它我们可以做到以下行为:
-
生成页面快照:图片、pdf
-
抓取spa应用生成预渲染页面
-
自动化表单提交、UI测试、键盘输入
-
抓取应用的性能数据(chrome performance timeline)
-
测试chrome扩展
当然以上行为都是puppeteer能力中极小的一部分,更多的读者可以阅读Puppeteer的文档来了解,本文将介绍Puppeteer在E2E测试的实践
E2E测试
简单来说,就是模拟真实用户使用场景进行测试,预期应用能够正常响应用户的操作,其关键点在于模拟用户使用环境,模拟用户操作。
那对于Web应用来说,用户环境就是浏览器,用户操作主要是移动、点击,这些就是我们需要模拟的部分,下面就直接进入环境和实践部分。
环境部分
本文的例子采用puppeteer
jest
jest-puppeteer
在mac环境实现
首先需要安装以上依赖,这里需要注意以下问题:
-
puppeteer会默认下载chromium,这里可以通过
export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
跳过chromium下载 -
Node版本最好使用大于8的版本
接下来说明一下相关的配置
首先是jest相关的配置,在根目录创建jest.config.js
//jest.config.js
const config = require('config');
const _ = require('lodash');
module.exports = {
preset: 'jest-pu