

The answer from Muhammad Uzair solved my similar issue of setting the Chromium user preference to enforce PDF file downloads, but I ran into an issue of setting things up since I am using Puppeteer, Jest, and Jest-Puppeteer, where Jest-Puppeteer handles the initial setup behind the scenes. How to pass userDataDir profile folder to Puppeteer The first time you run the above code, you will have to comment out the fs.readFile to fs.writeFile as the UserDirDirectory is created if it does not exist the first time that Chrome is started.Īll profile related data is then stored in the customChrome/Default folder.

Essentially, Puppeteer creates a custom profile each time it runs, we can override that profile and define the download directory.

This will set the default download directory for files before the process starts. _directory = path.resolve(_dirname, './downloads') įs.writeFileSync(customChrome+'/Default/Preferences', JSON.stringify(obj)) Īrgs: _directory = path.resolve(_dirname, './downloads') Let prefs = fs.readFileSync(customChrome+'/Default/Preferences') I was able to set the download location using the following code, let customChrome = path.resolve(_dirname, './customChrome') To download files with Puppteer we can either the browser's fetch feature - which will download the file into a javascript variable - or find and click the download button which will download the file to the browser's save directory: // start puppeteerĬonst browser = await puppeteer.launch() Īwait page._nd('Page.I realize this is an old thread, but this thread popped up first for me when looking for how to set Puppeteer default download location.
