Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallCrashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteUse Puppeteer’s Page.screenshot() to capture a product page, then run the Node.js script on a recurring schedule with a workflow runner or cron. Set a stable viewport and output path, wait for the right page state, and make sure the browser closes even when navigation or capture fails.
What you need
- Node.js and Puppeteer installed in the environment that will run the capture.
- A list of target product-page URLs and stable filenames for their screenshots.
- A scheduler, such as cron or a scheduled workflow, to run the script repeatedly.
- A destination for the resulting files, such as a workflow artifact or a repository branch.
Puppeteer performs browser automation and capture; the scheduler supplies repetition. The Puppeteer screenshot guide demonstrates the browser, page, navigation, capture, and cleanup sequence.
As an Amazon Associate I earn from qualifying purchases.
Capture a product page with Puppeteer
Install Puppeteer in your project, then save this as capture-products.js. This example fixes the viewport, navigates to each URL, captures the full page to an explicit path, logs failures, and closes the browser in a finally block.
Recommended Free Tools
const puppeteer = require('puppeteer');
const path = require('node:path');
const products = [
{ name: 'product-a', url: 'https://example.com/product-a' },
{ name: 'product-b', url: 'https://example.com/product-b' },
];
async function main() {
const browser = await puppeteer.launch();
try {
const page = await browser.newPage();
await page.setViewport({ width: 1440, height: 1000, deviceScaleFactor: 1 });
for (const product of products) {
const output = path.resolve('screenshots', `${product.name}.png`);
try {
await page.goto(product.url, {
waitUntil: 'networkidle2',
timeout: 60000,
});
await page.screenshot({ path: output, fullPage: true });
console.log(`Saved ${output}`);
} catch (error) {
console.error(`Capture failed for ${product.url}:`, error);
process.exitCode = 1;
}
}
} finally {
await browser.close();
}
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
Ensure the screenshots directory exists before the run, or create it in the script. The sample uses networkidle2 as a starting point, not a universal readiness rule. Product sites differ, and a page can have late-loading content even after network activity has slowed.
#1 Best Overall
- Universal unlocked. Compatible with all major U.S. carriers, including Verizon, AT&T, T-Mobile and other prepaid carriers.
- Super-bright, super-smooth 6.7" display. See your screen clearly even outdoors in sunlight, and enjoy seamless views with a fast-refreshing 120Hz display.*
- AI-powered camera system. Take stunning photos in any light with the 50MP camera**, look your best with a 32MP selfie cam*****, and capture extreme close-ups.
- Superfast 5G performance. Unleash your entertainment at 5G speed*** with the MediaTek Dimensity 6300 chipset and up to 12GB of RAM with RAM Boost****.
- Long-lasting battery + TurboPower charging. Power through day after day with a 5200mAh battery, then get hours of power in just minutes.****
Choose what part of the page to capture
Full page
Use fullPage: true when the deliverable should include content below the fold. Long pages can create very tall images, so consider whether a full-page image is useful for the review or comparison you intend to make.
Viewport or clipped region
Leave fullPage false for a viewport capture. Use the clip option when you need a specific rectangle. Keeping viewport dimensions and device scale fixed makes comparisons easier, although it does not guarantee pixel-identical output across browser versions, operating systems, fonts, or changing page content.
One product element
When you need only a product card, image, or other specific region, locate it and call the element’s screenshot helper:
const productCard = await page.waitForSelector('.product-card', { timeout: 15000 });
if (!productCard) throw new Error('Product card was not found');
await productCard.screenshot({ path: 'screenshots/product-card.png' });
ElementHandle.screenshot() scrolls the element into view if needed, then captures it using the page screenshot mechanism. Replace .product-card with a selector that exists on the target page.
Wait for the content that matters
The right navigation condition depends on the site. Puppeteer supports domcontentloaded, load, and network-idle conditions through page.goto(). Parsed HTML may be enough for a static page; load waits for ordinary page resources; networkidle2 tolerates some ongoing requests. A zero-network-idle condition can time out on sites with analytics, websockets, or other persistent traffic.
Rank #2
- YOUR CONTENT, SUPER SMOOTH: The ultra-clear 6.7" FHD+ Super AMOLED display of Galaxy A17 5G helps bring your content to life, whether you're scrolling through recipes or video chatting with loved ones.¹
- LIVE FAST. CHARGE FASTER: Focus more on the moment and less on your battery percentage with Galaxy A17 5G. Super Fast Charging powers up your battery so you can get back to life sooner.²
- MEMORIES MADE PICTURE PERFECT: Capture every angle in stunning clarity, from wide family photos to close-ups of friends, with the triple-lens camera on Galaxy A17 5G.
- NEED MORE STORAGE? WE HAVE YOU COVERED: With an improved 2TB of expandable storage, Galaxy A17 5G makes it easy to keep cherished photos, videos and important files readily accessible whenever you need them.³
- BUILT TO LAST: With an improved IP54 rating, Galaxy A17 5G is even more durable than before.⁴ It’s built to resist splashes and dust and comes with a stronger yet slimmer Gorilla Glass Victus front and Glass Fiber Reinforced Polymer back.
For product details rendered by an application, wait for a meaningful selector after navigation rather than assuming network quiet means the page is ready:
await page.goto(product.url, { waitUntil: 'domcontentloaded', timeout: 60000 });
await page.waitForSelector('[data-testid="product-title"]', { timeout: 20000 });
await page.screenshot({ path: output, fullPage: true });
Use a selector tied to the content you need, not a generic container that appears before the product information is populated. If the page relies on lazy loading, decide whether scrolling or a different capture strategy is necessary; a full-page option controls capture extent but does not itself establish that every application-specific asset has finished loading.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Run the script on a schedule
With cron
On a machine where cron is available, schedule the Node script with an absolute working directory and explicit output destination. For example, this runs daily at 08:00 according to the cron host’s timezone:
0 8 * * * cd /absolute/path/to/project && /usr/bin/node capture-products.js >> capture.log 2>&1
Check the host’s timezone and ensure the Node executable path and project dependencies are available to cron. Cron environments may not inherit the same PATH or current directory as an interactive shell.
With a hosted scheduled workflow
A scheduled workflow can install dependencies, launch Chromium/Puppeteer, execute the script, and retain the images as artifacts or commit them to a repository branch. A third-party GitHub Marketplace action documents a cron-triggered pattern with a JSON URL list and options it describes for concurrency, retries, timeouts, output directories, and optional pull requests; those are features of that specific action, not guarantees about GitHub Actions generally. See its Marketplace listing for its documented setup.
Rank #3
- Charger NOT Included, 6.7" Super AMOLED FHD+, 90Hz Refresh Rate, 385 ppi, 800 nits (HBM), 1080x2340px, 5000mAh Battery
- 128GB, 4GB RAM, microSDXC, Exynos 1330 (5nm), Octa-Core, Mali-G68 MP2 or Mali-G57 MC2 GPU
- Rear Camera: 50MP, f/1.8 (wide) + 5MP, f/2.2 (ultrawide) + 2MP, f/2.4 (macro), LED flash, panorama, HDR; Front Camera: 13MP, f/2.0, Android 14, up to 6 major Android upgrades, One UI 6.1
- 3G: HSDPA 850/900/1700(AWS)/1900/2100; 4G LTE: 1/2/3/4/5/7/12/13/14/20/25/26/28/29/30/38/39/40/41/48/66/71, 5G: 2/5/25/41/66/71/77/78 SA/NSA/Sub6/mmWave - Nano-SIM + eSIM
- US Model – Global Connectivity – Compatible with Most GSM Carriers like T-Mobile, AT&T, MetroPCS, etc. Will Also work with CDMA Carriers Such as Verizon, Straight Talk.
Before depending on a hosted scheduler, verify its current cron syntax, timezone behavior, concurrency limits, timeout limits, and artifact retention rules in the provider’s documentation. Those details vary and can affect whether screenshots run when expected and remain available for later review.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Keep repeated captures comparable
For useful change tracking, record and hold steady the conditions that influence rendering:
- Use the same viewport width and height, device scale factor, and capture extent.
- Keep locale, timezone, cookies, and any required authentication state consistent.
- Use stable filenames or include a timestamp if you need a history rather than replacing the previous image.
- Record the browser/Puppeteer version and relevant capture settings alongside the images if you are investigating visual differences.
These controls reduce avoidable variation; they do not make a changing website or different browser environment render identically.
Reliability, runtime, and cost considerations
Each scheduled run must start the browser, navigate to the pages, wait, capture, and persist the output. Runtime therefore depends on the number of URLs, page behavior, and wait timeouts. Set navigation and selector timeouts, log the URL and failure, and decide whether one failed page should stop the whole batch or allow later URLs to proceed. The sample continues to later products while marking the process as failed for the scheduler.
Retries can help with transient navigation or runner failures, but repeated retries against a page that consistently blocks automation or never reaches the selected readiness condition waste run time. Keep outputs and logs long enough for your review needs, and check storage and scheduled-run limits with the environment you choose; no general scheduler price or retention rule follows from Puppeteer itself.
Rank #4
- YOUR CONTENT, SUPER SMOOTH: The ultra-clear 6.7" FHD+ Super AMOLED display of Galaxy A17 5G helps bring your content to life, whether you're scrolling through recipes or video chatting with loved ones.¹
- LIVE FAST. CHARGE FASTER: Focus more on the moment and less on your battery percentage with Galaxy A17 5G. Super Fast Charging powers up your battery so you can get back to life sooner.²
- MEMORIES MADE PICTURE PERFECT: Capture every angle in stunning clarity, from wide family photos to close-ups of friends, with the triple-lens camera on Galaxy A17 5G.
- NEED MORE STORAGE? WE HAVE YOU COVERED: With an improved 2TB of expandable storage, Galaxy A17 5G makes it easy to keep cherished photos, videos and important files readily accessible whenever you need them.³
- BUILT TO LAST: With an improved IP54 rating, Galaxy A17 5G is even more durable than before.⁴ It’s built to resist splashes and dust and comes with a stronger yet slimmer Gorilla Glass Victus front and Glass Fiber Reinforced Polymer back.
Troubleshooting
The scheduled job runs but no image appears
Check that path is set and that the destination directory exists and is writable. Relative paths resolve from the process working directory, which may differ under cron or a workflow runner. Use an absolute path or resolve one explicitly, and upload or archive the output if the runner’s filesystem is temporary.
Navigation times out
The site may be slow, blocked, or continuously active. Increase the timeout only when the page legitimately needs longer, and choose a readiness condition appropriate to its behavior. If network-idle waiting is the problem, wait for a specific product selector after a less restrictive navigation condition.
The image is blank or missing product details
Wait for a selector that appears only when the required product content is present. If content loads on scroll, the capture may need a page-specific scrolling strategy before the screenshot. Confirm the selector against the actual page and inspect the run logs for navigation errors.
The image dimensions are unexpected
Check whether fullPage is enabled and whether clip is set. Use a fixed viewport for viewport captures; full-page screenshots naturally reflect the document’s height.
The run works locally but fails in the scheduler
Verify Node and browser dependencies, the working directory, environment variables, file permissions, timezone, and runner timeout. Scheduled environments may not match an interactive machine, so make the script’s inputs and output locations explicit.
Best Value
- Carrier: This phone is locked to Tracfone, which means this device can only be used on the Tracfone wireless network. Tracfone plan required, activating is easy, just 3 steps.
- DISPLAY: Immersive viewing on a 6.7-inch super-bright 120Hz display with powerful stereo speakers and Bass Boost for cinematic entertainment.
- CAMERA SYSTEM: Advanced 50MP Quad Pixel camera captures sharp, detailed photos and videos in any lighting condition
- PERFORMANCE: Lightning-fast 5G connectivity paired with a powerful processor and RAM Boost for smooth multitasking.
- BATTERY LIFE: Long-lasting 5000mAh battery with TurboPower charging technology delivers hours of power in minutes.
Or skip the browser setup
For a one-request capture, ScreenshotNeo accepts a URL and returns an image or PDF. Its API documentation describes the request options.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com/product-a -o product-a.webp
ScreenshotNeo removes cookie/consent banners, newsletter popups, and chat widgets before capture; bot checks, blank pages, failed loads, timeouts, and cache hits are not billed. It also offers an MCP server for AI agents. The Free plan includes 1,000 screenshots per month without a card; paid plans start at $5 for 3,000 shots.
Learn about ScreenshotNeo, or sign up free for 1,000 screenshots a month with no card.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorsFrequently Asked Questions
Does Puppeteer itself run on a schedule?
No. Puppeteer automates the browser and captures the page; a scheduler such as cron or a scheduled workflow starts the script repeatedly.
Can I save JPEG or WebP instead of PNG?
Yes. Puppeteer’s screenshot options include an image type; PNG is the default, while quality applies to formats that support it. Choose a matching filename extension when saving.
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.

