概要

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 ワークフローも含まれています。

nightwatch-boilerplate-esm on Github

テストタグ

タグに基づいて実行するテストを選択的にターゲットにすることができます。つまり、テストは複数のタグに属している可能性があります。たとえば、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