What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

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

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

Yes. Puppeteer can control Microsoft Edge because Edge is Chromium-based and exposes the Chrome DevTools Protocol. For an Edge installation already on your computer, Microsoft’s documented approach is to install puppeteer-core and pass Edge’s executable path when launching. The important limitation is that Puppeteer guarantees compatibility only for its bundled browser; an Edge executable selected with executablePath must be tested with your exact Edge and Puppeteer versions.

Why Puppeteer works with Edge

Microsoft describes Puppeteer as a high-level API for controlling Chromium-based browsers, including Microsoft Edge, through the DevTools Protocol (Microsoft’s test and automation documentation). Current Edge releases use Chromium, and Microsoft says Edge’s DevTools Protocol matches Chrome’s. Puppeteer therefore uses the same automation concepts—pages, locators, navigation, screenshots, PDFs and browser contexts—in Edge as it does in Chromium.

This is protocol compatibility, not a promise that every Edge build behaves identically to Puppeteer’s bundled browser. Puppeteer’s launch documentation states: “Puppeteer is only guaranteed to work with the bundled browser, so use this setting at your own risk.” Treat an installed Edge executable as a separately tested target.

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

Choose the right Puppeteer package

puppeteer-core for an existing Edge installation

Use puppeteer-core when Edge is already installed and you want to select it explicitly. This package does not download a browser for you. You provide the executable path in puppeteer.launch(), which is the route shown in Microsoft’s Puppeteer overview for Edge.

puppeteer for Puppeteer’s bundled browser

The full puppeteer package downloads the browser revision expected by that Puppeteer release. It is the configuration covered by Puppeteer’s compatibility guarantee. It does not automatically switch to your installed Edge. You can still launch another browser with an executable path, but then you assume responsibility for version testing.

Choice Browser selected Compatibility position Best use
puppeteer Puppeteer’s downloaded browser Bundled browser is the guaranteed target Reproducible automation when Edge-specific behavior is unnecessary
puppeteer-core + executablePath Your installed Microsoft Edge Works through Edge’s Chromium DevTools Protocol, but test the exact versions Edge validation, enterprise browser testing, or workflows that must run in Edge

Find the Edge executable safely

Do not copy a Windows path from an example and assume it applies to every machine. Microsoft recommends opening edge://version in Edge and copying the value shown for the executable path. Installation folders differ by operating system, release channel (Stable, Beta, Dev or Canary), per-user versus system installation, and organizational policy. On macOS and Linux, use the path reported by your installation rather than guessing a filename.

  • Open Edge and enter edge://version in the address bar.
  • Copy the complete executable path, including the filename.
  • Keep the path in an environment variable or configuration file so it can change without editing test code.
  • Verify that the account running Node.js has permission to execute the file.

Install and launch Edge with Puppeteer

1. Create a project

  1. Install a supported Node.js release for your application.
  2. Create a directory and initialize it:
    mkdir edge-puppeteer-demo
    cd edge-puppeteer-demo
    npm init -y
  3. Install the core library:
    npm install puppeteer-core

2. Set the executable path

Set EDGE_EXECUTABLE_PATH to the path copied from edge://version. In PowerShell:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
$env:EDGE_EXECUTABLE_PATH = 'C:PathTomsedge.exe'

In macOS or Linux shells:

export EDGE_EXECUTABLE_PATH='/path/to/microsoft-edge'

3. Run a complete smoke test

Save this as edge-smoke-test.js:

const puppeteer = require('puppeteer-core');

const executablePath = process.env.EDGE_EXECUTABLE_PATH;
if (!executablePath) {
  throw new Error('Set EDGE_EXECUTABLE_PATH to your Edge executable first.');
}

(async () => {
  const browser = await puppeteer.launch({
    executablePath,
    headless: true,
    args: ['--no-first-run', '--no-default-browser-check']
  });

  try {
    const page = await browser.newPage();
    await page.goto('https://example.com', {
      waitUntil: 'networkidle2',
      timeout: 30000
    });
    console.log('Browser:', await browser.version());
    console.log('Title:', await page.title());
    await page.screenshot({path: 'edge-example.png', fullPage: true});
  } finally {
    await browser.close();
  }
})();

Run it with node edge-smoke-test.js. A successful run prints an Edge/Chromium version, prints “Example Domain” as the title, and writes edge-example.png. The finally block matters in tests and CI because it closes Edge even when navigation or assertions fail.

Use Edge-specific options without making tests fragile

Headless versus visible runs

Set headless: false while diagnosing selectors, consent dialogs or authentication flows. Return to headless: true in unattended jobs. Headless and headed rendering can differ, so validate screenshots and layout in the mode you will deploy.

Wait for the page state you actually need

waitUntil: 'networkidle2' is useful for pages that finish loading after several requests, but analytics, ads and live updates may prevent a true idle state. For application tests, prefer an explicit readiness check such as await page.waitForSelector('[data-testid="dashboard"]') after navigation. Set realistic timeouts and log the URL when a timeout occurs.

Authentication and profiles

Use a temporary user-data directory for isolated runs when a site requires cookies or local storage. Do not point automated tests at your everyday Edge profile: it can expose personal sessions and can be locked by a running desktop process. Keep credentials in your CI secret store and never place them in source code or screenshots.

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

Browser arguments

Start with no extra flags. Add an argument only when a documented environment requirement justifies it. Flags that disable sandboxing can reduce security and should not be a default workaround; if a container requires one, isolate that container and understand the risk.

Version and compatibility checks

Puppeteer’s supported-browser documentation lists its officially supported browser types, while the launch API permits a separately supplied executable (supported browsers; LaunchOptions). Edge is not transformed into a guaranteed Puppeteer target merely because it is Chromium-based. Before upgrading either dependency, run a smoke test and the critical user journeys against the Edge channel used in production.

  • Record the Puppeteer version from npm ls puppeteer-core.
  • Record Edge’s version from edge://version or browser.version().
  • Test navigation, downloads, file uploads, PDF or screenshot output, permissions and any CDP calls your suite uses.
  • Pin versions in CI when reproducibility is more important than automatic browser updates.

Microsoft’s FAQ and automation guidance are useful when a feature depends on a particular DevTools Protocol implementation (Puppeteer FAQ).

Common errors and fixes

“Browser was not found” or an executable-path error

The path is missing, points to a directory, contains an escaping error, or refers to a channel that is not installed. Recopy it from edge://version, use an absolute path, and print process.env.EDGE_EXECUTABLE_PATH before launching.

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

Edge opens and immediately closes

Capture the original exception and run once with headless: false. Check that no existing process locks the selected profile, that the service account can execute Edge, and that required shared libraries are installed on Linux. Use a temporary profile rather than your normal profile.

Navigation times out

Confirm the machine can resolve the host and reach it through its proxy or firewall. Increase the timeout only after checking network access. Replace a global network-idle wait with a specific selector when the page intentionally keeps connections open.

Selectors work in Chrome but not Edge

Compare the actual Edge version and viewport, then inspect the page in a headed run. The usual causes are timing, responsive breakpoints, extensions or profile state—not the browser brand. Wait for a stable application element and disable extensions in the automation profile.

Unexpected blank pages, certificate errors or blocked downloads

Check enterprise policies, proxy configuration and certificate stores on the machine running Edge. Do not bypass TLS validation in production just to make a test pass. Capture console, page-error and request-failure events to identify the failing resource.

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

Reliability, speed and operating cost

Launching a fresh browser for every URL is slower and consumes more memory than reusing one browser with separate pages or incognito contexts. Reuse a browser inside a controlled worker, close pages in a finally block, and cap concurrency so the host is not swapping. A persistent browser also makes version drift visible: log the browser version at job start.

Installed Edge receives updates outside your Node.js lockfile. That is convenient for security but can change rendering or protocol behavior between runs. A pinned browser image gives more repeatable CI results; a regularly updated Edge channel gives earlier coverage of what users receive. Choose one policy and test upgrades before broad rollout.

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 a reliable website image or PDF rather than Edge-specific browser testing, ScreenshotNeo provides a one-request screenshot API and an MCP server for AI agents. It accepts consent banners before capture and removes more than 60 known consent platforms, newsletter popups and chat widgets; each step can be disabled. Only clean shots are billed: bot checks or CAPTCHAs, blank pages, timeouts, failed loads and cache hits cost nothing, and response headers identify the page verdict and billing result.

For a direct image request, see the ScreenshotNeo documentation:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

The same endpoint can be called from Python or Node.js:

import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

ScreenshotNeo also supports full-page and selector captures, device and viewport settings, retina scale, dark mode, custom CSS and JavaScript, clicks, wait conditions, resource blocking, headers, cookies, user agents, authorization, timezone, geolocation, transparent backgrounds, resizing, chosen cache TTLs, signed image links, asynchronous webhooks, bulk capture of up to 100 URLs per call, PDFs and an MCP server with take_screenshot, get_page_info and capture_pdf. Every feature is available on every plan. The Free plan includes 1,000 screenshots per month without a card; paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account.

Bottom line for Edge automation

Puppeteer does work with Microsoft Edge. Install puppeteer-core, locate the executable through edge://version, launch with executablePath, and test the exact Edge/Puppeteer combination you deploy. Use Puppeteer’s bundled browser when you need its compatibility guarantee; use installed Edge when validating Edge itself.

Frequently Asked Questions

Can I use Microsoft Edge with the full puppeteer package?

Yes, but the full package is designed around its downloaded browser. To select an installed Edge executable explicitly, use puppeteer-core and executablePath.

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

Does Edge need to be installed on the same machine as Node.js?

For a local executablePath launch, yes. In a remote-browser design, Node.js can connect to an existing browser endpoint instead, which is a different deployment arrangement.

Should I use Edge Stable, Beta, Dev or Canary in CI?

Use the channel that matches the environment you need to validate, then pin or schedule updates deliberately. Each channel can have a different executable path and update cadence.

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.