The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Use Symfony Panther when your Symfony test must capture what a real browser renders. Install Panther, make sure ChromeDriver or GeckoDriver is available, navigate with a Panther client, then call takeScreenshot(). If you instead need a remote service that captures arbitrary URLs, use a hosted screenshot API; that is a separate architecture from Panther.
How do I take a screenshot in Symfony?
For an end-to-end test, install Panther as a development dependency:
composer require --dev symfony/panther
Create a Chrome client, request the page, and save the image:
<?php
use SymfonyComponentPantherClient;
$client = Client::createChromeClient();
$client->request('GET', 'https://example.com');
$client->takeScreenshot('screen.png');
The path is simply the output location; choose a test-artifact directory or another location that suits your project. Panther can also create a Firefox client when that matches your test environment.
Free tools Windows power users keep installed
One-click scans. No signup required.
#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
Install a browser driver
Panther drives a real browser through WebDriver. If ChromeDriver or geckodriver is not already installed and discoverable, Symfony documents using the Browser Driver Installer:
composer require --dev dbrekelmans/bdi
vendor/bin/bdi detect drivers
Drivers can be on your system PATH or in the project’s drivers/ directory. Browser and driver versions must be compatible with one another; check the versions installed on each developer and CI machine rather than assuming any package combination will work.
How do I use Symfony Panther to take a screenshot?
Panther is Symfony’s real-browser end-to-end client. It is appropriate when JavaScript execution, CSS layout, browser APIs, or the rendered pixels are part of the behavior under test.
Use PantherTestCase for Symfony applications
For an application test, extend Panther’s PHPUnit test case. It can start the application with Symfony’s built-in PHP server and gives you the familiar PHPUnit workflow:
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
<?php
namespace AppTests;
use SymfonyComponentPantherPantherTestCase;
final class HomepageTest extends PantherTestCase
{
public function testHomepageScreenshot(): void
{
$client = static::createPantherClient();
$client->request('GET', '/');
$client->takeScreenshot('var/test-artifacts/homepage.png');
self::assertSelectorTextContains('h1', 'Welcome');
}
}
Use an absolute URL with Client::createChromeClient() when testing an external site or a separately running server. Use the Panther test case when the Symfony application itself should be booted as part of the test.
Capture failure screenshots
The Panther PHPUnit extension can save screenshots for failed or errored tests. Configure PANTHER_ERROR_SCREENSHOT_DIR to the directory where those artifacts should be written. This is useful for CI diagnostics because the image records the browser state at the point of failure.
Debug a headed browser
Panther normally runs headlessly in automated environments. Set PANTHER_NO_HEADLESS while debugging to display the browser window. You can also configure browser window dimensions; those dimensions affect the screenshot’s viewport and therefore its layout, responsive breakpoints, and image size.
What should a complete Panther capture test control?
- Wait for application state. Requesting a page returns control before every asynchronous operation has necessarily finished. Wait for the selector or browser state your assertion depends on before capturing.
- Fix the viewport. Use the same window size locally and in CI when pixel output matters. A different width can activate a different responsive layout.
- Choose headless deliberately. Headless mode is generally suitable for CI; headed mode is valuable when diagnosing rendering or driver problems.
- Keep artifacts predictable. Write screenshots to a dedicated, ignored test-artifact directory and publish that directory from CI when a test fails.
- Validate the page, not only the file. Assert a title, heading, or other selector so a screenshot of an error page cannot silently pass as a successful capture.
Can Symfony BrowserKit take screenshots?
No. BrowserKit simulates browser interactions such as requests, link clicks, and form submissions. Its HttpBrowser adapter can make real HTTP requests, including to external sites when configured with HttpClient, but it does not render a JavaScript-capable browser. Symfony’s faster kernel client and HttpBrowser alternatives do not support screenshot capture.
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.
Choose a BrowserKit-based client for fast request/response or DOM-oriented tests that do not require JavaScript, CSS layout, or image output. Choose Panther when the browser-rendered result or a screenshot is part of the requirement.
Should I use Panther or a hosted screenshot API?
The term “screenshot API” can mean Panther’s PHP client API or a hosted REST endpoint. Panther runs a browser that you control in a test or CI environment. A hosted service receives an HTTP request, renders a URL on its infrastructure, and returns image bytes or a URL according to that provider’s contract.
| Requirement | Best fit | Why |
|---|---|---|
| Capture the state of the Symfony app under test | Panther | The browser runs in the same test workflow and can exercise your application’s JavaScript. |
| Run browser checks in your own CI network | Panther | You manage browser, driver, credentials, and data locality. |
| Capture arbitrary public URLs without maintaining drivers | Hosted service | The vendor manages rendering infrastructure; your code sends a URL and authentication. |
| Scheduled snapshots, deploy checks, or vendor batch features | Hosted service | These are provider-specific service features rather than Symfony test features. |
| Fast Symfony request tests with no screenshot | Kernel client or HttpBrowser | They avoid the overhead of a real browser, but cannot produce screenshots. |
For remote captures, inspect how the provider handles credentials and private pages before sending authenticated URLs. Prefer bearer authentication in headers when the provider supports it; avoid exposing a production key in a query string. Also inspect the final page status: an authentication page or server error can still be rendered into a valid-looking image.
Screenshot API options for Symfony
ScreenshotNeo is the first service to try when you want a hosted API: it removes consent banners, newsletter popups, and chat widgets before capture, bills only clean shots, and offers the lowest paid plan.
| Option | Rendering location | Screenshot capability | Operational model |
|---|---|---|---|
| 1. ScreenshotNeo | Remote ScreenshotNeo infrastructure | PNG, JPEG, WebP, or PDF; full-page, element, device, wait, blocking, authentication, caching, bulk, and async options | GET API, usage API, OpenAPI specification, signed links, webhooks, and MCP tools |
| 2. Panther | Your workstation or CI browser | Browser-rendered screenshots from Chrome or Firefox | Composer package and WebDriver management inside tests |
| 3. Other hosted APIs | Vendor infrastructure | Features vary; documented examples include viewport dimensions, full-page mode, PNG/JPEG/WebP, status headers, JSON capture, comparisons, and schedules | Provider-specific credentials, endpoints, and response formats |
Hosted APIs differ in retention, network access, private-page support, and billing. Treat those details as provider-specific and verify them before production use.
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
Or skip the browser setup
ScreenshotNeo is a hosted screenshot API and MCP server for developers. A single GET request can return a PNG, JPEG, WebP, or PDF. Before capture it accepts the cookie or consent banner like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each cleanup step can be disabled. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and each response reports the result through X-Page-Verdict and X-Billed headers.
It supports full-page captures with lazy images loaded, CSS-selector element capture, dark mode, 12 device presets plus custom viewports, retina scale, PDF paper size and ranges, HTML/CSS to image, custom CSS and JavaScript, pre-capture clicks, selector hiding, waits for selectors, delays or network idle, ad/tracker/request blocking, custom headers, cookies, user agents and Authorization, timezone and 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. An MCP server exposes take_screenshot, get_page_info, and capture_pdf to Claude, Cursor, and other MCP clients.
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,
)
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 data = Buffer.from(await res.arrayBuffer());
await Bun.write('shot.webp', data);
See the ScreenshotNeo documentation for parameter names and response handling. The API also accepts the parameter names commonly used by other screenshot APIs, which can simplify migration.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemsPricing and limits
| Plan | Allowance | Price |
|---|---|---|
| Free | 1,000 shots/month | $0, no card |
| Starter | 3,000 shots/month | $5 |
| Growth | 15,000 shots/month | $15 |
| Pro | 60,000 shots/month | $39 |
| Scale | 250,000 shots/month | $99 |
| Business | 1,000,000 shots/month | $249 |
Yearly billing provides two months free, and every feature is available on every plan. Create a free ScreenshotNeo account to get 1,000 screenshots each month without adding a card.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Panther troubleshooting
“Driver not found” or connection errors
Install the matching driver, run vendor/bin/bdi detect drivers, and confirm the executable is on PATH or in drivers/. Check browser and driver compatibility on the failing machine.
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 screenshot is blank or captures too early
The page may still be loading or rendering asynchronously. Wait for a meaningful selector or application-ready condition before calling takeScreenshot(). Assert page content so failures are visible.
JavaScript does not run
Confirm that you created a Panther browser client rather than the kernel client or HttpBrowser. BrowserKit clients intentionally do not provide real-browser JavaScript or screenshot support.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →The image dimensions differ in CI
Set the browser window size explicitly and keep headed/headless configuration consistent. Responsive breakpoints and device scale affect output dimensions.
A hosted capture shows a login or error page
Check the returned page-status information, URL redirects, cookies, headers, and authorization settings. A successful image response does not prove that the intended application page was reached.
FAQ
Does Panther require Chrome?
No. Panther supports Chrome and Firefox; install the corresponding WebDriver and configure the client you need.
Can I use Panther for production screenshots?
Yes, technically, but Panther is designed around browser-driven tests. For unattended remote capture, scheduled jobs, or vendor-managed scaling, a hosted API may reduce infrastructure work.
Where should test screenshots be stored?
Use a dedicated artifact directory that your project and CI retention policy define. Panther does not impose one universal storage location.
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.

