🚀
Playwright vs Puppeteer 徹底比較
Puppeteerとは?
- Google製(Chromeチームが開発)
- 最初はChrome専用だったけど、今はFirefoxにも一応対応
- 軽くてシンプル、学習コスト低め
Playwrightとは?
- Microsoft製(元Puppeteerの開発者が移籍して作った)
- Chromeだけじゃなく、Firefox、Safari、Edgeもフルサポート
- モバイルデバイスや複数タブもガッツリ操作できる
機能比較表
Puppeteer | Playwright | |
---|---|---|
開発元 | Microsoft | |
対応ブラウザ | Chrome, Firefox(一部) | Chrome, Firefox, Safari, Edge |
複数タブ・複数ページ | めんどい | 標準でサポート |
モバイルエミュレーション | できる | さらに強力 |
ネットワーク制御 | あるけど弱め | めちゃ強力(オフラインテストも簡単) |
自動待機 | 手動で頑張る | 自動でいい感じに待ってくれる |
テストランナー | なし(別途必要) | 内蔵されてる |
書き心地の違い
例えば、リンクをクリックしてページ遷移を待つコードを比べてみよう。
Puppeteer
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.click('a#link');
await page.waitForNavigation();
console.log('Navigation complete!');
await browser.close();
})();
Playwright
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.click('a#link'); // 自動でナビゲーション待ってくれる
console.log('Navigation complete!');
await browser.close();
})();
Playwrightはナビゲーション待ちを勝手にやってくれるから、コードがスッキリする!
どっちがオススメ?
- とにかくサクッと動かしたいなら → Puppeteer
- ブラウザを問わずガチめのテスト書きたいなら → Playwright
まとめ
- Puppeteerはシンプル&手軽
- Playwrightは高機能&多機能
Discussion