puppeteer-skill について
puppeteer-skillは、Puppeteerを使う開発者向けのブラウザー自動化ガイドです。ページ操作、ネットワークのインターセプト、スクリーンショットやPDF出力、TestMu AIクラウドの設定を扱います。
主な機能
- 01ブラウザー起動とページ遷移
- 02セレクターと遷移の待機方法
- 03スクリーンショットとPDF出力
- 04ネットワークのインターセプトとAPIモック
- 05TestMu AIクラウド設定のガイド
活用シーン
- 01Webページの訪問と確認の自動化
- 02要素やページ遷移の待機
- 03ページ全体のスクリーンショットやPDF保存
- 04画像リクエストの遮断やAPIのモック
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ lambdatest/ agent-skills --skill puppeteer-skillインストール後、Claude Code で/puppeteer-skillを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
reference/advanced-patterns.mdcloud-integration.mdplaybook.md詳細
Puppeteer 自動化スキル
コアパターン
基本的なスクリプト
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 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
);
スクリーンショットと PDF
await page.screenshot({ path: 'screenshot.png', fullPage: true });
await page.pdf({ path: 'page.pdf', format: 'A4', printBackground: true });
ネットワークインターセプト
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
セットアップ、機能、共有機能のリファレンスについて詳しくは、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))}`,
});
クイックリファレンス
| タスク | コード |
|---|---|
| ヘッドありで起動 | puppeteer.launch({ headless: false }) |
| JS を評価 | await page.evaluate(() => document.title) |
| テキストを抽出 | await page.$eval('.el', el => el.textContent) |
| すべて抽出 | await page.$$eval('.items', els => els.map(e => e.textContent)) |
| Cookie を設定 | await page.setCookie({ name: 'token', value: 'abc' }) |
| デバイスをエミュレート | await page.emulate(puppeteer.devices['iPhone 12']) |
詳細なパターン → reference/playbook.md
| § | セクション | 内容 |
|---|---|---|
| 1 | 本番環境のセットアップと構成 | 起動オプション、Jest との統合 |
| 2 | ページオブジェクトパターン | BasePage、LoginPage、DashboardPage |
| 3 | ネットワークインターセプトとモック | リクエストのモック、レスポンスの取得 |
| 4 | 待機戦略 | DOM、ネットワーク、カスタム条件 |
| 5 | スクリーンショット、PDF、メディア | 全ページ、クリップ、PDF、動画 |
| 6 | 認証と Cookie | API ログイン、セッションの保存と復元 |
| 7 | iFrame、ダイアログ、ファイル操作 | アップロード、ダウンロード、ダイアログ |
| 8 | パフォーマンスと指標 | Web Vitals、Lighthouse、カバレッジ |
| 9 | アクセシビリティテスト | axe-core との統合 |
| 10 | CI/CD 統合 | GitHub Actions、Docker |
| 11 | デバッグのクイックリファレンス | よくある 11 の問題 |
| 12 | ベストプラクティスのチェックリスト | 13 項目 |
コメント
Markdown 対応