🚀

Playwright vs Puppeteer 徹底比較

に公開

Puppeteerとは?

  • Google製(Chromeチームが開発)
  • 最初はChrome専用だったけど、今はFirefoxにも一応対応
  • 軽くてシンプル、学習コスト低め

Playwrightとは?

  • Microsoft製(元Puppeteerの開発者が移籍して作った)
  • Chromeだけじゃなく、Firefox、Safari、Edgeもフルサポート
  • モバイルデバイスや複数タブもガッツリ操作できる

機能比較表

Puppeteer Playwright
開発元 Google 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