Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Fix “Chrome not found” by installing or locating the browser inside the Sail environment that runs Puppeteer. Installing Chrome on your host machine does not make it available in the Linux container. The usual choices are to let Puppeteer download its compatible Chrome for Testing build, point Puppeteer to Chrome or Chromium installed in the container, or move browser execution to a Selenium service.

What “Chrome not found” means in Laravel Sail

Puppeteer needs a browser executable it can launch. In Sail, that executable and its dependencies must exist in the relevant container and be accessible to the Node process at runtime. The error commonly means one of four things:

  • Puppeteer’s browser download was skipped, often because the package manager blocked install scripts.
  • The browser was downloaded into a cache the runtime user or container cannot see.
  • Puppeteer is configured with a path that does not exist inside the container.
  • The executable exists, but permissions or missing Linux libraries prevent it from launching.

Puppeteer’s official installation guide specifically warns that blocking install scripts can skip the automatic browser download and produce “Could not find Chrome (ver. …).” Puppeteer installation guide.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Choose where Chrome should live

Approach Browser location Good fit Check first
Puppeteer-managed Chrome Puppeteer’s cache in the Sail image or runtime filesystem A Node/Puppeteer service where you want Puppeteer to manage a compatible browser Install scripts ran; the runtime user can access the browser cache
System Chrome or Chromium Installed in the application container Teams managing browser packages as part of the OS image Configured executable path is correct and required libraries are installed
Selenium service A separate Selenium Chrome or Chromium container Laravel Dusk or tests that benefit from a separate browser container Service hostname, startup order, network access, and shared memory

These approaches differ in who installs and updates the browser, where its cache lives, and how the application connects to it. Pick one deliberately rather than combining partial setup from several approaches.

#1 Best Overall

Option 1: Install Puppeteer-managed Chrome in Sail

This is usually the most direct repair when Puppeteer should manage a browser version compatible with its installed package. Run installation in the container image or container that will run the script—not just on your laptop.

  1. Add Puppeteer to the Node project: npm install puppeteer
  2. Install its browser in the Sail environment: npx puppeteer browsers install
  3. Run the script as the intended runtime user and check that the browser cache is visible to that user.

If dependencies are installed during a Docker build, make the browser installation part of that build or deployment process so a rebuilt container does not lose it. Puppeteer’s Docker guide describes an image that includes Chrome for Testing, required dependencies, and a pre-installed Puppeteer version; that is a distinct image-based setup, not a guarantee that every Sail image contains Chrome. Puppeteer Docker guide.

When package-manager scripts are blocked

Some package-manager configurations block lifecycle scripts, preventing Puppeteer’s automatic browser download. Allow Puppeteer’s install script according to the package manager and project policy, or keep the explicit npx puppeteer browsers install step in the container build. Do not assume that installing the npm package alone installed Chrome.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Keep cache and runtime users aligned

A download made by one user may land in a cache unavailable to another. Likewise, a download made on the host is not automatically present in Sail. Install and run Puppeteer in the same filesystem and user context, or deliberately configure and persist a shared browser cache. Puppeteer’s configuration and troubleshooting guides cover browser cache location and configuration. Configuration · Troubleshooting.

Rank #2
Dell Latitude 3190 11.6" HD 2-in-1 Touchscreen Laptop Intel N5030 1.1Ghz 4GB Ram 128GB SSD Windows 11 Professional (Renewed)
  • 1.1 GHz (boost up to 2.4GHz) Intel Celeron N5030 Quad-Core
  • 4GB DDR4 System Memory; 128GB Solid State Drive
  • 11.6" HD (1366 x 768) Multi-Touch Display
  • Combo headphone/microphone jack - Noble Wedge Lock slot - HDMI; 2 USB 3.1 Gen 1
  • Windows 11 Pro

Option 2: Use Chrome or Chromium installed in the application container

If the image installs a system browser, tell Puppeteer its actual in-container executable path. First enter the Sail container that runs Node and check the available binary:

which chromium
which chromium-browser
which google-chrome-stable

Use the command that returns a path. For example, if the container reports /usr/bin/chromium, configure Puppeteer like this:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

const puppeteer = require('puppeteer');

async function main() {
const browser = await puppeteer.launch({
executablePath: process.env.PUPPETEER_EXECUTABLE_PATH || '/usr/bin/chromium',
headless: true,
});

Rank #3
Dell Latitude 5420 14" FHD Business Laptop Computer, Intel Quad-Core i5-1145G7, 16GB DDR4 RAM, 256GB SSD, Camera, HDMI, Windows 11 Pro (Renewed)
  • 256 GB SSD of storage.
  • Multitasking is easy with 16GB of RAM
  • Equipped with a blazing fast Core i5 2.00 GHz processor.

try {
const page = await browser.newPage();
await page.goto('https://example.com', { waitUntil: 'domcontentloaded' });
console.log(await page.title());
} finally {
await browser.close();
}
}

main().catch((error) => {
console.error(error);
process.exitCode = 1;
});

Replace the example executable path with the path found in your image. Puppeteer’s configuration documentation requires an explicit executablePath when using a separately managed browser; its API also supports PUPPETEER_EXECUTABLE_PATH. Puppeteer configuration API.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Do not mix host and container paths

A macOS path such as a location under /Applications, or a path from another host setup, will not resolve in the Linux container unless that exact path is present there. Verify the path from the same container and user that executes the script.

Rank #4
15.6 Inch Laptop Computer, N4020, 4GB DDR4 RAM, 128GB eMMC,with Windows 11
  • EFFORTLESS EVERYDAY PERFORMANCE: Powered by Intel Celeron N4020 processor and Windows 11 Home system, delivering reliable, low-power efficiency for daily tasks like document editing, email, online classes, and web browsing
  • 15.6-INCH FULL HD DISPLAY: Enjoy immersive visuals on the 15.6" FHD (1920x1080) anti-glare screen with micro-edge bezels. Delivers clear details and comfortable viewing for long study sessions, working on spreadsheets, and video playback
  • RESPONSIVE MULTITASKING & STORAGE: Built with 4GB LPDDR4 RAM and 128GB eMMC storage for smooth daily essential use. Expand your storage by up to 1TB via the integrated TF card slot to easily store movies, photos, and working files
  • ADVANCED CONNECTIVITY: Outfitted with 2x Full-Featured Type-C ports for data transfer, fast charging, and dual-monitor output, alongside 2x USB 3.2 Gen1 ports and a 3.5mm audio jack for complete peripheral compatibility
  • LIGHTWEIGHT & SILENT OPERATION: Slim and portable for effortless travel or commuting. Features a 1MP HD webcam for remote meetings, 38Wh battery with 45W Type-C fast charging, and a fanless silent design for peaceful work environments.

Use skip-download only with a replacement browser

PUPPETEER_SKIP_DOWNLOAD disables Puppeteer’s browser download. Set it only when the image reliably installs another compatible browser and Puppeteer is configured with its valid path. Otherwise, the setting removes the browser Puppeteer would have downloaded without providing a replacement. Puppeteer configuration.

Option 3: Run Chrome as a separate Selenium service

A separate browser container can be useful for Laravel Dusk or workflows where the PHP/application container should not host Chrome. Laravel Sail’s documentation shows a Compose pattern using selenium/standalone-chrome, a /dev/shm mount, the Sail network, and a depends_on entry for the test service. It documents selenium/standalone-chromium for Apple Silicon. Laravel Sail: Laravel Dusk.

In this design, the test client connects to Selenium over the container network; it does not search for a local Chrome executable. Follow the Sail documentation’s Compose example and configure the client to use the Selenium service hostname and port. Keep the service name and startup dependency in compose.yaml. The browser must be ready to accept connections when tests begin; depends_on establishes startup ordering but should not be treated as proof that a service is healthy and ready.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Verify the container before changing more settings

  1. Enter the correct container. Check the environment where the Node process actually runs, which may differ from the PHP container.
  2. Check the configured executable. Inspect puppeteer.executablePath() or run the relevant which command, then confirm that the returned file exists and is executable.
  3. Check the download and cache. Confirm lifecycle scripts were not suppressed and the browser cache belongs to, or is readable by, the runtime user.
  4. Check shared libraries. Puppeteer lists Linux dependencies including libnss3, libgbm1, libgtk-3-0, libasound2, font packages, and related X/GTK libraries. A missing dependency can prevent launch even when the browser file exists. Install the dependencies appropriate to the container’s distribution, using the current Puppeteer troubleshooting guidance. Puppeteer troubleshooting.
  5. Check writable paths. Chrome needs writable profile and cache locations. In a restricted or read-only container, configure writable XDG_CONFIG_HOME, XDG_CACHE_HOME, and a writable Puppeteer userDataDir, such as a suitable directory under /tmp, or mount writable volumes.
  6. Review the sandbox deliberately. Prefer a non-root runtime user and container permissions consistent with Puppeteer’s guidance. Do not add --no-sandbox as a routine workaround; use it only when required by the container security model and after weighing the security implications. Puppeteer troubleshooting.
  7. For Selenium, inspect shared memory and connectivity. Preserve the documented /dev/shm mount and make sure the test client targets the correct service on the Sail network.

Common “Chrome not found Puppeteer Laravel Sail” failures

Symptom Likely cause Fix
Could not find Chrome (ver. ...) Puppeteer’s browser download did not run, or its cache is unavailable in the runtime container. Run npx puppeteer browsers install in the container/build, then run as a user that can access that cache.
executablePath points to a missing file The path belongs to the host or another image, or the system browser is not installed. Run which chromium, which chromium-browser, or which google-chrome-stable inside the runtime container and configure the path it returns.
Browser file exists but launch fails Missing Linux libraries, insufficient permissions, or unwritable profile/cache directories. Install the distribution-appropriate dependencies, correct ownership or permissions, and point Chrome’s configuration/cache to writable locations.
Failure started after setting PUPPETEER_SKIP_DOWNLOAD The download was disabled without installing a replacement browser. Install Chrome/Chromium in the image and configure its real path, or remove the skip-download setting.
Failure occurs only in an Alpine-based image Chrome does not support Alpine out of the box; Chromium, Puppeteer, and dependencies need careful matching. Use a supported image or follow Puppeteer’s Alpine-specific troubleshooting guidance rather than assuming Debian package names or paths apply. Puppeteer troubleshooting.
Selenium client cannot reach Chrome Wrong service hostname/port, service not ready, or missing Sail network/shared-memory setup. Use the Compose service name from the Sail network, preserve the documented service dependency and /dev/shm mount, and ensure the browser service is accepting connections.

Performance, reliability, and cost considerations

  • Build reproducibility: Installing the browser during image build or deployment makes the runtime environment explicit. A browser downloaded interactively into a disposable container can disappear when that container is recreated.
  • Version compatibility: Puppeteer-managed Chrome for Testing is intended to match Puppeteer; system browser packages are managed independently, so verify compatibility when either side changes.
  • Image and dependency footprint: A browser and its Linux libraries add deployment dependencies. A separate Selenium service moves that footprint out of the application container but introduces network and readiness configuration.
  • Cache and permissions: A shared or persisted cache can avoid repeated downloads, but only if its ownership and runtime path are consistent. Treat it as part of deployment configuration.
  • Resource limits: Headless browsers still use memory, CPU, writable disk, and shared memory. Size and test the container under your real workload; no universal resource figure is established by the cited documentation.
  • Security: Running Chrome as root or disabling its sandbox changes the security posture. Prefer a non-root user and follow the browser/container guidance for your deployment rather than hiding a permissions issue with broad flags.
  • Cost: The documented repair paths use software and containers; the relevant operational cost is the compute, storage, and maintenance of the browser environment. No price or performance benchmark for these paths is established in the cited sources.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

If your goal is simply to capture a webpage—not to run Puppeteer tests inside Sail—ScreenshotNeo provides a screenshot API. A GET request returns a PNG, JPEG, WebP, or PDF. For example, this cURL request captures a page as WebP:

Best Value
15.6 Inch Win 11 Laptop Computer, N4020, 4GB DDR4 RAM, 128GB Storage
  • WINDOWS 11 | STABLE PERFORMANCE: Powered by Intel Celeron N4020 processor and Windows 11 system, this laptop delivers stable performance for everyday computing tasks. It supports web browsing, online learning, document editing, email communication, and basic office work with optimized power efficiency, providing a practical and reliable experience for essential daily use for daily use.
  • 15.6” FHD IPS DISPLAY: Features a 15.6-inch Full HD IPS display with narrow bezels, offering wider viewing angles and clearer image details compared to standard panels. The improved screen-to-body ratio enhances visual experience for study, reading, document work, and video playback, making it suitable for both productivity and entertainment use.
  • 4GB DDR4 + 128GB eMMC STORAGE: Equipped with 4GB DDR4 memory and 128GB eMMC storage for everyday basics such as browsing, documents, email, and online learning platforms. The built-in TF card slot supports storage expansion up to 1TB, giving you more flexibility for files, photos, videos, and daily documents. TF card not included.
  • CONNECTIVITY & PORTS: Includes 1× TF card slot, 2× USB 3.2 Gen1 ports, and 2× full-featured Type-C ports (USB 3.2 Gen1). The Type-C ports support data transfer, charging, and video output, enabling flexible connection with external devices such as monitors, storage, and peripherals for daily work and study use.
  • LIGHTWEIGHT DESIGN | ONLINE COMMUNICATION: Designed with a slim, portable profile, this laptop is easy to carry for school, commuting, and travel. A built-in 1MP front camera supports online classes, video meetings, remote communication, and everyday conferencing. The 3300mAh battery works with the low-power system design to support practical daily use, while thermal optimization helps maintain quieter operation during extended tasks.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

See the ScreenshotNeo API documentation for request options. ScreenshotNeo removes cookie/consent banners, newsletter popups, and chat widgets before capture; bot checks, blank pages, and failed loads are not billed. Its MCP server offers screenshot tools for AI agents. The Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000. This is an alternative for screenshot capture, not a fix for a Puppeteer browser needed by your Sail tests.

Sign up for ScreenshotNeo’s free plan to get 1,000 screenshots a month with no card.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Frequently Asked Questions

Does installing Chrome on my computer install it in Laravel Sail?

No. Sail runs containers with their own filesystem; install or expose the browser inside the container that runs Puppeteer.

Should I use `–no-sandbox` to fix Chrome not found?

No. It does not install or locate Chrome. Address the executable, dependencies, and permissions first; disable the sandbox only when required by a considered container security setup.

Can I use Puppeteer with a remote Selenium browser?

Yes, when configured as a remote-browser workflow: connect the client to the Selenium service rather than calling `puppeteer.launch()` to find a local executable.

Quick Recap

Bestseller No. 1
HP 14' HD Laptop, Windows 11, Intel Celeron Dual-Core Processor Up to 2.60GHz, 4GB RAM, 64GB SSD, Webcam, Dale Pink (Renewed)
HP 14" HD Laptop, Windows 11, Intel Celeron Dual-Core Processor Up to 2.60GHz, 4GB RAM, 64GB SSD, Webcam, Dale Pink (Renewed)
14" diagonal, 1366x768 resolution, HD BrightView LED, Glossy NON-TOUCH Display
$245.99
Bestseller No. 2
Dell Latitude 3190 11.6' HD 2-in-1 Touchscreen Laptop Intel N5030 1.1Ghz 4GB Ram 128GB SSD Windows 11 Professional (Renewed)
Dell Latitude 3190 11.6" HD 2-in-1 Touchscreen Laptop Intel N5030 1.1Ghz 4GB Ram 128GB SSD Windows 11 Professional (Renewed)
1.1 GHz (boost up to 2.4GHz) Intel Celeron N5030 Quad-Core; 4GB DDR4 System Memory; 128GB Solid State Drive
Bestseller No. 3
Dell Latitude 5420 14' FHD Business Laptop Computer, Intel Quad-Core i5-1145G7, 16GB DDR4 RAM, 256GB SSD, Camera, HDMI, Windows 11 Pro (Renewed)
Dell Latitude 5420 14" FHD Business Laptop Computer, Intel Quad-Core i5-1145G7, 16GB DDR4 RAM, 256GB SSD, Camera, HDMI, Windows 11 Pro (Renewed)
256 GB SSD of storage.; Multitasking is easy with 16GB of RAM; Equipped with a blazing fast Core i5 2.00 GHz processor.
$285.00

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.