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 reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchTo rotate a Puppeteer page into a landscape-style viewport, resize it with landscape dimensions and set isLandscape: true before navigation:
await page.setViewport({
width: 844,
height: 390,
isLandscape: true,
});
This changes the browser page’s emulated viewport in CSS pixels. It does not turn a physical monitor or phone. Use dimensions that match the layout or device you need to test.
What “rotate” means in Puppeteer
Puppeteer controls Chromium’s page rendering, not the physical orientation of a display. In practice, “rotate the viewport” usually means switching from portrait-style dimensions (a taller viewport) to landscape-style dimensions (a wider viewport). The relevant API is page.setViewport().
The width and height values are CSS pixels. isLandscape is an optional emulation flag and defaults to false. A wide viewport can trigger responsive breakpoints even without the flag; setting the flag makes the intended orientation explicit for APIs and pages that inspect orientation-related emulation.
#1 Best Overall
- CRISP CLARITY: This 23.8″ Philips V line monitor delivers crisp Full HD 1920x1080 visuals. Enjoy movies, shows and videos with remarkable detail
- INCREDIBLE CONTRAST: The VA panel produces brighter whites and deeper blacks. You get true-to-life images and more gradients with 16.7 million colors
- THE PERFECT VIEW: The 178/178 degree extra wide viewing angle prevents the shifting of colors when viewed from an offset angle, so you always get consistent colors
- WORK SEAMLESSLY: This sleek monitor is virtually bezel-free on three sides, so the screen looks even bigger for the viewer. This minimalistic design also allows for seamless multi-monitor setups that enhance your workflow and boost productivity
- A BETTER READING EXPERIENCE: For busy office workers, EasyRead mode provides a more paper-like experience for when viewing lengthy documents
Minimal landscape example
Set the viewport after creating the page and, preferably, before opening the URL:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setViewport({
width: 844,
height: 390,
isLandscape: true,
});
await page.goto('https://example.com', {
waitUntil: 'networkidle2',
});
await page.screenshot({
path: 'landscape.png',
fullPage: true,
});
await browser.close();
})();
The 844 by 390 values are illustrative CSS-pixel dimensions, not a universal device standard. Replace them with the dimensions required by your test. Keep width greater than height for a landscape layout.
Set the viewport before navigation
Configure the page before page.goto() whenever possible. Sites often choose their responsive markup, user-agent behavior, and initial component state during the first navigation. Changing certain emulation properties later can cause a reload, and a page that was designed for phone-sized dimensions may not handle an unexpected change cleanly.
- Launch Chromium and create a page.
- Call
page.setViewport()with the target CSS-pixel dimensions. - Set
isLandscape: truewhen you want orientation emulation explicitly represented. - Navigate to the page.
- Wait for the condition your test needs, then capture or inspect the page.
Changing orientation on an existing page
You can resize a page after navigation when the test specifically checks a responsive transition:
Recommended Free Tools
await page.setViewport({
width: 390,
height: 844,
isLandscape: false,
});
await page.goto('https://example.com', { waitUntil: 'networkidle2' });
await page.setViewport({
width: 844,
height: 390,
isLandscape: true,
});
await page.screenshot({ path: 'after-rotation.png' });
For repeatable tests, a fresh page or a reload after the change is often clearer than assuming every application reacts identically to a live resize. Verify your application’s behavior rather than treating a resize as a hardware rotation event.
Rank #2
- CRISP CLARITY: This 22 inch class (21.5″ viewable) Philips V line monitor delivers crisp Full HD 1920x1080 visuals. Enjoy movies, shows and videos with remarkable detail
- 100HZ FAST REFRESH RATE: 100Hz brings your favorite movies and video games to life. Stream, binge, and play effortlessly
- SMOOTH ACTION WITH ADAPTIVE-SYNC: Adaptive-Sync technology ensures fluid action sequences and rapid response time. Every frame will be rendered smoothly with crystal clarity and without stutter
- INCREDIBLE CONTRAST: The VA panel produces brighter whites and deeper blacks. You get true-to-life images and more gradients with 16.7 million colors
- THE PERFECT VIEW: The 178/178 degree extra wide viewing angle prevents the shifting of colors when viewed from an offset angle, so you always get consistent colors
Choose dimensions and viewport options
setViewport accepts more than width and height. Use only the properties relevant to the behavior you are testing.
| Property | Purpose | Typical use |
|---|---|---|
width |
Viewport width in CSS pixels | Landscape width such as 844 |
height |
Viewport height in CSS pixels | Landscape height such as 390 |
isLandscape |
Reports landscape-style orientation to emulation | true for the landscape case |
deviceScaleFactor |
Controls the emulated device pixel ratio | Retina or high-density rendering checks |
isMobile |
Enables mobile emulation behavior | Tests that require mobile layout semantics |
hasTouch |
Emulates touch capability | Touch-specific interaction tests |
A viewport is not the same as an output image size. Screenshot dimensions can also be affected by device scale factor, browser zoom, full-page capture, and the page’s own CSS. Record the viewport values in test output when diagnosing a mismatch.
When to use device emulation instead
Use setViewport when you need custom dimensions and control over viewport properties. Use page.emulate(device) when the test should represent a known device and its user agent as well as its viewport. Puppeteer’s device emulation shortcut combines user-agent and viewport configuration.
Free tools Windows power users keep installed
One-click scans. No signup required.
Custom landscape dimensions
await page.setViewport({
width: 1280,
height: 720,
isLandscape: true,
deviceScaleFactor: 1,
});
await page.goto('https://example.com');
This is suitable for a desktop breakpoint or a deliberately chosen test matrix. It does not claim to be a particular physical device.
Known-device emulation
const devices = require('puppeteer').KnownDevices;
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.emulate(devices['iPhone 13 landscape']);
await page.goto('https://example.com', { waitUntil: 'networkidle2' });
The available device names depend on the Puppeteer version you installed. Check the installed package’s device list rather than assuming a name exists. Emulating before navigation is recommended because many sites do not expect phone dimensions or a user agent to change after loading.
Rank #3
- Clear visuals. Fluid motion: A 144Hz refresh rate and 1ms MPRT deliver smooth, tear‑free motion across work, gaming, and streaming for clearer, more fluid viewing.
- Eye comfort: TÜV Rheinland 3‑star* certification reduces harmful blue light while preserving stunning color quality without compromise. *TÜV Rheinland 3-star eye comfort certification.
- Wide viewing angle: Get consistent views across a wide 178° /178° viewing angle.
- In-Plane Switching (IPS): See excellent color accuracy and consistency across wide viewing angles with In-plane Switching (IPS) technology.
- Ultra-thin bezels: Maximize your viewing experience with thin bezels.
Complete reusable helper
A small helper makes orientation part of a test’s explicit input:
async function setOrientation(page, orientation, options = {}) {
const portrait = orientation === 'portrait';
const width = options.width ?? (portrait ? 390 : 844);
const height = options.height ?? (portrait ? 844 : 390);
await page.setViewport({
width,
height,
isLandscape: !portrait,
deviceScaleFactor: options.deviceScaleFactor ?? 1,
isMobile: options.isMobile ?? false,
hasTouch: options.hasTouch ?? false,
});
}
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await setOrientation(page, 'landscape', { width: 1024, height: 600 });
await page.goto('https://example.com', { waitUntil: 'domcontentloaded' });
console.log(await page.evaluate(() => ({
innerWidth: window.innerWidth,
innerHeight: window.innerHeight,
ratio: window.innerWidth / window.innerHeight,
})));
await browser.close();
})();
Reading window.innerWidth and window.innerHeight verifies the CSS viewport visible to page JavaScript. It is a useful assertion when a screenshot appears to have the wrong orientation.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Capture a rotated viewport reliably
Wait for layout and lazy content
Orientation changes can alter which images, menus, and breakpoints are active. Wait for a meaningful selector, a known application-ready state, or a bounded delay. Avoid relying only on a screenshot immediately after setViewport if the page performs asynchronous layout work.
Distinguish viewport capture from full-page capture
A normal screenshot captures the visible emulated viewport. fullPage: true extends the image to the document’s full scroll height, so its final pixel dimensions may be taller than the landscape viewport. Use a normal screenshot when you need to prove the visible orientation; use full-page capture when you need the entire document.
Check CSS and orientation media queries
Responsive CSS may use width breakpoints, height constraints, or @media (orientation: landscape). Test both the dimensions and the application’s visible result. A page can be wider than tall yet still fail to switch layout if its breakpoint requires a larger width.
Rank #4
- CURVED FOR ENHANCED ENGAGEMENT: An immersive viewing experience with a curved monitor that wraps more closely around your field of vision; It creates a wider view, enhancing depth perception and minimizing peripheral distraction
- SMOOTH PERFORMANCE FOR SEAMLESS CONTENT: Stay in the action when playing games, watching videos, or working on creative projects; The 100Hz refresh rate reduces lag and motion blur so you don't miss a thing in fast-paced moments¹
- MORE GAMING POWER: Gain the edge with optimizable game settings; Color and image contrast can be adjusted to see scenes more vividly and spot enemies hiding in the dark; Game Mode adjusts any game to fill the screen so you can view every detail²
- KEEP IT EASY ON THE EYES: Care for your eyes and stay comfortable, even during long sessions; Advanced eye comfort technology certified by TÜV reduces eye strain by minimizing blue light and reducing irritating screen flicker²
- INCREASED VERSATILITY: Connect to more; Plug devices straight into your monitor for increased flexibility, making your computing environment even more convenient
Troubleshooting
The screenshot is still portrait
- Confirm that width is greater than height.
- Call
setViewporton the same page you screenshot. - Set the viewport before
goto, then reload after any live change. - Check whether
fullPageis making the document’s total image tall; inspect the visible viewport separately.
The page keeps a mobile layout
Viewport dimensions alone do not supply a mobile user agent or every mobile behavior. Use page.emulate(device) for a known device, or set the relevant isMobile, hasTouch, and user-agent values deliberately. Configure these before navigation.
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 →Changing settings reloads the page
Some changes to mobile or touch emulation can trigger a reload. Treat that reload as expected: apply all viewport and emulation settings first, then navigate and wait for the page again.
Orientation media queries do not change
Verify the dimensions in page JavaScript and ensure isLandscape is set when your test depends on orientation emulation. Also check for CSS rules that override the expected breakpoint or for an application-level orientation lock.
Device emulation name is unavailable
Device descriptors vary between Puppeteer releases. Inspect the KnownDevices entries in your installed version, or use explicit setViewport dimensions when a named descriptor is not present.
Performance, reliability, and test design
- Set one viewport per test context and avoid unnecessary resize cycles; each resize can cause layout, script, and network work.
- Use deterministic waits such as a ready selector instead of an unlimited network-idle assumption on applications with persistent connections.
- Keep browser and Puppeteer versions pinned in CI so device descriptors and rendering behavior do not drift unexpectedly.
- Store width, height, device scale factor, user agent, and Puppeteer version with visual-test artifacts.
- Run portrait and landscape as separate cases when both orientations are requirements. This makes failures attributable to one configuration.
Or skip the browser setup
If your goal is a clean image or PDF of a URL rather than controlling Chromium in your own test, ScreenshotNeo provides a screenshot API and MCP server. Its request accepts viewport and orientation-related options, along with full-page capture, device presets, retina scale, custom CSS and JavaScript, waits, cookies, headers, blocking rules, and PDF settings.
Best Value
- 【INTEGRATED SPEAKERS】Whether you're at work or in the midst of an intense gaming session, our built-in speakers provide rich and seamless audio, all while keeping your desk clutter-free.
- 【EASY ON THE EYES】 Protect your eyes and enhance your comfort with Blue-Light Shift technology. This feature reduces harmful blue light emissions from your screen, helping to alleviate eye strain during long hours of use and promoting healthier viewing habits.
- 【WIDEN YOUR PERSPECTIVE】Our sleek minimal bezel design ensures undivided attention. The nearly bezel-free display seamlessly connects in a dual monitor arrangement, delivering an unobstructed view that lets you focus on more at once, completely distraction-free.
One GET request is enough:
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 documentation for the option names and response details. In plain terms, it removes cookie-consent banners, newsletter popups, and chat widgets before the shot; bot checks, blank pages, failed loads, timeouts, and cache hits are not billed; and its MCP server lets AI agents take screenshots. The free plan includes 1,000 screenshots per month with no card, and paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account.
Equivalent API calls in Python and Node.js
Python
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
timeout=90,
)
r.raise_for_status()
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}`);
if (!res.ok) throw new Error(`Screenshot failed: ${res.status}`);
const fs = await import('node:fs/promises');
await fs.writeFile('shot.webp', Buffer.from(await res.arrayBuffer()));
ScreenshotNeo reports page and billing outcomes in response headers, so callers can distinguish a clean billed capture from a bot check, blank page, failed load, or cache result.
Frequently Asked Questions
Does Puppeteer rotate the operating system display?
No. Puppeteer emulates a browser page viewport; it does not control the physical orientation of a monitor or handset.
Is isLandscape required for a wide viewport?
No. It is optional and defaults to false, but setting it to true explicitly represents landscape orientation for the emulation.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Should I use setViewport or emulate?
Use setViewport for custom CSS-pixel dimensions. Use emulate when a known device’s viewport and user agent should be configured together.
Why does a full-page landscape screenshot have portrait-like proportions?
Full-page capture includes the document’s complete scroll height. Compare a viewport screenshot or inspect window.innerWidth and window.innerHeight when validating orientation.
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.




