この記事は、Angular Advent Calendar 2023 23 日目の記事です
22 日目の記事は @seapolis さんの 2024年から始めるAngular Universal (SSR) の本番運用でした。
今回のテーマ
皆さん、ユニットテストや E2E テスト書いていますか?
テストライブラリの EOL や Deprecated に気を使ってる方も多いと思います。
今回は、今年自分がテスト関連で気になった事を紹介していきたいと思います。
ユニットテスト
Angular 標準のユニットテストといえば、Karma, Jasmine だと思います。
ここ数年で、Jest に移行された方も多いと思います。
Web Test Runner について
2023.04.28 に下記記事がポストされました。
超ざっくり要約は、下記の通りです。
- Angular チームは、複雑でスケーラブルなアプリケーションの構築にはテストが不可欠と考えており、特にAngular ユニットテストに関する不満があり、それを改善するために Jest と Web Test Runner のサポートを導入することが発表された。
- Angular v16 では Jest の初期実験的サポートが提供されるが、まだ本番環境での使用はお勧めされていない。
- Web Test Runner もサポートされ、 Jasmine と統合して Karma のセットアップに近いテスト体験を提供する予定。
- 開発者調査では、Angular ユーザーのテスト満足度が低いことが明らかになり、改善の必要性が強調されている。
- Angular は Karma への感謝を表明しつつ、Jest と Web Test Runner が Angular エコシステムにポジティブな影響を与え、ユニットテストの体験向上が期待されている
ユニットテストの実行時間が課題になっている方も多いと思います。
開発体験が上がることを期待したいですね。
Angular v17 になったので、Jest 環境も良くなっていると思います。
E2E テスト
Protractor について
2023.09 月に正式サポートが終了されました。
既に Protractor から Cypress を導入・移行されている方は多いと思います。
Cypress について
Cypress の状況は良くないようです。
場合によっては、予め違う選択肢を模索したほうが良さそうです。
他の E2E ツールだと、下記の候補があると思います。
Playwright
Playwright の場合、Protractor からのマイグレーション手順が既にあるので、安心ですね。
TestCafe
今回知りましたが、@politie/angular-testcafe-builder が Deprecated なっているようなので、今すぐは選択しないほうが良さそうです。
Puppeteer
記事を書いている所に GDE の Jecelyn Yeen さんが、 Puppeteer 記事を投稿して下さいました。
@puppeteer/ng-schematics を使うことで E2E テストも有効のようです。
Puppeteer v21.6.0 の最新リリースで、WebDriver BiDi サポートにより、Firefox だけでなく Chrome でもクロスブラウザ自動化に Puppeteer の機能を活用できるようです。
非常に楽しみですね。
まとめ
ユニットテストの将来は Web Test Runner が Angular の標準になると思います。
ng update を使ってのマイグレーション手順が出るまで待っても良いと思います。
E2E テストについては、Jecelyn Yeen さんが、 Puppeteer を紹介されていることから、こちらに注目したほうが良さそうです。
明日 24 日は、我らが朱いちゃん(@ver1000000)です!
乞うご期待!