Test responsive layouts by combining continuous viewport resizing, targeted widths and heights, interaction checks, automated Playwright runs, the WCAG reflow condition, and selective real-device validation. A screenshot that looks correct at one size does not prove that menus, forms, dialogs, focus states or expanded content work everywhere.
What a complete responsive-layout test covers
Start with representative pages and states rather than only the home page at its initial load. Include a page with primary navigation, a form, a dialog or modal, a table, long text, media, and any component whose size changes when content expands. Exercise controls at the widths where their arrangement changes; static screenshots can hide interaction failures.
- Content: headings, labels, prices, buttons and error messages remain readable and are not clipped.
- Layout: columns stack as intended, cards do not overlap, media scales without distortion, and no accidental horizontal scrollbar appears.
- Function: navigation has a usable replacement when it collapses, forms remain operable, dialogs fit, and expanded content stays available.
- Keyboard and focus: the focused element is not hidden behind a fixed header, sticky footer or clipped container.
- States: test loading, validation errors, empty results, long labels, zoomed text and open menus—not only the default state.
Manual testing in a browser
1. Open responsive inspection
In Chrome DevTools, open the device or responsive toolbar, then drag the viewport edge continuously. The goal is to observe the exact width at which a component stops fitting or a breakpoint changes its arrangement, not merely to check named phone presets. Microsoft Edge DevTools offers comparable device-emulation and resizing controls.
2. Resize through breakpoints and intermediate widths
Record the transition points you observe, then test just above and below each one. Include a narrow phone-sized viewport, intermediate widths, a constrained desktop window and a wide desktop viewport. Intermediate widths often reveal a two-column layout that has not yet stacked but no longer has enough room for its content.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
#1 Best Overall
3. Vary height as well as width
Pair narrow widths with short heights. A short viewport can expose a fixed header that covers content, a modal whose buttons are below the fold, or a sticky control that obscures the focused field. Repeat important checks with a taller viewport so you can distinguish a height problem from a width problem.
4. Exercise interactions at each critical size
- Open and close the navigation menu, including nested items.
- Tab through links and form fields; verify visible focus and a logical order.
- Submit valid and invalid forms and read every error message.
- Open dialogs, dropdowns, accordions and date pickers; check that their controls remain reachable.
- Expand long cards, tables or disclosure panels and verify that new content does not overlap neighboring content.
- Scroll after each state change and confirm that sticky elements do not hide headings or controls.
Use the WCAG reflow check
WCAG 2.1 Success Criterion 1.4.10 describes reflow for vertically scrolling content at a width equivalent to 320 CSS pixels. Applicable content should present its information and functionality without requiring two-dimensional scrolling, except where a two-dimensional layout is essential to the meaning or use of the content. The criterion concerns the browser’s CSS viewport, not a physical display with exactly 320 pixels. The related height equivalent for horizontally scrolling content is 256 CSS pixels.
At an equivalent 320-CSS-pixel width, inspect every important page state. Look for clipped text, hidden controls, overlapping fields, fixed-width code or data that forces page-wide scrolling, and content that disappears when the layout reflows. A wide table, map or diagram may qualify for an exception when two-dimensional presentation is essential; document the reason rather than silently ignoring it. Check the currently applicable WCAG edition and local requirements when making a formal conformance claim.
Automate repeatable checks with Playwright
Playwright can set viewport dimensions on a browser context or test project and can emulate device parameters such as screen size, user agent and touch support. Keep screenshots and assertions tied to important page states so a passing initial screenshot does not mask a broken menu or form.
Free tools Windows power users keep installed
One-click scans. No signup required.
Rank #2
Minimal runnable test
import { test, expect } from '@playwright/test';
const sizes = [
{ name: 'phone-narrow', width: 320, height: 568 },
{ name: 'phone-wide', width: 390, height: 844 },
{ name: 'tablet', width: 768, height: 1024 },
{ name: 'desktop', width: 1280, height: 800 },
];
for (const size of sizes) {
test(`layout at ${size.name}`, async ({ browser }) => {
const context = await browser.newContext({
viewport: { width: size.width, height: size.height },
});
const page = await context.newPage();
await page.goto('https://example.com', { waitUntil: 'networkidle' });
await expect(page.locator('body')).toBeVisible();
await expect(page).toHaveScreenshot(`${size.name}.png`, { fullPage: true });
await context.close();
});
}
Replace the URL and selectors with your application’s pages and stable landmarks. Add tests for the open navigation, an invalid form submission and an expanded component. Use projects or device descriptors when you need touch and user-agent emulation, but remember that emulated characteristics are not exhaustive hardware or browser-engine coverage.
Make visual tests useful
- Wait for fonts, images and application data before capturing.
- Use deterministic fixtures so content does not change between runs.
- Mask timestamps, rotating ads and other intentional differences.
- Keep a baseline for each meaningful width and state; investigate pixel changes rather than automatically approving them.
- Pair screenshots with DOM assertions for visibility, accessible names, focus and horizontal overflow.
Emulation versus real devices
| Approach | Best use | What it cannot prove |
|---|---|---|
| Browser responsive viewport | Fast exploration of breakpoints and reflow while developing | It represents the browser and settings being emulated, not every physical device. |
| Playwright emulation | Repeatable viewport, device-parameter and interaction checks in CI | It does not establish exhaustive real hardware, operating-system or engine coverage. |
| Real phone or tablet | Touch behavior, font rendering, browser chrome, sensors and hardware-specific issues | One device represents only one combination of hardware, OS and browser; access is required. |
| Cross-browser/device service | A wider matrix without maintaining a physical lab | Evaluate the provider’s actual browser and OS coverage, interaction support, repeatability, workflow and cost before relying on it. |
Use emulation for broad, repeatable coverage. Add a real phone already available to your team when touch, rendering or browser-chrome behavior matters. Add another browser engine or operating system when your audience or the risk of failure warrants it; an emulator alone does not establish cross-engine coverage.
Capture evidence without losing interaction context
Keep the viewport width and height, browser, operating system, URL, application state and test date with each screenshot or failure. A full-page image can show overflow but may not reveal that a focused field is obscured or that a menu cannot be opened. For defects, attach a short reproduction sequence and screenshots before and after the relevant interaction.
Common failures and fixes
Text or buttons are clipped
Cause: fixed heights, nowrap text, or a child wider than its container. Fix: allow wrapping, remove unnecessary fixed heights, constrain media, and inspect the widest child at the failing width.
Unexpected horizontal scrolling
Cause: fixed-width elements, negative margins, transforms or an unbounded data table. Fix: locate the overflowing element in DevTools, use responsive table treatment where appropriate, and verify the 320-CSS-pixel reflow case.
A dialog or sticky header hides content
Cause: viewport-height assumptions, missing scroll regions or an incorrect stacking context. Fix: test a short viewport, keep dialog actions reachable, manage focus, and account for the fixed element’s actual height.
Rank #4
The mobile menu looks correct but cannot be used
Cause: a click target is covered, focus is trapped incorrectly, or only a hover state exposes links. Fix: test touch and keyboard paths, provide an accessible name and state, and verify open, close and escape behavior.
Playwright screenshots fail intermittently
Cause: late fonts, animations, network data or changing third-party content. Fix: wait for a stable application signal, freeze test data, disable nonessential animation in tests and mask intentional variation. Do not increase retries until the source of nondeterminism is understood.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →A passing emulation test fails on a phone
Cause: differences in browser engine, font rasterization, touch events, browser chrome or operating-system behavior. Fix: reproduce on the affected device, add that environment to the risk-based matrix, and keep the emulated test for fast regression coverage.
Best Value
A practical test matrix
Build the matrix from audience and risk rather than an arbitrary list of devices. At minimum, include the 320-CSS-pixel reflow check, one narrow short viewport, one intermediate width, a constrained desktop width and a wide desktop width. For high-risk checkout, authentication or data-entry flows, add a real touch device and another browser engine. For each entry, test initial load plus the states that change structure: open navigation, validation errors, dialogs, expanded content and long or empty data.
Or skip the browser setup
ScreenshotNeo provides a one-request website screenshot API and MCP server. It can capture PNG, JPEG, WebP or PDF, including full pages with lazy images loaded, a selected CSS element, custom viewport or device settings, dark mode, retina scale, custom CSS and JavaScript, clicks, selector or network-idle waits, hidden selectors, blocked resources, cookies, headers, user agents, geolocation, transparent backgrounds, resizing, TTL caching, signed links, asynchronous webhooks and bulk capture of up to 100 URLs per call. Its MCP tools—take_screenshot, get_page_info and capture_pdf—work with Claude, Cursor and other MCP clients.
Cookie and consent banners, newsletter popups and chat widgets are removed before the shot. Bot checks, blank pages, timeouts, failed loads and cache hits are not billed, and response headers identify the page verdict and billing result. Every plan includes every feature: 1,000 screenshots per month are free with no card; paid plans start at $5 for 3,000 shots. See the ScreenshotNeo documentation for parameters and response details.
cURL
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Python
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)
Node.js
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
Use the API for repeatable visual evidence across URLs and viewport parameters, while retaining Playwright or a real device for interactions that require clicking, typing and touch validation. Create a free ScreenshotNeo account to get 1,000 screenshots each month with no card.
Frequently Asked Questions
Should I test every physical phone model?
No. Cover representative CSS widths and heights, then add real devices or browser engines according to audience and risk. One device cannot represent every platform.
Is a 320-pixel phone required for WCAG reflow?
No. The requirement is an equivalent 320 CSS-pixel viewport, not ownership of a display with exactly 320 physical pixels.
Are screenshots enough for responsive QA?
No. They document appearance, but menus, forms, dialogs, focus and expanded states require interaction checks.
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.

