TypeScript セットアップ
自動補完と型安全性を確保するために、TypeScriptを使用してテストを作成できます。
devDependencies
にtsx
をインストールする必要があります。方法は次のとおりです。
- npm
- Yarn
- pnpm
$ npm install tsx --save-dev
$ yarn add tsx --dev
$ pnpm add tsx --save-dev
WebdriverIO は、これらの依存関係がインストールされているかどうかを自動的に検出し、設定ファイルとテストをコンパイルします。WDIO 設定と同じディレクトリにtsconfig.json
があることを確認してください。
カスタム TSConfig
tsconfig.json
の異なるパスを設定する必要がある場合は、目的のパスを使用してTSCONFIG_PATH環境変数を設定するか、wdio configのtsConfigPath 設定を使用してください。
または、tsx
の環境変数を使用することもできます。
型チェック
tsx
は型チェックをサポートしていないことに注意してください。型をチェックする場合は、tsc
を使用して別のステップで実行する必要があります。
フレームワーク設定
tsconfig.json
には次のものが必要です。
{
"compilerOptions": {
"types": ["node", "@wdio/globals/types"]
}
}
webdriverio
または@wdio/sync
を明示的にインポートすることは避けてください。tsconfig.json
のtypes
に追加すると、WebdriverIO
とWebDriver
の型はどこからでもアクセスできます。追加のWebdriverIOサービス、プラグイン、またはdevtools
自動化パッケージを使用する場合は、多くのパッケージが追加の型定義を提供するため、それらもtypes
リストに追加してください。
フレームワークの型
使用するフレームワークに応じて、そのフレームワークの型をtsconfig.json
のtypesプロパティに追加し、その型定義をインストールする必要があります。これは、組み込みのassertionライブラリexpect-webdriverio
の型サポートが必要な場合に特に重要です。
たとえば、Mochaフレームワークを使用することにした場合、@types/mocha
をインストールし、次のように追加してすべての型をグローバルに使用できるようにする必要があります。
- Mocha
- Jasmine
- Cucumber
{
"compilerOptions": {
"types": ["node", "@wdio/globals/types", "@wdio/mocha-framework"]
}
}
{
"compilerOptions": {
"types": ["node", "@wdio/globals/types", "@wdio/jasmine-framework"]
}
}
{
"compilerOptions": {
"types": ["node", "@wdio/globals/types", "@wdio/cucumber-framework"]
}
}
サービス
ブラウザスコープにコマンドを追加するサービスを使用する場合は、それらもtsconfig.json
に含める必要があります。たとえば、@wdio/lighthouse-service
を使用する場合は、次のようにtypes
にも追加してください。
{
"compilerOptions": {
"types": [
"node",
"@wdio/globals/types",
"@wdio/mocha-framework",
"@wdio/lighthouse-service"
]
}
}
サービスとレポーターをTypeScript設定に追加すると、WebdriverIO設定ファイルの型安全性も強化されます。
型定義
WebdriverIOコマンドを実行する際、通常はすべてのプロパティに型が付けられるため、追加の型のインポートを行う必要はありません。ただし、事前に変数を定義したい場合もあります。これらを型安全にするには、@wdio/types
パッケージで定義されているすべての型を使用できます。たとえば、webdriverio
のremoteオプションを定義する場合、次のようにできます。
import type { Options } from '@wdio/types'
const config: Options.WebdriverIO = {
hostname: 'http://localhost',
port: '4444' // Error: Type 'string' is not assignable to type 'number'.ts(2322)
capabilities: {
browserName: 'chrome'
}
}
ヒント
コンパイルとLint
完全に安全にするために、ベストプラクティスに従うことを検討してください。TypeScriptコンパイラを使用してコードをコンパイルし(tsc
またはnpx tsc
を実行)、eslintをpre-commitフックで実行します。