#15005·puppeteer

[Bug]: js coverage resets on navigation when resetOnNavigation false is specified

Author: bavocoCreated May 18, 2026Updated May 18, 2026
LabelsconfirmedP3

Minimal, reproducible example

import { createServer } from "node:http";
import puppeteer from "puppeteer-core";

const port = 3000;
const server = createServer((req, res) => {
  if (req.url === "/jscoverage/multiple.html") {
    res.writeHead(200, { "Content-Type": "text/html" });
    res.end(`<!DOCTYPE html>
<script src='script1.js'></script>
<script src='script2.js'></script>`);
    return;
  }
  if (req.url === "/jscoverage/script1.js") {
    res.writeHead(200, { "Content-Type": "application/javascript" });
    res.end(`console.log("script1");`);
    return;
  }
  if (req.url === "/jscoverage/script2.js") {
    res.writeHead(200, { "Content-Type": "application/javascript" });
    res.end(`console.log("script2");`);
    return;
  }
  res.writeHead(200, { "Content-Type": "text/plain" });
  res.end("Empty page");
});
server.listen(port);
const browser = await puppeteer.launch({
  channel: "chrome",
});
const page = await browser.newPage();
await page.coverage.startJSCoverage({ resetOnNavigation: false });
await page.goto(`http://localhost:${port}/jscoverage/multiple.html`);
await page.goto(`http://localhost:${port}`); // when commented out, we get the expected output
const coverage = await page.coverage.stopJSCoverage();
console.log(coverage.length); // expected output: 2, actual output: 0
await browser.close();
server.close();

Background

I've noticed this recently, it broke somewhere during the 24.x releases. But might not be related to puppeteer, since I'm unable to get it working again even by downgrading to 24.10.

Expectation

Expected output: 2

Reality

Actual output: 0, unless navigating to the empty page is commented out, then we get the expected output

Puppeteer configuration file (if used)

Puppeteer version

25.0.3

Node version

26.0.0

Package manager

npm

Package manager version

11.14.0

Operating system

Windows