Recommended Free Tools
To open a visible Chromium window maximized in Playwright Test, run headed and pass Chromium’s --start-maximized launch argument. To make the webpage itself larger or deterministic, set Playwright’s viewport instead. These controls are related, but they are not the same:
- Operating-system window:
headless: falseplusargs: ['--start-maximized']. - Page viewport:
viewport: { width, height },viewport: null, orpage.setViewportSize().
Use a maximized Chromium window in Playwright Test
Playwright Test is headless by default, so a maximized window is visible only when you enable headed mode. Put the launch argument in your configuration:
import { defineConfig } from '@playwright/test';
export default defineConfig({
use: {
headless: false,
viewport: null,
launchOptions: {
args: ['--start-maximized'],
},
},
});
The --start-maximized switch is a Chromium launch argument. viewport: null is included because a fixed Playwright viewport can otherwise remain 1280×720 even when the outer window fills the display. With a null viewport, the page dimensions follow the host window.
For a one-off headed run, use:
npx playwright test --headed
This makes the browser visible, but it does not add the maximize argument by itself. Keep launchOptions.args in the project configuration when you want the window to start maximized.
#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
What this configuration does not guarantee
It requests a maximized Chromium window; it is not a cross-browser Playwright API. Playwright warns that custom browser arguments are used at your own risk because some can break Playwright functionality. Keep the argument limited to the Chromium project that needs it and verify behavior after Playwright upgrades.
Choose the setting that matches your actual goal
| Goal | Setting | What to expect |
|---|---|---|
| See a browser while a test runs | headless: false or npx playwright test --headed |
A visible window; its size is not specified. |
| Ask Chromium to fill the screen | launchOptions: { args: ['--start-maximized'] } |
A browser-specific launch request; it does not define page dimensions. |
| Make layout tests repeatable | viewport: { width: 1920, height: 1080 } |
Stable emulated dimensions, independent of the monitor or desktop. |
| Let the page follow the host window | viewport: null |
Dimensions depend on the host window and are non-deterministic. |
Playwright’s documented default context viewport is 1280×720. Maximizing the operating-system window does not automatically change a fixed emulated viewport, which is why visual debugging and responsive-layout tests often need different configurations.
Use a fixed viewport when test reliability matters
For assertions, screenshots, and CI, explicit dimensions are usually safer than whatever display happens to run the test. Configure a project with a known size:
import { defineConfig } from '@playwright/test';
export default defineConfig({
use: {
viewport: { width: 1920, height: 1080 },
},
});
This makes breakpoints, wrapping, and screenshot output repeatable. It does not maximize a desktop window and does not promise that a physical monitor has those dimensions. Use it when the page area, rather than a visible browser, is the thing you need to control.
Switch between debugging and CI projects
A useful arrangement is a deterministic default project and a headed Chromium project for manual investigation:
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
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
projects: [
{
name: 'ci-chromium',
use: {
...devices['Desktop Chrome'],
viewport: { width: 1280, height: 720 },
},
},
{
name: 'headed-maximized',
use: {
...devices['Desktop Chrome'],
headless: false,
viewport: null,
launchOptions: {
args: ['--start-maximized'],
},
},
},
],
});
Run the manual project with npx playwright test --project=headed-maximized. Keep CI on the fixed-size project so a developer’s monitor, window manager, or remote desktop cannot change the result.
Resize a page in the Playwright library
If you are using Playwright without the test runner, pass launch arguments to Chromium and choose the context viewport explicitly:
import { chromium } from 'playwright';
const browser = await chromium.launch({
headless: false,
args: ['--start-maximized'],
});
const context = await browser.newContext({ viewport: null });
const page = await context.newPage();
await page.goto('https://example.com');
await page.waitForTimeout(3000);
await browser.close();
This code asks Chromium to start maximized and lets the page use the host-window dimensions. If you prefer deterministic behavior, replace null with an object such as { width: 1440, height: 900 }.
Change the viewport for one page
page.setViewportSize() changes the page viewport and resets the page’s screen size as well. Set it before navigation when the site may react to a resize during startup:
import { chromium } from 'playwright';
const browser = await chromium.launch();
const context = await browser.newContext();
const page = await context.newPage();
await page.setViewportSize({ width: 1366, height: 768 });
await page.goto('https://example.com');
console.log(await page.evaluate(() => ({
width: window.innerWidth,
height: window.innerHeight,
})));
await browser.close();
This is the documented way to resize the web page. It is not a documented API for maximizing the operating-system window.
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.
Understand headed, headless, window, and viewport behavior
Headed mode
Headed mode creates a visible browser that you can watch and interact with. It is useful for diagnosing pop-ups, responsive breakpoints, permissions, and navigation timing. It does not select a window size by itself.
Headless mode
Headless runs without a desktop window, so there is nothing for an operating system to maximize. Set a viewport when you need a particular page size in headless tests.
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 matchWindow maximization
--start-maximized is interpreted by Chromium at launch. Desktop policies, remote sessions, Linux window managers, and container environments can still affect the resulting outer window.
Viewport emulation
The viewport controls the CSS layout area exposed to the page. A fixed viewport is reproducible; viewport: null follows the host window but makes dimensions dependent on where the test runs.
Browser coverage and project configuration
Do not copy the Chromium switch into Firefox or WebKit projects and assume equivalent behavior. The documented launch-argument example is for Chromium, and custom arguments are not a portable Playwright contract. For cross-browser tests, use explicit viewport dimensions and treat visible-window maximization as a Chromium-only debugging convenience unless you have separately verified another browser’s launch options.
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
If a configuration has multiple projects, scope the argument:
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →import { defineConfig } from '@playwright/test';
export default defineConfig({
projects: [
{
name: 'chromium-headed',
testMatch: /.*.spec.ts/,
use: {
browserName: 'chromium',
headless: false,
viewport: null,
launchOptions: { args: ['--start-maximized'] },
},
},
{
name: 'firefox',
use: {
browserName: 'firefox',
viewport: { width: 1280, height: 720 },
},
},
],
});
Troubleshoot a window that is not maximized
| Symptom | Likely cause | Fix |
|---|---|---|
| No browser appears | The run is headless. | Set headless: false or run npx playwright test --headed. |
| The window is visible but the page is still 1280×720 | A fixed context viewport is overriding the desktop window. | Use viewport: null for host-sized debugging, or accept the fixed size intentionally. |
| The maximize switch has no effect | The project is not Chromium, or the desktop environment controls the window. | Scope the switch to Chromium and test in a normal headed desktop session. |
| CI tests change between machines | viewport: null depends on the host window. |
Use an explicit width and height in CI. |
| Layout changes after a resize | The page was navigated before its viewport was set. | Call page.setViewportSize() before page.goto(). |
| A custom argument causes odd failures | Playwright warns that unsupported browser arguments can break functionality. | Remove nonessential arguments, keep only --start-maximized, and retest. |
| The browser opens off-screen in a remote session | The host window manager or virtual display is controlling placement. | Use a fixed viewport for automation; reserve window maximization for local debugging. |
Performance, reliability, and cost considerations
Changing a viewport is a lightweight page-setting operation. Launching a headed browser consumes a desktop session and generally requires more environment setup than headless CI, especially in containers or remote runners. A maximized window also does not make network requests, JavaScript execution, or lazy loading inherently faster; it only changes the available window or page dimensions.
For reliable visual comparisons, pin the viewport, browser version, and display environment. For exploratory debugging, use headed Chromium with viewport: null. Do not mix screenshots produced from host-sized windows with fixed-size baselines unless that difference is intentional.
Or skip the browser setup
If your actual goal is to obtain a clean screenshot or PDF rather than inspect an interactive Playwright window, ScreenshotNeo makes one HTTP request to capture a URL. Its API can accept consent banners before capture and remove more than 60 known consent platforms, newsletter popups, and chat widgets; each cleanup step can be disabled. Bot checks, CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and the response identifies the page result with X-Page-Verdict and X-Billed headers.
See the ScreenshotNeo API documentation for all parameters. A minimal cURL request is:
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,
)
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 also supports full-page captures with lazy images loaded, CSS-selector element shots, dark mode, 12 device presets or custom viewports, retina scale, PDF paper and page settings, custom CSS and JavaScript, pre-capture clicks, waits, request blocking, headers, cookies, user agents, Authorization, timezone, geolocation, transparent backgrounds, resizing, chosen cache TTLs, signed image links, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, a usage API, and an OpenAPI specification. Parameter names used by other screenshot APIs are accepted to ease migration. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients.
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.
The Free plan includes 1,000 screenshots per month without a card. Paid plans are Starter $5 for 3,000, Growth $15 for 15,000, Pro $39 for 60,000, Scale $99 for 250,000, and Business $249 for 1,000,000; yearly billing gives two months free, and every feature is available on every plan.
Create a free ScreenshotNeo account to use the 1,000 monthly screenshots with no card.
Frequently Asked Questions
Can I maximize a browser in a headless Playwright run?
No. Headless mode has no visible operating-system window. Set a viewport for page dimensions, or switch to headed mode when you need to observe a desktop window.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Why does a maximized window still report a small viewport?
Playwright may still be using its fixed emulated viewport. Use viewport: null for host-sized debugging, or keep an explicit viewport when repeatability is more important.
Is --start-maximized a Playwright API?
No. It is a Chromium launch argument passed through Playwright, so it should not be treated as a portable Firefox or WebKit setting.
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.

