AngularプロジェクトでPlaywrightを導入しTypeScriptで自動E2Eテストを実行する

nove-b January 19, 2025
Source

E2E(イーツーイー)

英語の「End-to-End(エンドツーエンド)」の略で、「端から端まで」を意味する。 E2Eテストはユーザーの視点からアプリケーション全体の動作を確認し、機能の一貫性と信頼性を保証する手法すること。

E2Eテストの自動化

自動化するツールはいくつかあり、それぞれメリットデメリットがあるっぽい。下記は [ブラウザ拡張のE2Eテストを検討してみた(Playwright、Puppeteer、Cypress)とChatGPTの情報を混ぜ合わせた、メリットデメリット表。

項目 Playwright Puppeteer Cypress Selenium
サポートブラウザ Chromium, Chrome, Edge, Firefox, Webkit (Safari) Chrome, Firefox Chrome, Edge, Firefox, Electron Chrome, Edge, Firefox, Safari, IE
テストツールの有無 🟡 (Jest を使えば可能) 🟡 (外部ライブラリが必要)
複数タブ / ウィンドウ 🛑
Shadow DOM 🟡 (aria または pierce セレクタを使えば可能) 🟡 (限定的なサポート)
ブラウザ拡張 🟡 🟡 (一部サポート)
要素の特定 🟡 🟡
要素の自動待機 🟡 🛑 (手動で記述が必要)
スクリーンショット
動画 🛑 🛑
実行速度 🟡 (ブラウザ依存でやや遅い)

これだけ見るとPlaywrightが有望な気がする。気になるのは要素の特定なので調べてみた結果、PuppeteerとCypressはjQuery、javascriptでの記述で取得できるけど、Playwrightは独特な記法になるということだったので、特段問題なさそうだった。

Playwrightをインストールする

長いプロジェクトでnodeのバージョンがv16.13.2だったので、

しっかり怒られた。

これを機にnodeのバージョンを上げることにする。

色々な依存関係を解消しつつ、最新LTSまで上げた。

node_modulesを最新化し、

Playwrightを初期化する。大量のエラーが吐き出され、TLS/SSL 証明書の検証に失敗した。

を実行する。

NODE_TLS_REJECT_UNAUTHORIZEDは、Node.jsが HTTPS通信を行う際に使用する環境変数で、0にすると、サーバー証明書の有効性が検証されなくなる。

Chromium、Firefox、Webkit、FFMPEGがインストール完了した。

という警告が出ていたので、

でサーバー証明書を再度有効にした。

Playwrightのテストファイルを実行まで

テストファイルの作成

tests/にテストファイルを作成する。

トライする

上記をnpx playwright testで実行したところ、

というエラーが大量にでた。どうやら、標準のユニットテストと混合しているらしい。

エラーと格闘し成功まで

tests/以下に置いていることが影響している気がしたので、tests/e2e以下にファイルを置いて再実行したところ、何も変わらない。

色々調べてみた感じ、playwright.config.tsが不足しているようだったので、

ルートに追加したところ、テストを通すことができた。そしてレポートのHTMLが作成されるので、結果を見ることができる。

Discussion in the ATmosphere

Loading comments...