jest-puppeteer 允许你使用 Jest & Puppeteer 运行测试。
# for jest 22~23
npm install --save-dev jest-puppeteer@3.9.0 puppeteer jest
# for jest 24+
npm install --save-dev jest-puppeteer puppeteer jest
需要 Jest v22 及以上版本。
# TypeScript users should install following type packages
npm install --save-dev @types/puppeteer @types/jest-environment-puppeteer @types/expect-puppeteer
更新 Jest 配置
{
"preset": "jest-puppeteer"
}
注意:确保从现有的 Jest 配置中删除任何 testEnvironment 选项,jest-puppeteer 需要管理这个选项。
在测试中使用 Puppeteer
import 'expect-puppeteer'
describe('Google', () => {
beforeAll(async () => {
await page.goto('https://google.com')
})
it('should display "google" text on page', async () => {
await expect(page).toMatch('google')
})
})
如果你正在使用 react-scripts,则需要通过命令行来传递环境:
"test": "react-scripts test --env=puppeteer",
或者在每个测试文件的顶部包含以下注释
/**
* @jest-environment puppeteer
*/
大多数持续集成平台都限制了可以使用的线程数。如果您有多个测试套件运行 puppeteer,则测试可能会超时,这是因为 jest 会尝试并行运行 puppeteer,而 CI 平台无法及时处理所有并行作业。
对此的解决方法是在 CI 环境中连续运行测试,用户发现,在此类环境中连续运行测试可以实现高达 50%的性能提升。
可以通过 CLI 运行来实现:
jest --runInBand
完整项目 https://github.com/OldDream/copy-to-clipbord-ultralight 为何需要做 做了一个 js小工具发布到 npm 上,每次更新完都要手动测试,效率很低,有时甚至会忘记,万一把带bug的版本发布上去,那就坑人了。因此考虑引入自动测试,搭配GitHub + Travis CI, 能省心不少。 选取我相对熟悉的 jest,但在这里和传统的js单测不
单元测试 Unit Test 单元测试主要通过模拟输入来确认一个函数或者类的输出值是否符合要求,非常适合测试底层方法是否兼顾灵活、可靠和错误处理,无论是前端还是后端都非常常见,线上算法试题网站里也使用了这种测试方式去验证用户的输入是否满足算法要求。 由于一次完成后就不需要经常改动,性价比非常高。 以下通过最常见的测试框架Jest示例,另外一种常见的测试框架是Mocha+Chai 你的开发代码 //
测试框架和自动化测试(jest和 puppeteer) //安装对应工具包 npm install puppeteer-core //安装Carlo npm i carlo //或 yarn add carlo npm i jest -D npm i puppeteer -D 测试用例(test文件夹): XX.spec.js const puppeteer = require('puppetee
一、Puppeteer 介绍 Puppeteer 翻译是操纵木偶的人,利用这个工具,我们能做一个操纵页面的人。Puppeteer是一个Nodejs的库,支持调用Chrome的API来操纵Web,相比较Selenium或是PhantomJs,它最大的特点就是它的操作Dom可以完全在内存中进行模拟既在V8引擎中处理而不打开浏览器,而且关键是这个是Chrome团队在维护,会拥有更好的兼容性和前景。 二、
我想用Jest做一个测试。 我使用
我正在通过运行Jest测试。默认情况下,Jest并行运行测试。有没有办法让测试按顺序运行? 我有一些测试调用依赖于更改当前工作目录的第三方代码。
问题内容: 我有一个取决于环境变量的应用程序,例如: 我想测试例如: 可以通过节点env变量设置APP_PORT。 或某个应用程序正在使用以下命令设置的端口上运行 我如何用Jest做到这一点?我可以在每次测试之前设置这些变量,还是应该以某种方式模拟它? 问题答案: 在每次测试之前重设resetModules,然后在测试内部动态导入模块很重要: 如果您在运行Jest之前寻找一种加载env值的方法,请
null
Puppeteer 是一个控制 headless Chrome 的 Node.js API 。它是一个 Node.js 库,通过 DevTools 协议提供了一个高级的 API 来控制 headless Chrome。它还可以配置为使用完整的(非 headless)Chrome。 在浏览器中手动完成的大多数事情都可以通过使用 Puppeteer 完成,下面是一些入门的例子: 生成屏幕截图和 PDF
问题内容: 标题几乎可以解释我所面临的问题。我正在尝试测试具有某种状态的组件,并且试图为该组件提供存储以获取所需的组件。当我使用Jest运行组件的测试时,出现以下错误: 我已经通过了一些读数确定,这是造成或者没有被正确适用于玩笑。但是,我尝试安装这两个软件包并重新运行,但结果没有变化。阅读Jest Github问题页面(删除babel- polyfill的自动包含#2755 )后,我发现Jest从