인터페이스는 현지화되어 있으며, Skill 소개와 설명 문서는 선택한 언어로 AI가 자동 번역합니다. 코드·명령어·경로·전문 용어는 원문을 유지하며 원작자 문서가 우선합니다.
Skills 둘러보기
문서 및 사무 · SKILL.md

puppeteer-skill

puppeteer-skill

Generates Puppeteer scripts for browser automation, scraping, and PDF generation. Triggers on: "Puppeteer", "headless Chrome", "page.goto", "scrape", "PDF generation".

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill 문서

GitHub

name: puppeteer-skill description: > Generates Puppeteer scripts for browser automation, scraping, and PDF generation. Triggers on: "Puppeteer", "headless Chrome", "page.goto", "scrape", "PDF generation". languages:

  • JavaScript
  • TypeScript category: e2e-testing license: MIT metadata: author: TestMu AI version: "1.0"

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', '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

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

TaskCode
Launch headedpuppeteer.launch({ headless: false })
Evaluate JSawait page.evaluate(() => document.title)
Extract textawait page.$eval('.el', el => el.textContent)
Extract allawait page.$eval('.items', els => els.map(e => e.textContent))
Set cookieawait page.setCookie({ name: 'token', value: 'abc' })
Emulate deviceawait page.emulate(puppeteer.devices['iPhone 12'])

Deep Patterns → reference/playbook.md

§SectionLines
1Production Setup & ConfigurationLaunch options, Jest integration
2Page Object PatternBasePage, LoginPage, DashboardPage
3Network Interception & MockingRequest mock, response capture
4Wait StrategiesDOM, network, custom conditions
5Screenshots, PDF & MediaFull page, clip, PDF, video
6Authentication & CookiesAPI login, session save/restore
7iFrame, Dialog & File OperationsUpload, download, dialogs
8Performance & MetricsWeb Vitals, Lighthouse, coverage
9Accessibility Testingaxe-core integration
10CI/CD IntegrationGitHub Actions, Docker
11Debugging Quick-Reference11 common problems
12Best Practices Checklist13 items
저장한 Skills