Node.jsのブラウザテスト自動化フレームワークであるWebDriverIOバージョン6の最近のリリースでは、Chrome DevToolsプロトコルテストがWebDriverの既存のサポートに追加され、PuppeteerやCypress.ioなどのツールを活用しやすくなった。
ローカルテストスクリプトを介してテストを実行するときに、開発者はブラウザドライバをダウンロードする必要がなくなった。WebdriverIOは、ブラウザドライバが実行中でアクセス可能かどうかをチェックし、そうでない場合はPuppeteerをフォールバックとして使用する。WebDriverIOとPuppeteerのどちらを利用しても、WebDriverIOは同じままである。ただし、Puppeteerは、テストをローカルで実行する場合と、ブラウザがテストするマシンに存在する場合のみをサポートする。
WebDriverは真のクロスブラウザテストを提供する。一方、Puppeteerは現在ChromiumベースのブラウザとFirefoxナイトリービルドをサポートする。WebDriverIOチームは、真のクロスブラウザサポートを提供するPlaywrightに対する取り組みを追っている。現在Playwrightは、WebDriverIOと同じようにプロジェクトのインテグレーションの課題が残っており、FirefoxとSafariをサポートするためにカスタムブラウザの構築を必要とする。
WebDriverIOは代替の自動化プロトコルのサポートを追加した。しかし、プロジェクトでは最終的に、ブラウザの自動化プロトコルの取り組みを統一するために新しいWebDriver標準が出現することを確信している。
WebDriverIOバージョン6は、WebDriver IOバージョン5のユーザにとって簡単なアップグレードできる必要がある。重要な変更点は、Node.jsバージョン8がサポートされなくなったことである。現時点では、Node.jsバージョン12にアップグレードすることが推奨されている。このプロジェクトでは、コマンドラインインターフェイスのいくつかの重大な変更があった。TypeScriptのユーザは、変更されたAPIの通知を受け取る。
WebDriverIOでは、バージョン6リリースでいくつかのパフォーマンス向上がある。ローカルでPuppeteerを実行していることの利点の他に、プロジェクトはrequestへの依存を取り除き、gotに切り替えた。それによって、WebDriverIOのバンドルサイズを75%縮小した。WebDriverIO 6コードベースに対するその他の内部的な改善により、テストの実行が高速化され、CPUとメモリの消費量が削減される。
WebDriverIO 6リリースでは、Jestのexpectパッケージから発想を得た新しいアサーションライブラリも導入されている。これは、期待値の待機、組み込みのTypeScript、JSオートコンプリートである。
WebDriverIOコミュニティは一連のサービスとレポーターを作成し、テストのインテグレーションとレポートの柔軟性を高める。
プロジェクトに対する他の変更と改善の詳細については、WebDriverIO 6リリースの記事全体を読んでください。
JavaScriptエコシステムは、さまざまな異なるアプローチでテストするための多くのオプションを提供している。しかし、クロスブラウザ機能テスト用の機能が完全なパッケージは比較的少ない。WebDriverIOの代わりに、アクティブに維持される主な代替はInternである。InternとWebDriverIOはどちらもオープンソースプロジェクトでありOpenJS Foundationの一部である。これらのテストフレームワーク以外にも、今日の多くの開発者はJestとCypress.ioを活用して、クロスブラウザテストを最小限に抑えている。多くのAngular開発者は、AngularアプリケーションのテストにProtractor + Karmaを選好している。テストエコシステムの詳細については、JavaScriptおよびWeb開発InfoQトレンドレポートを参照してください。
WebDriverIOは、MITライセンスの下で利用可能なオープンソースソフトウェアである。コントリビューションは、WebDriverIOコントリビューションガイドラインと行動規範の下、歓迎される。