--- id: LambdaTest/agent-skills/puppeteer-skill version: "3cd5c078" license: MIT install: manual updated: 2026-07-24 --- # puppeteer-skill — This skill enables agents to create and execute Puppeteer automation scripts for comprehensive browser testing and web data extraction workflows. Leverage headless browser control to automate interactions, validate page behavior, and gather web content programmatically. Built by TestMu AI (formerly LambdaTest) and available under the MIT license. Publisher: LambdaTest · Stars: 339 · Updated: 2026-07-24 Install (manual): `git clone https://github.com/LambdaTest/agent-skills` ## SKILL.md # Puppeteer Automation Skill ## Core Patterns ### Basic Script ```javascript const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ headless: 'new' }); const page = await browser.newPage(); await page.setViewport({ width: 1280, height: 720 }); await page.goto('https://example.com', { waitUntil: 'networkidle0' }); await page.type('#username', 'user@test.com'); await page.type('#password', 'password123'); await page.click('button[type="submit"]'); await page.waitForNavigation({ waitUntil: 'networkidle0' }); const title = await page.title(); console.log('Title:', title); await browser.close(); })(); ``` ### Wait Strategies ```javascript // Wait for selector await page.waitForSelector('.result', { visible: true, timeout: 10000 }); // Wait for navigation await Promise.all([ page.waitForNavigation({ waitUntil: 'networkidle0' }), page.click('a.nav-link'), ]); // Wait for function await page.waitForFunction('document.querySelector(".count").innerText === "5"'); // Wait for network request const response = await page.waitForResponse(resp => resp.url().includes('/api/data') && resp.status() === 200 ); ``` ### Screenshot & PDF ```javascript await page.screenshot({ path: 'screenshot.png', fullPage: true }); await page.pdf({ path: 'page.pdf', format: 'A4', printBackground: true }); ``` ### Network Interception ```javascript await page.setRequestInterception(true); page.on('request', request => { if (request.resourceType() === 'image') request.abort(); else request.continue(); }); // Mock API page.on('request', request => { if (request.url().includes('/api/data')) { request.respond({ status: 200, contentType: 'application/json', body: JSON.stringify({ items: [] }), }); } else request.continue(); }); ``` ### TestMu AI Cloud For full setup, capabilities, and shared capability reference, see [reference/cloud-integration.md](reference/cloud-integration.md). ```javascript const capabilities = { browserName: 'Chrome', browserVersion: 'latest', 'LT:Options': { platform: 'Windows 11', build: 'Puppeteer Build', user: process.env.LT_USERNAME, accessKey: process.env.LT_ACCESS_KEY, }, }; const browser = await puppeteer.connect({ browserWSEndpoint: `wss://cdp.lambdatest.com/puppeteer?capabilities=${encodeURIComponent(JSON.stringify(capabilities))}`, }); ``` ## Quick Reference | Task | Code | |------|------| | Launch headed | `puppeteer.launch({ headless: false })` | | Evaluate JS | `await page.evaluate(() => document.title)` | | Extract text | `await page.$eval('.el', el => el.textContent)` | | Extract all | `await page.$$eval('.items', els => els.map(e => e.textContent))` | | Set cookie | `await page.setCookie({ name: 'token', value: 'abc' })` | | Emulate device | `await page.emulate(puppeteer.devices['iPhone 12'])` | ## Deep Patterns → `reference/playbook.md` | § | Section | Lines | |---|---------|-------| | 1 | Production Setup & Configuration | Launch options, Jest integration | | 2 | Page Object Pattern | BasePage, LoginPage, DashboardPage | | 3 | Network Interception & Mocking | Request mock, response capture | | 4 | Wait Strategies | DOM, network, custom conditions | | 5 | Screenshots, PDF & Media | Full page, clip, PDF, video | | 6 | Authentication & Cookies | API login, session save/restore | | 7 | iFrame, Dialog & File Operations | Upload, download, dialogs | | 8 | Performance & Metrics | Web Vitals, Lighthouse, coverage | | 9 | Accessibility Testing | axe-core integration | | 10 | CI/CD Integration | GitHub Actions, Docker | | 11 | Debugging Quick-Reference | 11 common problems | | 12 | Best Practices Checklist | 13 items | [View on SkillFed](https://skillfed.io/LambdaTest/agent-skills/puppeteer-skill) · [View on GitHub](https://github.com/LambdaTest/agent-skills)