テストランナーとしてJestを使用
概要
Jestは、ユニットテストを簡単に記述するために使用されるJavaScriptテストフレームワークであり、Nightwatch.jsは、すべての主要ブラウザでWebアプリケーションおよびWebサイトに対して自動エンドツーエンドテストを実行するための統合テストフレームワークです。
そのため、JestとNightwatchの機能を同時に使用するために、Nightwatchは新しい依存関係jest-environment-nightwatch
を導入しました。
API
global.browser
Nightwatch browser APIオブジェクト。autoStartSessionがオフの場合、使用できません。
global.jestNightwatch
Jest環境は、Nightwatch programmatic APIを使用してNightwatchインスタンスを作成し、browser APIをエクスポートします。
利用可能なプロパティ/メソッド
.element(<locator>)
- Nightwatch .element() APIを使用してページ内の要素を特定します。.updateCapabilities({ capabilities })
- autoStartSessionがオフの場合、実行時にケーパビリティを更新するために使用されます。.launchBrowser()
- autoStartSessionがオフの場合、セッションを開始してブラウザを開くために使用されます。.settings
- Nightwatch設定オブジェクト。.nightwatch_client
- Nightwatch (内部) インスタンス。
設定例
ステップ 0: Nightwatchのインストール
ガイドに従うか、ビデオを見て、Nightwatchを最初からインストールします。
ステップ 1: Jestのインストール
npm i jest --save-dev
また、Jestテストを実行するために、package.jsonファイルに次のスクリプトが含まれていることを確認してください。
{
"scripts": {
"test": "jest"
}
}
ステップ 2: jest-environment-nightwatchパッケージのインストールと構成
JestでNightwatchを使用するには、jest-environment-nightwatch
をインストールする必要があります。Jestおよびテストに必要なその他の依存関係をインストールします。
npm i jest-environment-nightwatch --save-dev
Nightwatch Jest環境にはデフォルト設定が付属しています。ただし、必要に応じて、Jestの設定を調整できます。
{
testEnvironment: 'jest-environment-nightwatch',
testEnvironmentOptions: {
// Nightwatch related options
headless: true,
browserName: 'chrome',
baseUrl: '',
verbose: false,
output: true,
env: null,
parallel: false,
devtools: false,
debug: false,
autoStartSession: true,
persistGlobals: true,
configFile: './nightwatch.conf.js',
globals: {},
webdriver: {},
timeout: null,
enableGlobalApis: false,
alwaysAsync: true,
desiredCapabilities: {},
async setup(browser) {},
async teardown(browser) {},
},
testMatch: [
"**/tests/*.[jt]s?(x)"
],
}
testMatch
にテストフォルダーディレクトリを設定できます。
Nightwatchオプション
Nightwatchのデフォルトの動作は、次の設定オプションのいずれかを指定することで変更できます。以下は、利用可能なオプションとそのデフォルト値のリストです。
名前 | タイプ | 説明 | デフォルト |
---|---|---|---|
headless |
ブール値 | Nightwatchをヘッドレスモードで実行します (Firefox、Chrome、Edgeで利用可能) | true |
browserName |
文字列 | 使用するブラウザの名前。利用可能なオプションは、chrome、firefox、edge、safariです | なし |
baseUrl |
文字列 | .navigateTo()を相対URLで使用する場合に使用するベースURL。コンポーネントテストを行う場合は、Vite開発サーバーを実行しているURLに設定する必要があります。 | http://localhost:3000 |
verbose |
ブール値 | Nightwatchの完全なhttpログを有効にします。 | false |
output |
ブール値 | Nightwatchの出力を表示します | true |
env |
文字列 | 使用するNightwatchテスト環境 (nightwatch.conf.jsから)。Nightwatchドキュメントでテスト環境の詳細を確認してください。 | なし |
parallel |
ブール値 | テストを並列で実行する場合は、これをtrueに設定します | false |
devtools |
ブール値 | Chromeのみ: Chromeデベロッパーツールを自動的に開きます | false |
debug |
ブール値 | コンポーネントテストのみ: コンポーネントのレンダリング後にテストの実行を一時停止します | false |
autoStartSession |
ブール値 | Nightwatchセッションを自動的に開始します。これを無効にする場合は、テストでjestNightwatch.launchBrowser()を呼び出す必要があります。 | true |
persistGlobals |
ブール値 | 実行間で同じグローバルオブジェクトを保持するか、テストごとに(深い)コピーを保持します。Nightwatchドキュメントでテストグローバルの詳細を確認してください。 | true |
configFile |
文字列 | 使用するNightwatch設定ファイル。設定ファイルはデフォルトで自動生成されますが、これにより変更できます。NightwatchドキュメントでNightwatch設定の詳細を確認してください。 | ./nightwatch.conf.js |
globals |
オブジェクト | Nightwatchで使用するグローバルのリスト。グローバルはbrowser.globalsで利用可能です。NightwatchドキュメントでNightwatchテストグローバルの詳細を確認してください。 | なし |
webdriver |
オブジェクト | Nightwatch WebDriverサービスを構成するためのWebDriver関連設定のリスト。NightwatchドキュメントでNightwatch WebDriver設定の詳細を確認してください。NightwatchドキュメントでNightwatch WebDriver設定を確認してください。 | なし |
timeout |
数値 | アサーションが失敗する前にアサーションの再試行を行うためのグローバルタイムアウトを設定します。 | 5000 |
enableGlobalApis |
ブール値 | NightwatchグローバルAPI (element()、expect()) は、デフォルトで無効になっています。 | false |
desiredCapabilities |
オブジェクト | 現在のセッションのカスタムSeleniumケーパビリティを定義します。Nightwatchドキュメントで、使用されている特定のブラウザドライバーの詳細を確認してください。 | なし |
setup() |
関数 | Nightwatchの起動後に実行される追加のセットアップフック。 | なし |
teardown() |
関数 | Nightwatch APIオブジェクトで実行される追加のティアダウンフック。 | なし |
ステップ 3: 例のテストの実行
以下の例のテストを考えてみましょう
describe('duckduckgo example', function() {
it('Search Nightwatch.js and check results', function(browser) {
browser
.navigateTo('https://duckduckgo.com')
.waitForElementVisible('#search_form_input_homepage')
.sendKeys('#search_form_input_homepage', ['Nightwatch.js'])
.click('#search_button_homepage')
.assert.visible('.results--main')
.assert.textContains('.results--main', 'Nightwatch.js');
});
});
注意: Jestはフックの命名規則が異なるため、テストがこのガイドに従っていることを確認する必要があります。*
ステップ 4: Jestテストランナーの結果の表示
