# Screenshots and Media > **When to use**: Capturing visual evidence of page state — screenshots for verification, video recordings for demos or debugging, PDF exports for documentation, viewport resizing for responsive testing. > **Prerequisites**: [core-commands.md](core-commands.md) for basic CLI usage ## Quick Reference ```bash # Screenshots playwright-cli screenshot # Full page screenshot playwright-cli screenshot e5 # Element screenshot playwright-cli screenshot --filename=checkout.png # Custom filename # PDF playwright-cli pdf --filename=report.pdf # Save page as PDF # Video playwright-cli video-start # Start recording playwright-cli video-stop demo.webm # Stop and save # Viewport playwright-cli resize 1920 1080 # Desktop playwright-cli resize 375 812 # Mobile ``` ## Screenshots ### Page Screenshot Capture the entire visible viewport: ```bash # Auto-generated filename playwright-cli screenshot # Custom filename playwright-cli screenshot --filename=homepage.png playwright-cli screenshot --filename=screenshots/checkout-step3.png ``` ### Element Screenshot Capture a specific element only — useful for component-level verification: ```bash # Screenshot a single element by ref playwright-cli snapshot # Get refs first playwright-cli screenshot e5 # Capture just element e5 # With custom filename playwright-cli screenshot e5 --filename=product-card.png ``` ### Full-Page Screenshot Capture the entire scrollable page, not just the viewport: ```bash playwright-cli run-code "async page => { await page.screenshot({ path: 'full-page.png', fullPage: true }); return 'Saved full-page screenshot'; }" ``` ### Screenshot with Options Use `run-code` for advanced screenshot options: ```bash # Full page with quality settings (JPEG) playwright-cli run-code "async page => { await page.screenshot({ path: 'optimized.jpg', type: 'jpeg', quality: 80, fullPage: true }); }" # Clip to specific region playwright-cli run-code "async page => { await page.screenshot({ path: 'header-region.png', clip: { x: 0, y: 0, width: 1280, height: 200 } }); }" # With transparent background (for elements with transparency) playwright-cli run-code "async page => { await page.screenshot({ path: 'transparent.png', omitBackground: true }); }" # Screenshot with mask (hide dynamic content) playwright-cli run-code "async page => { await page.screenshot({ path: 'masked.png', mask: [ page.locator('.timestamp'), page.locator('.user-avatar'), page.locator('.ad-banner') ] }); }" # Disable animations before screenshot playwright-cli run-code "async page => { await page.evaluate(() => { document.querySelectorAll('*').forEach(el => { el.style.animation = 'none'; el.style.transition = 'none'; }); }); await page.screenshot({ path: 'no-animations.png' }); }" ``` ### Element Screenshot with Options ```bash playwright-cli run-code "async page => { const element = page.getByTestId('pricing-card'); await element.screenshot({ path: 'pricing-card.png', omitBackground: true }); }" ``` ## Responsive Screenshots Capture how the page looks at different viewport sizes: ```bash # Desktop (1920x1080) playwright-cli resize 1920 1080 playwright-cli screenshot --filename=desktop.png # Laptop (1366x768) playwright-cli resize 1366 768 playwright-cli screenshot --filename=laptop.png # Tablet landscape (1024x768) playwright-cli resize 1024 768 playwright-cli screenshot --filename=tablet-landscape.png # Tablet portrait (768x1024) playwright-cli resize 768 1024 playwright-cli screenshot --filename=tablet-portrait.png # Mobile (375x812 — iPhone X) playwright-cli resize 375 812 playwright-cli screenshot --filename=mobile.png # Mobile small (320x568 — iPhone SE) playwright-cli resize 320 568 playwright-cli screenshot --filename=mobile-small.png ``` ### Automated Responsive Screenshots ```bash playwright-cli run-code "async page => { const viewports = [ { name: 'desktop', width: 1920, height: 1080 }, { name: 'laptop', width: 1366, height: 768 }, { name: 'tablet', width: 768, height: 1024 }, { name: 'mobile', width: 375, height: 812 }, { name: 'mobile-sm', width: 320, height: 568 } ]; for (const vp of viewports) { await page.setViewportSize({ width: vp.width, height: vp.height }); await page.waitForTimeout(500); // Allow layout to settle await page.screenshot({ path: \`responsive-\${vp.name}.png\` }); } return 'Captured ' + viewports.length + ' responsive screenshots'; }" ``` ## PDF Export Generate PDF documents from web pages — useful for reports, invoices, and documentation. ```bash # Basic PDF playwright-cli pdf --filename=page.pdf ``` ### Advanced PDF Options ```bash # PDF with custom options playwright-cli run-code "async page => { await page.pdf({ path: 'report.pdf', format: 'A4', printBackground: true, margin: { top: '1cm', right: '1cm', bottom: '1cm', left: '1cm' } }); return 'PDF saved'; }" # Letter format with header/footer playwright-cli run-code "async page => { await page.pdf({ path: 'document.pdf', format: 'Letter', printBackground: true, displayHeaderFooter: true, headerTemplate: '