You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何配置Jest+Puppeteer使用本地已安装的Chrome浏览器?

解决Jest-Puppeteer使用本地Chrome而非下载Chromium的问题

我明白你现在的困扰——明明选了对应Chrome版本的Puppeteer,却还是被强制下载Chromium,还碰到了版本找不到的错误。别着急,咱们一步步来搞定:

1. 安装时先跳过Chromium下载

首先,你需要在安装依赖阶段就告诉Puppeteer不要下载Chromium,避免后续的版本冲突问题。执行下面的命令安装所需包:

PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm install puppeteer@5.1.0 jest-puppeteer jest

这样安装过程中就不会自动下载Chromium了。

2. 修改jest-puppeteer.config.js配置

你之前的配置有两个核心问题:一是指定了browser: 'chromium',Puppeteer还是会尝试去找它自带的Chromium版本(错误里的800071就是Puppeteer 5.1.0对应的Chromium版本号);二是没有指定本地Chrome的执行路径。

把配置文件改成下面这样,注意替换executablePath为你系统里Chrome的实际路径:

module.exports = {
  launch: {
    headless: false,
    slowMo: false,
    devtools: true,
    // 根据你的系统替换路径
    executablePath: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', // macOS
    // executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', // Windows
    // executablePath: '/usr/bin/google-chrome', // Linux
    args: ['--no-sandbox'] // 部分环境(比如Linux/CI)需要这个参数避免权限问题
  },
  browser: 'chrome', // 这里改成chrome,告诉Puppeteer使用本地Chrome
  browserContext: 'default'
}

3. 运行测试时的环境变量保障

为了确保运行测试时Puppeteer不会再触发Chromium下载检查,你可以在package.json的scripts里添加环境变量:

"scripts": {
  "test": "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true jest"
}

之后直接运行npm test就可以了。

这样配置后,Jest就会通过Puppeteer调用你本地已安装的Chrome 84版本,不会再去下载Chromium,也不会出现版本找不到的错误啦。

内容的提问来源于stack exchange,提问作者d-man

火山引擎 最新活动