'exports' テスト構文の使用
概要
Nightwatch のテスト記述のためのデフォルトインターフェースはexports
構文であり、エンドツーエンドテストを非常に簡単に記述できます。
この形式は少し理解しやすく、扱いやすいですが、BDD のdescribe()
インターフェースよりも制限があります。describe()
はテスト形式として広く使用されており、Mocha などのツールとの互換性があるため、BDD のdescribe()
の使用をお勧めしますが、exports
も引き続き正常に動作します。
例
次の基本的なテストスイートの例では、検索エンジン Ecosia.org を開き、nightwatch
という用語を検索し、最初の結果がNightwatch.js
のウェブサイトであることを検証します。
tests/sampleTest.js
module.exports = {
'Demo test ecosia.org' : function(browser) {
browser
.url('https://www.ecosia.org/')
.waitForElementVisible('body')
.assert.titleContains('Ecosia')
.assert.visible('input[type=search]')
.setValue('input[type=search]', 'nightwatch')
.assert.visible('button[type=submit]')
.click('button[type=submit]')
.assert.containsText('.mainline-results', 'Nightwatch.js')
.end();
}
};
複数のステップを含むテストは、次のように記述することもできます。
tests/sampleTest.js
module.exports = {
'step one: navigate to ecosia.org': function(browser) {
browser
.url('https://www.ecosia.org')
.waitForElementVisible('body')
.assert.titleContains('Ecosia')
.assert.visible('input[type=search]')
.setValue('input[type=search]', 'nightwatch')
.assert.visible('button[type=submit]');
},
'step two: click submit' : function (browser) {
browser
.click('button[type=submit]')
.assert.containsText('.mainline-results', 'Nightwatch.js')
.end();
}
};
ES モジュール (ESM) の使用
プロジェクトでES モジュール を使用している場合、テストは次の形式で記述する必要があります。
tests/sampleTest.js
exports default {
'Demo test ecosia.org' : function(browser) {
browser
.url('https://www.ecosia.org/')
.waitForElementVisible('body')
.assert.titleContains('Ecosia')
.assert.visible('input[type=search]')
.setValue('input[type=search]', 'nightwatch')
.assert.visible('button[type=submit]')
.click('button[type=submit]')
.assert.containsText('.mainline-results', 'Nightwatch.js')
.end();
}
};
nightwatch.conf.cjs
設定ファイルも使用する必要があります。
いくつかの例を含む完全なGithub ESM テンプレートリポジトリ を作成しており、定期的に更新しています。開始するための Github Actions ワークフローも含まれています。
テストタグ
タグに基づいて実行するテストを選択的にターゲットにすることができます。つまり、テストは複数のタグに属している可能性があります。たとえば、login
スイートとsanity
スイートの両方に属するログインテストがあるかもしれません。
タグ付けは、テストモジュールに@tags
プロパティを追加することで実現できます。
tests/sampleTest.js
module.exports = {
'@tags': ['login', 'sanity'],
'demo login test': function (browser) {
// test code
}
};
実行するタグを選択するには、--tag
コマンドラインフラグを使用します。
nightwatch --tag login
複数のタグを指定するには、次のようにします。
nightwatch --tag login --tag something_else
特定のタグを持つテストの実行をスキップするには、`--skiptags`フラグを使用します。
nightwatch --skiptags login
複数のタグをスキップするには、スキップする各タグをコンマで区切って追加します。
nightwatch --skiptags login,something_else