<h2class="anchor anchorWithStickyNavbar_LWe7"id="q-who-maintains-puppeteer">Q: Who maintains Puppeteer?<ahref="#q-who-maintains-puppeteer"class="hash-link"aria-label="Direct link to Q: Who maintains Puppeteer?"title="Direct link to Q: Who maintains Puppeteer?"></a></h2>
<p>The Chrome Browser Automation team maintains the library, but we'd love your help and
<h2class="anchor anchorWithStickyNavbar_LWe7"id="q-what-is-the-status-of-cross-browser-support">Q: What is the status of cross-browser support?<ahref="#q-what-is-the-status-of-cross-browser-support"class="hash-link"aria-label="Direct link to Q: What is the status of cross-browser support?"title="Direct link to Q: What is the status of cross-browser support?"></a></h2>
<p>Official Firefox support is currently experimental. The ongoing collaboration
<ahref="https://pptr.dev/webdriver-bidi"target="_blank"rel="noopener noreferrer">https://pptr.dev/webdriver-bidi</a> for more details.</p>
<h2class="anchor anchorWithStickyNavbar_LWe7"id="q-does-puppeteer-support-webdriver-bidi">Q: Does Puppeteer support WebDriver BiDi?<ahref="#q-does-puppeteer-support-webdriver-bidi"class="hash-link"aria-label="Direct link to Q: Does Puppeteer support WebDriver BiDi?"title="Direct link to Q: Does Puppeteer support WebDriver BiDi?"></a></h2>
<p>Puppeteer has experimental support for WebDriver BiDi. See <ahref="https://pptr.dev/webdriver-bidi"target="_blank"rel="noopener noreferrer">https://pptr.dev/webdriver-bidi</a>.</p>
<h2class="anchor anchorWithStickyNavbar_LWe7"id="q-what-are-puppeteers-goals-and-principles">Q: What are Puppeteer’s goals and principles?<ahref="#q-what-are-puppeteers-goals-and-principles"class="hash-link"aria-label="Direct link to Q: What are Puppeteer’s goals and principles?"title="Direct link to Q: What are Puppeteer’s goals and principles?"></a></h2>
<p>The goals of the project are:</p>
<ul>
<li>Provide a reference implementation that highlights the capabilities of the
<li><strong>Speed</strong>: Puppeteer has almost zero performance overhead over an automated
page.</li>
<li><strong>Security</strong>: Puppeteer operates off-process with respect to the browser, making
it safe to automate potentially malicious pages.</li>
<li><strong>Stability</strong>: Puppeteer should not be flaky and should not leak memory.</li>
<li><strong>Simplicity</strong>: Puppeteer provides a high-level API that’s easy to use,
understand, and debug.</li>
</ul>
<h2class="anchor anchorWithStickyNavbar_LWe7"id="q-is-puppeteer-a-replacement-for-selenium-webdriver">Q: Is Puppeteer a replacement for Selenium WebDriver?<ahref="#q-is-puppeteer-a-replacement-for-selenium-webdriver"class="hash-link"aria-label="Direct link to Q: Is Puppeteer a replacement for Selenium WebDriver?"title="Direct link to Q: Is Puppeteer a replacement for Selenium WebDriver?"></a></h2>
<p><strong>No</strong>. Both projects are valuable for very different reasons:</p>
<ul>
<li>Selenium WebDriver focuses on cross-browser automation and provides bindings for
multiple languages; Puppeteer is only for JavaScript.</li>
<li>Puppeteer focuses on Chromium; its value proposition is richer functionality
for Chromium-based browsers.</li>
</ul>
<p>That said, you <strong>can</strong> use Puppeteer to run tests against Chromium, e.g. using
Chrome DevTools to inspect the test environment.</li>
</ul>
<h2class="anchor anchorWithStickyNavbar_LWe7"id="q-why-doesnt-puppeteer-vxxx-work-with-chromium-vyyy">Q: Why doesn’t Puppeteer v.XXX work with Chromium v.YYY?<ahref="#q-why-doesnt-puppeteer-vxxx-work-with-chromium-vyyy"class="hash-link"aria-label="Direct link to Q: Why doesn’t Puppeteer v.XXX work with Chromium v.YYY?"title="Direct link to Q: Why doesn’t Puppeteer v.XXX work with Chromium v.YYY?"></a></h2>
<p>We see Puppeteer as an <strong>indivisible entity</strong> with Chromium. Each version of
<li>It turned out this is an issue with the DevTools protocol, so we’re fixing it
in Chromium: <ahref="https://chromium-review.googlesource.com/c/chromium/src/+/1102154"target="_blank"rel="noopener noreferrer">https://chromium-review.googlesource.com/c/chromium/src/+/1102154</a></li>
<li>Once the upstream fix is landed, we roll updated Chromium into Puppeteer:
<h2class="anchor anchorWithStickyNavbar_LWe7"id="q-which-chrome-version-does-puppeteer-use">Q: Which Chrome version does Puppeteer use?<ahref="#q-which-chrome-version-does-puppeteer-use"class="hash-link"aria-label="Direct link to Q: Which Chrome version does Puppeteer use?"title="Direct link to Q: Which Chrome version does Puppeteer use?"></a></h2>
<h2class="anchor anchorWithStickyNavbar_LWe7"id="q-which-firefox-version-does-puppeteer-use">Q: Which Firefox version does Puppeteer use?<ahref="#q-which-firefox-version-does-puppeteer-use"class="hash-link"aria-label="Direct link to Q: Which Firefox version does Puppeteer use?"title="Direct link to Q: Which Firefox version does Puppeteer use?"></a></h2>
<p>Since Firefox support is experimental, Puppeteer downloads the latest
<h2class="anchor anchorWithStickyNavbar_LWe7"id="q-whats-considered-a-navigation">Q: What’s considered a “Navigation”?<ahref="#q-whats-considered-a-navigation"class="hash-link"aria-label="Direct link to Q: What’s considered a “Navigation”?"title="Direct link to Q: What’s considered a “Navigation”?"></a></h2>
<p>From Puppeteer’s standpoint, <strong>“navigation” is anything that changes a page’s
<p>With this definition of “navigation,” <strong>Puppeteer works seamlessly with
single-page applications.</strong></p>
<h2class="anchor anchorWithStickyNavbar_LWe7"id="q-whats-the-difference-between-a-trusted-and-untrusted-input-event">Q: What’s the difference between a “trusted" and "untrusted" input event?<ahref="#q-whats-the-difference-between-a-trusted-and-untrusted-input-event"class="hash-link"aria-label="Direct link to Q: What’s the difference between a “trusted" and "untrusted" input event?"title="Direct link to Q: What’s the difference between a “trusted" and "untrusted" input event?"></a></h2>
<p>In browsers, input events could be divided into two big groups: trusted vs.
untrusted.</p>
<ul>
<li><strong>Trusted events</strong>: events generated by users interacting with the page, e.g.
using a mouse or keyboard.</li>
<li><strong>Untrusted event</strong>: events generated by Web APIs, e.g. <code>document.createEvent</code>
or <code>element.click()</code> methods.</li>
</ul>
<p>Websites can distinguish between these two groups:</p>
<h2class="anchor anchorWithStickyNavbar_LWe7"id="q-does-puppeteer-support-media-and-audio-playback">Q: Does Puppeteer support media and audio playback?<ahref="#q-does-puppeteer-support-media-and-audio-playback"class="hash-link"aria-label="Direct link to Q: Does Puppeteer support media and audio playback?"title="Direct link to Q: Does Puppeteer support media and audio playback?"></a></h2>
<p>Puppeteer uses <ahref="https://developer.chrome.com/blog/chrome-for-testing/"target="_blank"rel="noopener noreferrer">Chrome for Testing</a> binaries
<h2class="anchor anchorWithStickyNavbar_LWe7"id="q-i-am-having-trouble-installing--running-puppeteer-in-my-test-environment-where-should-i-look-for-help">Q: I am having trouble installing / running Puppeteer in my test environment. Where should I look for help?<ahref="#q-i-am-having-trouble-installing--running-puppeteer-in-my-test-environment-where-should-i-look-for-help"class="hash-link"aria-label="Direct link to Q: I am having trouble installing / running Puppeteer in my test environment. Where should I look for help?"title="Direct link to Q: I am having trouble installing / running Puppeteer in my test environment. Where should I look for help?"></a></h2>
guide for various operating systems that lists the required dependencies.</p>
<h2class="anchor anchorWithStickyNavbar_LWe7"id="q-i-have-more-questions-where-do-i-ask">Q: I have more questions! Where do I ask?<ahref="#q-i-have-more-questions-where-do-i-ask"class="hash-link"aria-label="Direct link to Q: I have more questions! Where do I ask?"title="Direct link to Q: I have more questions! Where do I ask?"></a></h2>
<p>There are many ways to get help on Puppeteer:</p>
<p>Make sure to search these channels before posting your question.</p></div></article><navclass="pagination-nav docusaurus-mt-lg"aria-label="Docs pages"><aclass="pagination-nav__link pagination-nav__link--prev"href="/next/supported-browsers"><divclass="pagination-nav__sublabel">Previous</div><divclass="pagination-nav__label">Supported browsers</div></a></nav></div></div><divclass="col col--3"><divclass="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ulclass="table-of-contents table-of-contents__left-border"><li><ahref="#q-who-maintains-puppeteer"class="table-of-contents__link toc-highlight">Q: Who maintains Puppeteer?</a></li><li><ahref="#q-what-is-the-status-of-cross-browser-support"class="table-of-contents__link toc-highlight">Q: What is the status of cross-browser support?</a></li><li><ahref="#q-does-puppeteer-support-webdriver-bidi"class="table-of-contents__link toc-highlight">Q: Does Puppeteer support WebDriver BiDi?</a></li><li><ahref="#q-what-are-puppeteers-goals-and-principles"class="table-of-contents__link toc-highlight">Q: What are Puppeteer’s goals and principles?</a></li><li><ahref="#q-is-puppeteer-a-replacement-for-selenium-webdriver"class="table-of-contents__link toc-highlight">Q: Is Puppeteer a replacement for Selenium WebDriver?</a></li><li><ahref="#q-why-doesnt-puppeteer-vxxx-work-with-chromium-vyyy"class="table-of-contents__link toc-highlight">Q: Why doesn’t Puppeteer v.XXX work with Chromium v.YYY?</a></li><li><ahref="#q-which-chrome-version-does-puppeteer-use"class="table-of-contents__link toc-highlight">Q: Which Chrome version does Puppeteer use?</a></li><li><ahref="#q-which-firefox-version-does-puppeteer-use"class="table-of-contents__link toc-highlight">Q: Which Firefox version does Puppeteer use?</a></li><li><ahref="#q-whats-considered-a-navigation"class="table-of-contents__link toc-highlight">Q: What’s considered a “Navigation”?</a></li><li><ahref="#q-whats-the-difference-between-a-trusted-and-untrusted-input-event"class="table-of-contents__link toc-highlight">Q: What’s the difference between a “trusted" and "untrusted" input event?</a></li><li><ahref="#q-does-puppeteer-support-media-and-audio-playback"class="table-of-contents__link toc-highlight">Q: Does Puppeteer support media and audio playback?</a></li><li><ahref="#q-i-am-having-trouble-installing--running-puppeteer-in-my-test-environment-where-should-i-look-for-help"class="table-of-contents__link toc-highlight">Q: I am having trouble installing / running Puppeteer in my test environment. Where should I look for help?</a></li><li><ahref="#q-i-have-more-questions-where-do-i-ask"class="table-of-contents__link toc-highlight">Q: I have more questions! Where do I ask?</a></li></ul></div></div></div></div></main></div></div></div><footerclass="footer footer--dark"><divclass="container container-fluid"><divclass="row footer__links"><divclass="col footer__col"><divclass="footer__title">Community</div><ulclass="footer__items clean-list"><liclass="footer__item"><ahref="https://stackoverflow.com/questions/tagged/puppeteer"target="_blank"rel="noopener noreferrer"class="footer__link-item">Stack Overflow<svgwidth="13.5"height="13.5"aria-hidden="true"viewBox="0 0 24 24"class="iconExternalLink_nPIU"><pathfill="currentColor"d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><liclass="footer__item"><ahref="https://twitter.com/chromedevtools"target="_blank"rel="noopener noreferrer"class="footer__link-item">Twitter<svgwidth="13.5"height="13.5"aria-hidden="true"viewBox="0 0 24 24"class="iconExternalLink_nPIU"><pathfill="currentColor"d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><liclass="footer__item"><ahref="https://goo.gle/devtools-youtube"target="_blank"rel="noopener noreferrer"class="footer__link-item">YouTube<svgwidth="13.5"height="13.5"aria-hidden="true"viewBox="0024