22
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

自動テスト・テスト自動化Advent Calendar 2021

Day 12

2021年12月現在、PlaywrightとPuppeteerのどっちを使うべき?

Last updated at Posted at 2021-12-12

去年、こんな記事を書いていました。

あれから1年、いまはどうなんでしょうか。

結論から言うと

よほどの理由がない限り、Playwrightでしょう。

6月頃にはもうこの結論は出ていました。

Playwrightを使う理由

  • JavaScript, Python, C#, Java の言語を公式にサポートしている
  • Auto waiting により、いちいちwaitForナントカを書かなくても、ある程度は安定した自動操作ができる
  • ドキュメントの品質がとても良い
    • マイクロソフトとは思えないクオリティ さすが元Googleの人が作ったOSS

他にもテストランナーなど便利な特徴はありますが、
ともかく、PuppeteerにできてPlaywrightにはできないこと、というのが2021年12月現在、ほとんどありません。しいていうなら、Cooperative Request Interceptionくらいではないでしょうか。


以下は、かなり開発視点での内容です。PuppeteerやPlaywrightを利用される方々にはあまり有り難みのない内容であることをご承知おきください・・・(苦笑)

Puppeteerの1年

2021/2月 混乱のリリース

おそらく、メンテナーが変わってbreaking changesに敏感になったのか、頻繁にメジャーバージョンが上がるようになりました。
度重なるリリースは、TypeScriptの型定義まわりでちょっとやらかしていたみたいですね。

その後は、1〜2ヶ月に一度のリリース

少しずつながらも開発は進んでいるようです。(11月頃からまたメンテナーが変わってる感じもします)

公式ドキュメントが、Docusaurusに移行されようとしていた時期もあり、https://puppeteer.github.io/puppeteer/ というサイトにその形跡がありますが、v10.1.0 のまま更新が止まっています。

ちなみに、v10.3.0はなぜ欠番なのか、コミットログを見ても形跡は残っていません。本当に何かまずったのでしょう。

コントリビューションチャンス?

最近のPuppeteerは、issueを上げてもあまり反応されませんが、Pull Requestまで上げると反応があり、内容が合理的なものであれば議論&マージしてもらえます。個人的に、Playwrightにあって便利だった機能をPuppeteerにも部分的にポーティングしてみたんですが、割とすんなり受け入れてもらえました。

Playwrightの1年

毎月の順調なリリース

1.8.0から1.17.1まで、順調に開発が続けられています。
私が適当に解説するよりも、公式のGitHubのリリースノードを見たほうが正確に各バージョンの変化がわかると思いますので、気になる方は是非見ましょう。
https://github.com/microsoft/playwright/releases

テストフレームワークとしての地位を確立しようとしている?

ざっくりですが、最近のPlaywrightはブラウザ自動操作の利便性を向上する内容よりも、テストランナーに注力されているようです。

  • もともと、テストランナーはmicrosoft/folioという別プロジェクトでしたが、Playwright 1.12でそれがplaywright-testパッケージに組み込まれ、
  • Cypressのような詳細なテストレポート機能がPlaywright 1.16で組み込まれ、
  • Fetch API がAPIテスト機能として Playwright 1.16で正式リリースとなり、

導入実績はまだ少ないものの、機能的にはCypressに少しずつ近づいてきているように思えます。

欲しい機能や不具合報告は、まずissueから

Puppeteerに比べると、Playwrightは組織的に開発されているため、いきなりPull Requestをポイと出しても、「なにこれ?」という扱いをされます。

まずissueを上げて、どんなユースケースに欲しい機能なのか?代替案はないのか?みんな使いたい機能なのか? などを議論の末に、Playwrightチームがサッと実装する、というパターンが多いです。

まとめ

  • ブラウザ自動操作でPuppeteerとPlaywrightのどっちを使うか迷っているならば、間違いなくPlaywrightを使いましょう。
  • ブラウザの自動操作ライブラリにコントリビューションしてみたいなー、というニッチな方にはPuppeteerがおすすめです。
22
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?