ScreenshotNeo

BlogGuides

How to Include Browser and Viewport Details with Screenshots in QA Documentation

Make QA screenshots reproducible by recording the browser, OS, viewport, page state, and capture scope alongside each image.

By the ScreenshotNeo team4 October 20269 min read

A QA screenshot is useful when the next person can tell what environment produced it and how to reproduce the state. Put the browser and version, operating system and version, viewport width and height in CSS pixels, page URL, relevant steps and state, and capture scope in readable text next to the image. Label the image as a viewport, full-page, or element capture. Do not expect reviewers to infer environment details from pixels.

What to include in a screenshot bug report

Use a compact environment block beside each screenshot. Include enough context to reproduce the defect without turning the report into an inventory of irrelevant machine details.

Field What to record
Issue A concise description of the visible failure.
Page URL The shareable URL or route. If the page requires authentication or contains private data, provide an approved reproduction route or explain the access requirement.
Steps and state The actions taken and relevant page state before capture, such as selected tab, signed-in state, or expanded panel.
Browser Browser product and version. Include engine and engine version when relevant and known.
OS/platform Operating system or platform and version.
Viewport Width × height in CSS pixels. Add portrait or landscape orientation where useful.
Device/display condition Relevant emulation, device, zoom, or display characteristic if it may affect the defect.
Capture scope Visible viewport, full page, or a named element.
Expected and actual State what should appear and what the screenshot shows.
Attachments The screenshot; add a short screencast if a sequence or timing is needed to explain the issue.

Browser and OS identity are reproduction context, not properties reliably communicated by the screenshot itself. WebKit’s bug-report guidance asks for the WebKit version, platform, OS version, and URL where possible, while web.dev notes that browser bugs can depend on an OS or display characteristic. See WebKit Bug Report Guidelines and web.dev: How to file a good browser bug.

Label the screenshot scope

Use consistent labels so reviewers know which pixels they are seeing:

  • Viewport screenshot: the visible viewport at the time of capture. Record its width and height.
  • Full-page screenshot: page content beyond the visible viewport is included.
  • Element screenshot: an isolated element; name the selector or describe the element, such as “checkout totals panel.”

Chrome DevTools documents viewport sizing in Device Mode and separate commands for a viewport capture and a full-size page capture. Firefox Developer Tools documents full-page capture and capturing a selected node. Browser controls and menu labels can change, so check the documentation for the browser version your team uses: Chrome DevTools Device Mode and Firefox screenshot documentation.

Capture and document the defect

  1. Reproduce the issue. Follow the shortest reliable steps and leave the page in the state that demonstrates the failure.
  2. Set the test environment. Choose the browser and version, OS/platform, and viewport. In Chrome DevTools Device Mode, enter the desired width and height directly.
  3. Choose capture scope. Capture the visible viewport for a responsive or above-the-fold defect, the full page for layout or overflow issues, or a specific element when surrounding content distracts from the failure.
  4. Make the defect legible. Ensure the relevant content is visible. If the difference is subtle, include expected and defective renderings together when practical. Use a screencast when a sequence of actions or timing explains the problem better than a still image.
  5. Write the environment block beside the attachment. Include browser/version, OS/version, viewport dimensions in CSS pixels, URL, state and steps, and scope. Add relevant emulation or display details.
  6. For comparisons, control the variables. Keep URL, steps, and page state consistent. Record the environment for each image, including browser/version, OS/platform, viewport, orientation, and display details that might affect rendering.

These practices follow the reporting guidance from WebKit and web.dev: make the problem clear, provide environment and reproduction information, and use a comparative screenshot when the visual difference is otherwise hard to see.

Copyable QA documentation template

Issue: [Short description of the visual failure]
Page URL: [Shareable URL or route]
Steps and state:
1. [Action]
2. [Action]
3. [State immediately before capture]

Browser: [Product and version; engine/version if relevant]
OS/platform: [Name and version]
Viewport: [width × height CSS px; portrait/landscape if relevant]
Device/display condition: [Emulation, zoom, or display detail if relevant]
Capture scope: [Viewport / full page / element: name or selector]

Expected: [What should appear]
Actual: [What the screenshot shows]
Attachments:
- [Screenshot filename and scope]
- [Optional screencast filename, if sequence or timing matters]

For a browser comparison, repeat the browser, OS, viewport, display, and capture-scope fields for each attachment. Avoid a caption such as “Chrome screenshot” when the version and viewport are material to reproduction.

Do it with browser developer tools

Chrome

  1. Open DevTools and enable Device Mode.
  2. Enter the required viewport width and height; note both values in CSS pixels in the report.
  3. Use the screenshot command for the current viewport, or the full-size screenshot command when the entire page is needed.
  4. Record browser and OS versions separately in the report, along with URL, steps, state, and scope.

Chrome’s official guide: Device Mode. The capture menu wording can differ across browser versions.

Firefox

  1. Reproduce the issue in the target viewport and record the dimensions.
  2. Use the screenshot control for a full-page capture when needed.
  3. To isolate a UI part, select it in the Inspector and use the node screenshot option.
  4. Name the selected element or selector in the capture-scope field and add the environment block to the report.

See Firefox Developer Tools screenshot documentation.

Or skip the browser setup

For repeatable URL-based captures, ScreenshotNeo is a screenshot API and MCP server. One GET request returns a PNG, JPEG, WebP, or PDF. Its API accepts viewport and device options; see the ScreenshotNeo API documentation for parameters. A programmatic capture does not by itself prove which browser or OS a human reporter used, so keep those environment fields in your QA report when they matter.

curl -G "https://api.screenshotneo.com/v1/shot" \
  -d access_key=YOUR_API_KEY \
  --data-urlencode url=https://stripe.com \
  -o shot.webp
import requests

r = requests.get(
    "https://api.screenshotneo.com/v1/shot",
    params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
    timeout=90,
)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
await Bun.write('shot.webp', new Uint8Array(await res.arrayBuffer()));

Before capture, ScreenshotNeo accepts cookie or consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each of those steps can be turned off. Bot checks/CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and response headers identify the page verdict and billing status. Its MCP server gives AI agents tools to take screenshots, inspect page information, and capture PDFs. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000. Sign up for 1,000 free screenshots a month, with no card.

Options for repeatable captures

For manual bug reports, developer tools are often enough. When building an automated QA attachment flow, choose only the options needed to reproduce the defect and document those choices.

Need Capture choice What to record
Responsive layout defect Set explicit viewport width and height. CSS pixel dimensions and orientation.
Long-page layout defect Full-page screenshot. Label “full page”; note if lazy content or page state affects what loaded.
One component defect Element/node screenshot. Element name or selector.
Browser-specific rendering Capture each browser configuration. Separate browser/version and OS/version for every image.
Motion, transitions, or intermittent state Short screencast in addition to stills. Steps, timing, and the frame/state that shows the defect.
Automated remote screenshot Use a screenshot API with explicit URL and viewport settings. Request parameters and capture scope; distinguish the automation environment from the reporter’s local environment.

ScreenshotNeo supports full-page capture with lazy images loaded, CSS selector element capture, dark mode, 12 device presets and arbitrary viewports, and retina scale. It also supports custom CSS or JavaScript, clicking an element before capture, hiding selectors, waiting for a selector, delay, or network idle, custom headers/cookies/user agent/Authorization, timezone and geolocation, and request/resource blocking. For QA workflows, note any such settings that change the rendered state. See the documentation for the current request parameter names; common parameter names used by other screenshot APIs also work to ease migration.

Reliability, performance, and cost

  • Reliability: Save the screenshot with a descriptive filename and keep the issue fields with it. For an intermittent defect, record the attempt that produced the image and attach a short recording if sequence matters. A screenshot captures one state; it cannot establish that the issue occurs on every run.
  • Consistent comparisons: Hold URL, steps, page state, and viewport constant when testing browsers. Change one relevant environment at a time where possible, and list every actual configuration.
  • Performance: Full-page captures and pages with lazy-loaded media can take longer and produce larger files than a viewport capture. Wait for the state needed to reproduce the issue instead of using an arbitrary delay when a specific selector or network condition is available.
  • Cost: Browser developer tools are built into the browser workflow. For API automation, estimate volume and choose a plan that fits it. ScreenshotNeo plans are Free: 1,000 shots/month; Starter: $5 for 3,000; Growth: $15 for 15,000; Pro: $39 for 60,000; Scale: $99 for 250,000; Business: $249 for 1,000,000. Yearly billing gives two months free, and every feature is on every plan. Only clean shots are billed; response headers report verdict and billing status.

Troubleshooting QA screenshot reports

Problem Likely cause Fix
The reviewer cannot reproduce the layout. Browser version, OS, viewport, URL, or pre-capture state is missing. Add the environment block and exact steps; include the relevant page state.
The image looks cropped or incomplete. A viewport capture was attached where full-page content was needed. Capture the full page and label its scope. For a single control, capture the element and name it.
The viewport number does not match the displayed result. The report omits CSS pixel dimensions or confuses a device’s physical screen resolution with the browser viewport. Record the viewport width and height in CSS pixels as configured in developer tools; note device emulation separately.
The screenshot does not show the intermittent failure. The defect depends on timing, actions, or state that a still image cannot show. Document the sequence and state, capture the failure when it occurs, and add a short screencast if it clarifies the sequence.
Two browser screenshots are hard to compare. URL, steps, viewport, or state changed between captures. Repeat with controlled inputs and list the environment separately for each image.
A banner or widget obscures the page. The page presents consent UI, a newsletter popup, or a chat widget during capture. For manual evidence, record whether the overlay is part of the defect. For a clean automated content capture, use a tool that handles those overlays and state whether that cleanup was enabled.
An automated capture is blank or fails to load. The page may be blocked, slow, empty, or dependent on state not supplied to the request. Check the target URL and required authentication/state, then configure appropriate waits and headers/cookies. With ScreenshotNeo, inspect X-Page-Verdict and X-Billed to see the reported outcome.

FAQ

Should I include browser and OS details in the screenshot image itself?

Put them in the issue fields or a clearly named caption beside the attachment. The pixels do not reliably encode the browser version or operating system.

Is a full-page screenshot always better?

No. Use the smallest scope that makes the defect clear. Full-page images help with page-level layout and overflow; a viewport or element image may make a localized defect easier to inspect.

Do I need a screencast?

Usually not for a static visual mismatch. Add one when timing, motion, or a sequence of actions is necessary to understand or reproduce the problem.

What should I do when the bug appears in only one browser?

Attach evidence from the affected configuration and, if useful, a comparison from another browser. Keep URL, steps, page state, and viewport controlled, and state the environment for each capture.