ブラウザとモバイル自動化テストフレームワークWebdriverIOは先頃、メジャーアップデートをリリースした。Webdriver IO 7はTypeScriptで書かれるようになった。したがって、TypeScriptユーザは型を更新する必要があるが、JavaScriptユーザはほとんど影響を受けない。新しいバージョンでは、Node v10のサポートも終了し、使用していたCucumberバージョンがv7にアップグレードされ、Google Lighthouseとの統合が向上した。
Christian Bromann氏は、リリースノートでTypeScriptで書き直した背後にある理由を説明した:
プロジェクトに参加する貢献者が増えるにつれ、純粋なJavaScriptを使用すると、貢献の参入障壁を低く抑えることができますが、最終的には貢献の品質が全体的に低下することがわかりました。プロジェクト内のコードのサイズが大きくなるにつれ、スローされたさまざまなタイプすべてに対応することは、コアコントリビューターとしての私たちにとってより困難になりました。
[…]
TypeScriptに移行することで、フレームワークの継続的な開発中に発生するバグが少なくなることを願っています。これは、コードの貢献の質と特定の機能の開発速度を向上させるのに役立ちます。また、ユーザに出荷する新しいバージョンへの信頼も高まります。
[…]
完全なコードベースを書き直し、ほとんどすべてのファイルに触れて、型の安全性を追加し、途中で多くのバグを修正しました。
WebdriverIOのTypeScriptユーザは、結果として、API全体でより優れた型サポートを享受できる。TypeScript構成ファイル tsconfig.json
には、タイプライブラリの変更を反映するためのいくつかの変更がある。@wdio/sync
(v6) を webdriverio/sync
に置き換え、webdriverio
を webdriverio/async
に置き換える必要がある。後者の場合、差異は次のようになる:
// tsconfig.json
"types": [
"node",
- "webdriverio",
+ "webdriverio/async",
"@wdio/mocha-framework"
],
カスタムコマンドタイプは、次のように提供する必要がある:
declare global {
namespace WebdriverIO {
interface Browser {
browserCustomCommand: (arg: number) => void
}
}
}
いつものように、TypeScript開発者は、package.json
構成ファイルで devDependencies
として typescript
と ts-node
を設定する必要がある。WebdriverIOは、依存関係がインストールされているかどうかを自動的に検出し、構成とテストをコンパイルする。ts-node
の実行は、環境変数またはwdioのconfigの autoCompileOpts プロパティによって構成できる。
WebdriverIO 7はNode v10のサポートを終了し、Node v14が推奨バージョンになる。新しいリリースでは、Behavior駆動開発ツールのCucumberバージョンもv7に更新される。昨年12月にリリースされたCucumber v7も、古いバージョンのNodeのサポートを終了していた (Node v14を推奨)。Cucumber 7は、コミュニティが作成した @types/cucumber
パッケージに依存しなくなり、TypeScriptと独自のタイピングセットを使用して構築された。
WebdriverIO 7は、WebdriverIOユーザがパフォーマンステストを実行するために使用できるGoogle Lighthouseとの統合を改善した。WebdriverIO 7は、Google Lighthouseを最新バージョンに更新した。これは、Cumulative Layout ShiftsやFirst Input Delayなどの新しいパフォーマンスメトリックを備えている。
興味のある読者は、プロジェクトの追加の変更と改善の詳細について、完全なWebDriverIO 7リリース記事を確認できる。WebDriverIOは、MITライセンスの下で利用可能なオープンソースソフトウェアだ。貢献は、WebDriverIOの貢献ガイドラインと行動規範を通じて歓迎される。