
Security News
Happy Birthday, Shai-Hulud
It has been one year since Shai-Hulud made its first appearance on npm.
@puppeteer/browsers
Advanced tools
Manage and launch browsers/drivers from a CLI or programmatically.
engines in package.json).xz and bzip2 utilities are required to unpack .tar.gz and .tar.bz2 archives.hdiutil is required to unpack .dmg archives.Use npx to run the CLI:
# This will install and run the @puppeteer/browsers package.
# If it is already installed in the current directory, the installed
# version will be used.
npx @puppeteer/browsers --help
Built-in per-command help will provide all documentation you need to use the CLI.
npx @puppeteer/browsers --help # help for all commands
npx @puppeteer/browsers install --help # help for the install command
npx @puppeteer/browsers launch --help # help for the launch command
npx @puppeteer/browsers clear --help # help for the clear command
npx @puppeteer/browsers list --help # help for the list command
You can specify the version of the @puppeteer/browsers when using
npx:
# Always install and use the latest version from the registry.
npx @puppeteer/browsers@latest --help
# Always use a specifc version.
npx @puppeteer/browsers@2.4.1 --help
# Always install the latest version and automatically confirm the installation.
npx --yes @puppeteer/browsers@latest --help
To clear all installed browsers, use the clear command:
npx @puppeteer/browsers clear
To list all installed browsers, use the list command:
npx @puppeteer/browsers list
Some example to give an idea of what the CLI looks like (use the --help command for more examples):
# Download the latest available Chrome for Testing binary corresponding to the Stable channel.
npx @puppeteer/browsers install chrome@stable
# Download a specific Chrome for Testing version.
npx @puppeteer/browsers install chrome@116.0.5793.0
# Download the latest Chrome for Testing version for the given milestone.
npx @puppeteer/browsers install chrome@117
# Download the latest available ChromeDriver version corresponding to the Canary channel.
npx @puppeteer/browsers install chromedriver@canary
# Download a specific ChromeDriver version.
npx @puppeteer/browsers install chromedriver@116.0.5793.0
# On Ubuntu/Debian and only for Chrome, install the browser and required system dependencies.
# If the browser version has already been installed, the command
# will still attempt to install system dependencies.
# Requires root privileges.
npx puppeteer browsers install chrome --install-deps
You can implement custom browser providers to download from alternative sources like corporate mirrors, private repositories, or specialized browser builds.
import {
BrowserProvider,
DownloadOptions,
Browser,
BrowserPlatform,
} from '@puppeteer/browsers';
class SimpleMirrorProvider implements BrowserProvider {
constructor(private mirrorUrl: string) {}
supports(options: DownloadOptions): boolean {
return options.browser === Browser.CHROME;
}
getDownloadUrl(options: DownloadOptions): URL | null {
const {buildId, platform} = options;
const filenameMap = {
[BrowserPlatform.LINUX]: 'chrome-linux64.zip',
[BrowserPlatform.MAC]: 'chrome-mac-x64.zip',
[BrowserPlatform.MAC_ARM]: 'chrome-mac-arm64.zip',
[BrowserPlatform.WIN32]: 'chrome-win32.zip',
[BrowserPlatform.WIN64]: 'chrome-win64.zip',
};
const filename = filenameMap[platform];
if (!filename) return null;
return new URL(`${this.mirrorUrl}/chrome/${buildId}/${filename}`);
}
getExecutablePath(options: DownloadOptions): string {
const {platform} = options;
if (
platform === BrowserPlatform.MAC ||
platform === BrowserPlatform.MAC_ARM
) {
return 'chrome-mac/Chromium.app/Contents/MacOS/Chromium';
} else if (platform === BrowserPlatform.LINUX) {
return 'chrome-linux64/chrome';
} else if (platform.includes('win')) {
return 'chrome-win64/chrome.exe';
}
throw new Error(`Unsupported platform: ${platform}`);
}
}
Use with the install API:
import {install} from '@puppeteer/browsers';
const customProvider = new SimpleMirrorProvider('https://internal.company.com');
await install({
browser: Browser.CHROME,
buildId: '120.0.6099.109',
platform: BrowserPlatform.LINUX,
cacheDir: '/tmp/puppeteer-cache',
providers: [customProvider],
});
Multiple providers can be chained - they're tried in order until one succeeds, with a default provider such as Chrome for Testing, as an automatic fallback.
:::caution Custom providers are NOT officially supported by Puppeteer. You accept full responsibility for binary compatibility, testing, and maintenance. :::
The programmatic API allows installing and launching browsers from your code. See the test folder for examples on how to use the install, canInstall, launch, computeExecutablePath, computeSystemExecutablePath and other methods.
Puppeteer is a Node library which provides a high-level API to control Chrome or Chromium over the DevTools Protocol. While @puppeteer/browsers focuses on managing browser binaries, Puppeteer itself is used for browser automation tasks such as web scraping and automated testing.
Playwright is a Node library to automate Chromium, Firefox, and WebKit with a single API. It provides similar functionalities to Puppeteer but supports more browsers. Playwright also includes tools for managing browser binaries, making it a comprehensive alternative to @puppeteer/browsers.
Selenium WebDriver is a tool for automating web application testing, and it supports multiple browsers. Selenium WebDriver can manage browser binaries through WebDriverManager, which provides similar functionalities to @puppeteer/browsers.
FAQs
Download and launch browsers
The npm package @puppeteer/browsers receives a total of 11,519,508 weekly downloads. As such, @puppeteer/browsers popularity was classified as popular.
We found that @puppeteer/browsers demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.

Security News
It has been one year since Shai-Hulud made its first appearance on npm.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.

Security News
GitHub Actions now supports cache-mode, a least-privilege control on the Actions cache aimed at the cache poisoning technique behind recent compromises.