The Scenario
The deploy finished at 2 PM. You're the QA lead and you have an Excel workbook with 50 staging environment URLs — every page that changed in this release cycle. Your job before the end-of-day sign-off is to get a screenshot of each one for the visual regression review, with the image link next to the corresponding URL so reviewers can click through without opening a browser themselves. You've done this manually before. It took most of the afternoon.
The bad version:
- Open each staging URL, wait for the page to fully render, take a screenshot with a browser extension, save the file with a name that somehow maps back to the row number, and upload it somewhere
- Realize the browser extension crops differently than what the reviewers expect, so you switch to a headless tool, which means writing a quick Puppeteer script, which means you're now a person who is writing scripts instead of doing QA
- Work through 50 URLs in sequence, handle the three that time out or return a 502, and end up with 47 screenshots and a note to re-check the remaining ones after someone pings DevOps
The visual regression review is supposed to catch rendering regressions, not generate them. You're the person who's supposed to be reviewing the screenshots, not producing them.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent that lives inside your Excel workbook. It reads the URL list and through its built-in CustomJS integration — which supports Puppeteer scripts — it can capture a full-page screenshot of each URL and write the image link back to the corresponding row in column B.
Open the SheetXAI sidebar and paste this prompt:
Use CustomJS Puppeteer to take a screenshot of every URL in column A of my Excel sheet and paste the resulting image link into column B — process all 50 rows
What You Get
- Column B fills with image URLs, one per row, aligned with the staging URL in column A
- Full-page screenshots capture below-the-fold content — not just the viewport
- Rows where the URL returned a timeout or HTTP error surface with a note in column B so you can identify which pages need a re-check
- Reviewers get a clickable image link for every staging page without touching a browser
What If the Data Is Not Quite Ready
Some URLs require a specific viewport size to render correctly
For each URL in column A, use CustomJS Puppeteer to capture a full-page screenshot at 1440px wide viewport and write the image URL to column B — for any URL that returns a non-200 status, write the status code to column C instead
The URLs are spread across two worksheets — one for desktop pages and one for mobile views
Take all URLs from column A on the "Desktop Pages" worksheet and column A on the "Mobile Pages" worksheet, use CustomJS Puppeteer to screenshot each one, and write the image URL back to column B on the same sheet it came from
Each screenshot should wait for a specific element to appear before capturing
For each URL in column A, use CustomJS Puppeteer to navigate to the page, wait for the element with class "main-content" to be visible, then capture a full-page screenshot and write the image URL to column B
Validate each URL first, skip known error pages, screenshot the rest, and write a summary
Check each URL in column A — skip any that redirect to the /error or /404 path — use CustomJS Puppeteer to screenshot the remaining pages, write image URLs to column B, write "SKIPPED" to column B for any skipped rows, and write the total screenshot count to cell D1
One prompt covers the validation, the filtering, and the screenshot capture — you don't need to split this into separate passes.
Try It
Get the 7-day free trial of SheetXAI and open any Excel workbook where column A holds URLs you need to visually document, then ask it to screenshot every page and write the image links back in one pass. Also see: bulk converting HTML to PDF and the CustomJS overview.
