如何配置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




