Start Puppeteer’s JavaScript and CSS coverage collectors before the page load or interaction you want to measure, then stop them and calculate the proportion of reported source ranges that ran. The percentage describes only the code observed during that particular run—not every route or interaction in an application.
Measure JavaScript and CSS coverage in Puppeteer
This runnable example measures the code observed during an initial page load. It follows Puppeteer’s documented approach of adding the JavaScript and CSS reports together, counting each entry’s source-text length as total bytes, and summing the reported ranges as used bytes. The zero-total check prevents division by zero if the page produces no coverage entries.
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
try {
const page = await browser.newPage();
await Promise.all([
page.coverage.startJSCoverage(),
page.coverage.startCSSCoverage(),
]);
await page.goto('https://example.com');
// Perform any interactions you want included in the measurement here.
const [jsCoverage, cssCoverage] = await Promise.all([
page.coverage.stopJSCoverage(),
page.coverage.stopCSSCoverage(),
]);
const entries = [...jsCoverage, ...cssCoverage];
let totalBytes = 0;
let usedBytes = 0;
for (const entry of entries) {
totalBytes += entry.text.length;
for (const range of entry.ranges) {
usedBytes += range.end - range.start - 1;
}
}
const usedPercent = totalBytes === 0 ? 0 : (usedBytes / totalBytes) * 100;
console.log(`Bytes used: ${usedPercent}%`);
} finally {
await browser.close();
}
})();
Puppeteer describes the Coverage class as gathering information about JavaScript and CSS parts used by a page. See the Coverage class documentation for its coverage methods.
Choose the measurement window
Initial page load
Start both collectors before calling page.goto(), as in the example. If collection starts after navigation, code that ran during the earlier load is outside the measurement window.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →#1 Best Overall
- Valued Carpenter Pencil Set: You will get 2 pcs solid carpenter pencils with 26 piece 2.8 mm refills, 1 replaceable sharpener, 1 plastic storage box.The complete carpenter pencils combination allows you to finish your work faster and more easily
- Deep Hole Marker Pencil: The deep-hole construction pencils adopts 45mm elongated tip design, which is more convenient to mark in the small hole or in other tight areas that other carpenter markers cannot reach
- Carpenter Pencils with Sharpener: The sharpener is screwed into the top of the work pencil, which won't get lost either. Built-in pencil sharpener that keep the lead with pointed and smooth to Improves line of sight in fine work
- Stronger Solid Lead: This work pencil is matched with a 2.8 mm thick lead , which is much thicker and stronger during the drawing process of construction work, it will not break or damage easily
- Marks on Various Surfaces: 3 colors solid construction pencil can marks on various surfaces,such as metal, plastic, wood, paper etc. Ideals for woodworkers, contractors, craftsmen, builders, merchants and masons
User interactions
To measure an interaction path, start coverage before the first action, run a repeatable sequence, then stop collection. For example, the sequence might open a menu, submit a form, and navigate to a particular view. State which page and actions were exercised when you report the result; one run cannot establish coverage for actions it did not execute.
Multi-page journeys
Do not rely on resetOnNavigation: false to preserve JavaScript coverage across a navigation. Chrome may discard the previous page’s execution environment and its coverage. The safer approach is to stop collection before leaving each page, start it again on the next page, and combine the returned reports yourself. The behavior and option are documented in JSCoverageOptions.
Rank #2
- Ergonomically Designed: Work in tight areas with a compact design that gets into tough spots
- Compact and Lightweight: Both tools are designed to fit into difficult to reach spaces. The 1/4" impact driver has a length of 5.55 in. and weighs just 2.8 lbs, while the 1/2" drill/driver measures only 7.5 in. and weighs 3.6 lbs
- Both the DEWALT impact driver and electric drill driver feature integrated LED work lights with a convenient 20-second delay, ensuring enhanced visibility in dimly lit or challenging work areas
- One-Handed Loading - Keep one hand free with a 1/4 in. hex chuck that accepts 1 in. bit tips
- Power drill cordless with 1/2" single sleeve ratcheting chuck provides tight bit gripping strength, making bit changes faster and more secure
Configure what Puppeteer reports
JavaScript options
JavaScript coverage defaults to block-level granularity. Set useBlockCoverage: false when you need function-level coverage instead. The documented defaults are resetOnNavigation: true, reportAnonymousScripts: false, includeRawScriptCoverage: false, and useBlockCoverage: true. Check the API for the Puppeteer version installed in your project because documentation defaults can change.
await page.coverage.startJSCoverage({
resetOnNavigation: true,
reportAnonymousScripts: true,
includeRawScriptCoverage: false,
useBlockCoverage: true,
});
With reportAnonymousScripts: true, coverage can include anonymous scripts created by eval or new Function. Their generated URLs commonly begin with debugger://VM, unless a sourceURL comment supplies a URL. For option details, see Coverage.startJSCoverage().
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Rank #3
- 【Great Compatibility】This Katerk 1/4 inch hex shank bit holder is specifically designed for 1/4 inch hex shank drill bits. It's compatible with most 1/4 fast hex handles, hex sockets, various electric screwdrivers, and handheld screwdrivers. The bit holder makes it a valuable addition for any handyman.
- 【Secure and Safe】Built with a secure backup nut design, each drill bit holder securely locks onto your bits, ensuring they stay firmly in place. Additionally, our bit holder incorporates a high-quality steel ball rolling design that holds up to several kilograms of weight, ensuring your various drill bits don't fall off.
- 【Easy One-Handed Operation】The bit holder for impact driver allows you to change bits single-handedly, simplifying your workflow. Its multi-color design further allows for quick identification of the drill bit you need.
- 【Compact and Convenient】Thanks to its compact size, this 1/4 inch bit holder is easy to carry around. The bit holder allows for easy attachment to various tools, making this a convenient addition to your construction accessories. The Katerk bit holder is cast from high-quality alloy material, promising a long product lifespan. Despite its rugged strength, the bit holder remains lightweight, making it portable.
- 【Cool Christmas Gift For Men Stocking Stuffers】 This screwdriver bit holder, driver bit holder, impact bit holder, can be given as a gift to your loved one, especially for anyone involved in construction or electrical work. It's a must-have for stocking stuffers for men and women, tools gifts for dad, tech gadgets for men, gifts for dad, gifts for him, gifts for husband, gifts for boyfriend, cool gadgets for men, and cool gifts for dad.
CSS options and reporting limits
CSS coverage has a resetOnNavigation option that defaults to true. Its API is documented at Coverage.startCSSCoverage(). Puppeteer does not include dynamically injected style tags without sourceURLs; JavaScript anonymous scripts are also omitted by default unless configured otherwise. Consequently, the calculated percentage describes the source represented in the reports Puppeteer returned, not necessarily every runtime-generated style or script.
Understand the percentage
The example calculates usedBytes / totalBytes × 100 across the returned JavaScript and CSS entries. This is a byte-based ratio for the chosen run and configuration, not a published benchmark or a universal application score. Puppeteer’s example calls its result “initially executed code.” Changing the page, action sequence, or coverage options can change the result.
Rank #4
- Long Nib and Deep Hole Marker: Our mechanical carpenter pencil with 45mm nib is designed for easy marking of deep holes or narrow areas. These construction pencils are the great choice for woodworking tools, construction tools, carpenter tools, contractor tools, wood carpentry tools and architect tools
- Extra Refills in 2 Colors for Versatile Marking: The construction mechanical pencil comes with 12 extra 2.8mm refills, including 6 red and 6 black refills. The black refill is suitable for light surfaces, while the red wax is perfect for dark surfaces. Our carpenter mechanical pencil makes sure that you'll have an ample supply for extended use
- Built-in Sharpener: Our construction pencil comes with a built-in sharpener to ensure the mechanical pencil tip is always sharp and ready for use. Never buy an extra pencil sharpener again. A great tool for any woodworker pencil, contractor pencils. The refill can easily be extended or retracted with a simple click of the pencils mechanical, allowing you to work more efficiently and accurately
- Portable Clip Design: Our deep hole construction pencil features a portable clip design, easy to carry and attach to your pocket or tool box, so that you can keep the carpenter pencils mechanical close at hand, making it a convenient tool to have on the go. Great gifts choice for carpenters
- Stronger Pencil Lead: The black refills are made of lead, sturdy and smooth. The red refills are made of wax, clear and light. These marking pencils are much thicker and stronger than normal pencils during the marking process of construction work, suitable for various surfaces, such as glasses, metal, boards, floors, walls, furniture, etc. The written marks can be easily wiped with a wet paper towel when needed
The example sums every reported range using Puppeteer’s documented range formula. It is an aggregate across entries, not a line-coverage or test-suite metric. Use consistent pages, actions, and settings when comparing runs, and describe what was exercised alongside the figure.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Optional: export coverage for Istanbul
If you already use Istanbul tooling, Puppeteer’s Coverage documentation points to puppeteer-to-istanbul as a way to convert coverage output into a consumable format. Conversion is not required to calculate the byte percentage above.
Recommended Free Tools
Best Value
- Milwaukee Ink all Fine Point Marker, Black, 4 Per Pack
- 4 per pack Features Clog Resistant Marker Tip Writes through Dusty, Wet and Oily Surfaces Durable Marker Tip for Writing on Concrete, OSB and Rough Surfaces
- Clog resistant tip writes on dusty, wet and oily surfaces and is optimized for rough surfaces such as OSB, cinderblock and concrete
- Hard hat clip- attaches for easy access
- Quick dry time with reduced smearing and marking
Troubleshooting coverage results
- Coverage arrays are empty or unexpectedly small: Start both collectors before navigation or before the target interactions. Check that the page actually loaded and that the actions ran before stopping.
- Anonymous code is missing: Set
reportAnonymousScripts: truewhen starting JavaScript coverage. Anonymous scripts without sourceURLs are excluded by default. - Dynamically added CSS is missing: CSS style tags injected without sourceURLs are not included in Puppeteer’s CSS coverage report.
- Coverage disappears after navigation: Collect each page separately. Stop before navigating away, restart on the next page, and merge the resulting arrays rather than assuming JavaScript coverage survives the transition.
- The percentage is 0 or not a number: The example’s zero-total guard returns 0 when there are no reported source bytes. If the output is unexpected, confirm that coverage was started, the page executed scripts or styles, and the measurement ended after the intended actions.
Or skip the browser setup
For screenshots rather than code-coverage reports, ScreenshotNeo provides a one-request website screenshot API; it does not measure JavaScript or CSS coverage. For example, save a WebP capture of a page with cURL:
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 setup and request options. ScreenshotNeo accepts cookie and consent banners before capture and removes 60+ known consent platforms, newsletter popups, and chat widgets; each cleanup step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers report the page verdict and billing status. Its MCP server offers screenshot tools for AI agents, and every plan includes all features. The free plan includes 1,000 screenshots a month without a card; paid plans start at $5 for 3,000 shots. Sign up for 1,000 free screenshots a month, with no card required.
Frequently Asked Questions
Does Puppeteer coverage tell me whether my whole application is covered?
No. It reports code observed during the pages and actions in the measured run; it does not establish coverage for unvisited routes or untested interactions.
Can I use Puppeteer coverage output with Istanbul?
Yes. Puppeteer’s Coverage documentation points to puppeteer-to-istanbul for converting reports into a format consumable by Istanbul.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Quick Recap
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.

