mcpbeat Sign in

Puppeteer Skill

> Generates Puppeteer scripts for browser automation, scraping, and PDF generation.

1k tokens
context cost
SKILL.md, read when the skill is used
4
files
plus reference files
0
copies elsewhere
how many repositories repackaged it
343
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/LambdaTest/agent-skills --skill puppeteer-skill

The instruction itself

9 sections, as written by the author

Puppeteer Automation Skill

Core Patterns

Basic Script

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', '[email protected]');
    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

// 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

await page.screenshot({ path: 'screenshot.png', fullPage: true });
await page.pdf({ path: 'page.pdf', format: 'A4', printBackground: true });

Network Interception

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.

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 |

Other skills for the same job

different authors, same section of the catalogue
Webapp Testing
by anthropics
vendor ×15

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.

978 tokens scripts
Notebooklm
by ZhanlinCui
×8

Use this skill to query your Google NotebookLM notebooks directly from Claude Code for source-grounded, citation-backed answers from Gemini. Browser automation, library management, persistent auth. Drastically reduced hallucinations through document-only responses.

2.4k tokens scripts
Playwright Skill
by lackeyjb
×4

Complete browser automation with Playwright. Auto-detects dev servers, writes clean test scripts to /tmp. Test pages, fill forms, take screenshots, check responsive design, validate UX, test login flows, check links, automate any browser task. Use when user wants to test websites, automate browser interactions, validate web functionality, or perform any browser-based testing.

3.5k tokens scripts
Electron
by vercel-labs
vendor ×2

Automate Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify, etc.) using agent-browser via Chrome DevTools Protocol. Use when the user needs to interact with an Electron app, automate a desktop app, connect to a running app, control a native app, or test an Electron application. Triggers include "automate Slack app", "control VS Code", "interact with Discord app", "test this Electron app", "connect to desktop app", or any task requiring automation of a native Electron application.

1.7k tokens
Playwright
by openai
vendor ×2

Use when the task requires automating a real browser from the terminal (navigation, form filling, snapshots, screenshots, data extraction, UI-flow debugging) via `playwright-cli` or the bundled wrapper script.

942 tokens scripts
Screenshot
by openai
vendor ×2

Use when the user explicitly asks for a desktop or system screenshot (full screen, specific app or window, or a pixel region), or when tool-specific capture capabilities are unavailable and an OS-level capture is needed.

1.9k tokens scripts
Agent Browser
by majiayu000
×2

A fast Rust-based headless browser automation CLI with Node.js fallback that enables AI agents to navigate, click, type, and snapshot pages via structured commands.

2.6k tokens
Web Access
by ZhanlinCui
×2

| 所有联网操作必须通过此 skill 处理,包括:搜索、网页抓取、登录后操作、动态页面交互等。 触发场景:用户要求搜索信息、查看网页内容、访问需要登录的网站、操作网页界面、抓取社交媒体内容(小红书、微博、推特等)、读取动态渲染页面、以及任何需要真实浏览器环境的网络任务。

2.7k tokens scripts zh

How to use it

Copy the folder

Take lambdatest/puppeteer-skill from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.