browser-screenshot
Browser Screenshot
Overview
Capture screenshots of web pages using Playwright with support for full-page capture, custom viewport sizes, responsive testing across multiple devices, and element-specific screenshots.
When to Use This Skill
Use this skill when users request:
- Screenshots of web pages or URLs
- Visual testing across different screen sizes (mobile, tablet, desktop)
- Full-page captures including content below the fold
- Screenshots of specific page elements
- Documentation requiring webpage visuals
- Automated screenshot generation for reporting or testing
Prerequisites
Before using this skill, ensure Playwright is installed:
pip install playwright
playwright install chromium
For other browsers (optional):
playwright install firefox
playwright install webkit
Core Capabilities
1. Basic Screenshot
To capture a standard screenshot of a webpage:
python scripts/screenshot.py <URL> <output-path>
Example:
python scripts/screenshot.py https://example.com screenshot.png
This captures a viewport screenshot at the default size (1920x1080) with network idle waiting enabled.
2. Full-Page Screenshot
To capture the entire scrollable page content:
python scripts/screenshot.py <URL> <output-path> --full-page
Example:
python scripts/screenshot.py https://example.com/blog/post full-page.png --full-page
This is particularly useful for:
- Long articles or blog posts
- Landing pages with multiple sections
- Documentation pages
- Any page where content extends beyond the initial viewport
3. Custom Viewport Size
To capture screenshots at specific dimensions:
python scripts/screenshot.py <URL> <output-path> --width <WIDTH> --height <HEIGHT>
Example:
python scripts/screenshot.py https://example.com mobile-view.png --width 375 --height 667
Use custom viewports for:
- Testing specific device dimensions
- Matching design mockup sizes
- Custom resolution requirements
4. Responsive Screenshots (Multiple Viewports)
To capture the same page across multiple viewport sizes in a single command:
python scripts/screenshot.py <URL> <output-directory> --responsive <viewport1> <viewport2> ...
Available viewport presets:
mobile- 375x667 (iPhone SE)mobile-large- 414x896 (iPhone 11)tablet- 768x1024 (iPad)desktop-small- 1366x768 (720p)desktop- 1920x1080 (1080p)
Example:
python scripts/screenshot.py https://example.com screenshots/ --responsive mobile tablet desktop
This creates three files in the screenshots/ directory:
mobile.pngtablet.pngdesktop.png
Custom viewports can also be used with the WIDTHxHEIGHT format:
python scripts/screenshot.py https://example.com screenshots/ --responsive 1024x768 1440x900 mobile
5. Element-Specific Screenshot
To capture only a specific element on the page:
python scripts/screenshot.py <URL> <output-path> --element "<CSS-selector>"
Example:
python scripts/screenshot.py https://example.com header.png --element "header.main-header"
python scripts/screenshot.py https://example.com chart.png --element "#sales-chart"
Use element screenshots for:
- Isolating specific UI components
- Capturing charts or graphs
- Documenting individual page sections
6. Wait Conditions
Control when the screenshot is captured using various wait conditions:
Wait for Network Idle (default):
python scripts/screenshot.py https://example.com output.png
Disable network idle waiting (faster, but may miss dynamic content):
python scripts/screenshot.py https://example.com output.png --no-wait-network-idle
Wait for a specific element to appear:
python scripts/screenshot.py https://example.com output.png --wait-for-selector ".content-loaded"
Add a custom delay:
python scripts/screenshot.py https://example.com output.png --delay 2000
These options can be combined:
python scripts/screenshot.py https://example.com output.png --wait-for-selector ".main-content" --delay 1000
7. Browser Selection
By default, Chromium is used. To use a different browser:
python scripts/screenshot.py <URL> <output-path> --browser firefox
python scripts/screenshot.py <URL> <output-path> --browser webkit
Common Usage Patterns
Visual Regression Testing
Capture screenshots across multiple viewports for comparison:
python scripts/screenshot.py https://staging.example.com screenshots/staging/ --responsive mobile tablet desktop --full-page
python scripts/screenshot.py https://prod.example.com screenshots/prod/ --responsive mobile tablet desktop --full-page
Documentation Generation
Capture specific UI components for documentation:
python scripts/screenshot.py https://app.example.com login-form.png --element "form.login"
python scripts/screenshot.py https://app.example.com dashboard.png --element "#dashboard-container"
Design Review
Capture full pages with wait conditions for dynamic content:
python scripts/screenshot.py https://example.com design-review.png --full-page --wait-for-selector ".hero-animation-complete" --delay 500
Responsive Design Testing
Test a new landing page across all common devices:
python scripts/screenshot.py https://example.com/new-landing responsive-test/ --responsive mobile mobile-large tablet desktop-small desktop --full-page
Quick Reference
Command structure:
python scripts/screenshot.py <URL> <output> [options]
Common options:
-f, --full-page- Capture entire scrollable page-w, --width- Viewport width in pixels-h, --height- Viewport height in pixels-r, --responsive- Multiple viewport captures-e, --element- Screenshot specific element--wait-for-selector- Wait for CSS selector-d, --delay- Delay in milliseconds-b, --browser- Browser choice (chromium/firefox/webkit)--no-wait-network-idle- Skip network idle wait
Get full help:
python scripts/screenshot.py --help
Implementation Approach
When users request screenshots:
- Determine the screenshot type needed (viewport, full-page, responsive, or element-specific)
- Identify any wait conditions required (network idle, specific selectors, delays)
- Select appropriate viewport size(s) or use responsive mode for multiple sizes
- Construct the command with appropriate options
- Execute the script using the Bash tool
- Verify the output file(s) were created successfully
- Inform the user of the screenshot location(s)
For complex scenarios involving multiple pages or repeated screenshots, consider creating a wrapper script that calls screenshot.py multiple times with different parameters.
Troubleshooting
Common issues:
- "Playwright not found": Run
pip install playwright && playwright install chromium - Element not found: Verify the CSS selector is correct; use
--wait-for-selectorif the element loads dynamically - Blank screenshots: Increase
--delayor ensure--wait-for-network-idle(default) is enabled - Timeout errors: The page may be taking too long to load; try
--no-wait-network-idleor increase timeout in the script if needed - Browser not found: Run
playwright install <browser-name>for the desired browser
Resources
scripts/screenshot.py
The main screenshot tool that handles all screenshot operations using Playwright. The script can be executed directly without loading into context, though reading it may be helpful for understanding capabilities or making environment-specific adjustments.
More from igosuki/claude-skills
web-scraper
This skill should be used when users need to scrape content from websites, extract text from web pages, crawl and follow links, or download documentation from online sources. It features concurrent URL processing, automatic deduplication, content filtering, domain restrictions, and proper directory hierarchy based on URL structure. Use for documentation gathering, content extraction, web archival, or research data collection.
41web-search
This skill should be used when users need to search the web for information, find current content, look up news articles, search for images, or find videos. It uses DuckDuckGo's search API to return results in clean, formatted output (text, markdown, or JSON). Use for research, fact-checking, finding recent information, or gathering web resources.
5webapp-testing
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
1mcp-builder
Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).
1theme-factory
Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.
1artifacts-builder
Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn/ui). Use for complex artifacts requiring state management, routing, or shadcn/ui components - not for simple single-file HTML/JSX artifacts.
1